diff options
934 files changed, 8122 insertions, 11665 deletions
diff --git a/.gitignore b/.gitignore index a36fd98b79f..93bacf9b07e 100644 --- a/.gitignore +++ b/.gitignore @@ -89,8 +89,15 @@ nbproject # nodejs /build/lib/ +/build/jsdocs/ /npm-debug.log +# puphpet +puphpet + +# vagrant +.vagrant +Vagrantfile # Tests - auto-generated files /data-autotest diff --git a/.scrutinizer.yml b/.scrutinizer.yml index 2a555ad28f6..f66c1b86eac 100644 --- a/.scrutinizer.yml +++ b/.scrutinizer.yml @@ -2,6 +2,7 @@ filter: excluded_paths: - '3rdparty/*' - 'apps/*/3rdparty/*' + - 'apps/*/vendor/*' - 'l10n/*' - 'core/l10n/*' - 'apps/*/l10n/*' @@ -13,7 +14,6 @@ filter: - 'core/js/jquery-tipsy.js' - 'core/js/jquery-ui-1.10.0.custom.js' - 'core/js/placeholders.js' - - 'core/js/jquery.multiselect.js' imports: diff --git a/3rdparty b/3rdparty -Subproject 912a45c3458685a1105fba38a39a3a71c7348ed +Subproject dd0e7b6dcec142c790a6325b74a7c4fd3c6d723 diff --git a/apps/files/ajax/upload.php b/apps/files/ajax/upload.php index b960e02ced7..eb99d0644f7 100644 --- a/apps/files/ajax/upload.php +++ b/apps/files/ajax/upload.php @@ -1,5 +1,7 @@ <?php +\OC::$server->getSession()->close(); + // Firefox and Konqueror tries to download application/json for me. --Arthur OCP\JSON::setContentTypeHeader('text/plain'); @@ -7,7 +9,7 @@ OCP\JSON::setContentTypeHeader('text/plain'); // If not, check the login. // If no token is sent along, rely on login only -$allowedPermissions = OCP\PERMISSION_ALL; +$allowedPermissions = \OCP\Constants::PERMISSION_ALL; $errorCode = null; $l = \OC::$server->getL10N('files'); @@ -27,7 +29,7 @@ if (empty($_POST['dirToken'])) { \OC_User::setIncognitoMode(true); // return only read permissions for public upload - $allowedPermissions = OCP\PERMISSION_READ; + $allowedPermissions = \OCP\Constants::PERMISSION_READ; $publicDirectory = !empty($_POST['subdir']) ? $_POST['subdir'] : '/'; $linkItem = OCP\Share::getShareByToken($_POST['dirToken']); @@ -36,7 +38,7 @@ if (empty($_POST['dirToken'])) { die(); } - if (!($linkItem['permissions'] & OCP\PERMISSION_CREATE)) { + if (!($linkItem['permissions'] & \OCP\Constants::PERMISSION_CREATE)) { OCP\JSON::checkLoggedIn(); } else { // resolve reshares @@ -64,13 +66,7 @@ if (empty($_POST['dirToken'])) { } } - OCP\JSON::callCheck(); -if (!\OCP\App::isEnabled('files_encryption')) { - // encryption app need to create keys later, so can't close too early - \OC::$server->getSession()->close(); -} - // get array with current storage stats (e.g. max file size) $storageStats = \OCA\Files\Helper::buildFileStorageStatistics($dir); diff --git a/apps/files/css/files.css b/apps/files/css/files.css index fddfd02caa6..60afcf9b579 100644 --- a/apps/files/css/files.css +++ b/apps/files/css/files.css @@ -6,7 +6,11 @@ .actions { padding:5px; height:32px; display: inline-block; float: left; } .actions input, .actions button, .actions .button { margin:0; float:left; } .actions .button a { color: #555; } -.actions .button a:hover, .actions .button a:active { color: #333; } +.actions .button a:hover, +.actions .button a:focus, +.actions .button a:active { + color: #333; +} .actions.hidden { display: none; } #new { @@ -99,7 +103,9 @@ } #filestable tbody tr { background-color:#fff; height:40px; } -#filestable tbody tr:hover, tbody tr:active { +#filestable tbody tr:hover, +#filestable tbody tr:focus, +#filestable tbody tr:active { background-color: rgb(240,240,240); } #filestable tbody tr.selected { @@ -123,7 +129,8 @@ span.extension { transition: opacity 300ms; vertical-align: top; } -tr:hover span.extension { +tr:hover span.extension, +tr:focus span.extension { -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; filter: alpha(opacity=100); opacity: 1; @@ -166,7 +173,8 @@ table th .sort-indicator { .sort-indicator.hidden { visibility: hidden; } -table th:hover .sort-indicator.hidden { +table th:hover .sort-indicator.hidden, +table th:focus .sort-indicator.hidden { visibility: visible; } @@ -252,8 +260,10 @@ table td.filename .nametext, .uploadtext, .modified, .column-last>span:first-chi width: 90%; } /* ellipsize long modified dates to make room for showing delete button */ -#fileList tr:hover .modified, #fileList tr:hover .column-last>span:first-child, -#fileList tr:focus .modified, #fileList tr:focus .column-last>span:first-child { +#fileList tr:hover .modified, +#fileList tr:focus .modified, +#fileList tr:hover .column-last>span:first-child, +#fileList tr:focus .column-last>span:first-child { width: 75%; } @@ -280,7 +290,8 @@ table td.filename .nametext .innernametext { max-width: 760px; } - table tr:hover td.filename .nametext .innernametext { + table tr:hover td.filename .nametext .innernametext, + table tr:focus td.filename .nametext .innernametext { max-width: 480px; } } @@ -290,7 +301,8 @@ table td.filename .nametext .innernametext { max-width: 600px; } - table tr:hover td.filename .nametext .innernametext { + table tr:hover td.filename .nametext .innernametext, + table tr:focus td.filename .nametext .innernametext { max-width: 320px; } } @@ -300,7 +312,8 @@ table td.filename .nametext .innernametext { max-width: 400px; } - table tr:hover td.filename .nametext .innernametext { + table tr:hover td.filename .nametext .innernametext, + table tr:focus td.filename .nametext .innernametext { max-width: 120px; } } @@ -310,7 +323,8 @@ table td.filename .nametext .innernametext { max-width: 320px; } - table tr:hover td.filename .nametext .innernametext { + table tr:hover td.filename .nametext .innernametext, + table tr:focus td.filename .nametext .innernametext { max-width: 40px; } } @@ -344,11 +358,13 @@ table td.filename .uploadtext { } /* Show checkbox when hovering, checked, or selected */ #fileList tr:hover td.filename>input[type="checkbox"]:first-child, +#fileList tr:focus td.filename>input[type="checkbox"]:first-child, #fileList tr td.filename>input[type="checkbox"]:checked:first-child, #fileList tr.selected td.filename>input[type="checkbox"]:first-child { opacity: 1; } .lte9 #fileList tr:hover td.filename>input[type="checkbox"]:first-child, +.lte9 #fileList tr:focus td.filename>input[type="checkbox"]:first-child, .lte9 #fileList tr td.filename>input[type="checkbox"][checked=checked]:first-child, .lte9 #fileList tr.selected td.filename>input[type="checkbox"]:first-child { -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; @@ -469,13 +485,15 @@ a.action>img { position: relative; top: -21px; } -#fileList tr:hover a.action, #fileList a.action.permanent { +#fileList tr:hover a.action, #fileList a.action.permanent +#fileList tr:focus a.action, #fileList a.action.permanent { -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; filter: alpha(opacity=50); opacity: .5; display:inline; } -#fileList tr:hover a.action:hover { +#fileList tr:hover a.action:hover, +#fileList tr:focus a.action:focus { -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; filter: alpha(opacity=100); opacity: 1; @@ -489,7 +507,10 @@ a.action>img { height: 70px; } -.summary:hover, .summary, table tr.summary td { +.summary:hover, +.summary:focus, +.summary, +table tr.summary td { background-color: transparent; } diff --git a/apps/files/js/app.js b/apps/files/js/app.js index 89098e3a8a3..ee5330485e7 100644 --- a/apps/files/js/app.js +++ b/apps/files/js/app.js @@ -15,12 +15,34 @@ (function() { if (!OCA.Files) { + /** + * Namespace for the files app + * @namespace OCA.Files + */ OCA.Files = {}; } - var App = { + /** + * @namespace OCA.Files.App + */ + OCA.Files.App = { + /** + * Navigation control + * + * @member {OCA.Files.Navigation} + */ navigation: null, + /** + * File list for the "All files" section. + * + * @member {OCA.Files.FileList} + */ + fileList: null, + + /** + * Initializes the files app + */ initialize: function() { this.navigation = new OCA.Files.Navigation($('#app-navigation')); @@ -191,7 +213,6 @@ OC.Util.History.pushState(params); } }; - OCA.Files.App = App; })(); $(document).ready(function() { diff --git a/apps/files/js/breadcrumb.js b/apps/files/js/breadcrumb.js index 8df9b7ee6fe..af4e48c8f8c 100644 --- a/apps/files/js/breadcrumb.js +++ b/apps/files/js/breadcrumb.js @@ -19,10 +19,17 @@ * */ -/* global OC */ (function() { /** - * Creates an breadcrumb element in the given container + * @class BreadCrumb + * @memberof OCA.Files + * @classdesc Breadcrumbs that represent the current path. + * + * @param {Object} [options] options + * @param {Function} [options.onClick] click event handler + * @param {Function} [options.onDrop] drop event handler + * @param {Function} [options.getCrumbUrl] callback that returns + * the URL of a given breadcrumb */ var BreadCrumb = function(options){ this.$el = $('<div class="breadcrumb"></div>'); @@ -37,12 +44,17 @@ this.getCrumbUrl = options.getCrumbUrl; } }; + /** + * @memberof OCA.Files + */ BreadCrumb.prototype = { $el: null, dir: null, /** * Total width of all breadcrumbs + * @type int + * @private */ totalWidth: 0, breadcrumbs: [], @@ -64,8 +76,9 @@ /** * Returns the full URL to the given directory - * @param part crumb data as map - * @param index crumb index + * + * @param {Object.<String, String>} part crumb data as map + * @param {int} index crumb index * @return full URL */ getCrumbUrl: function(part, index) { @@ -121,8 +134,9 @@ /** * Makes a breadcrumb structure based on the given path - * @param dir path to split into a breadcrumb structure - * @return array of map {dir: path, name: displayName} + * + * @param {String} dir path to split into a breadcrumb structure + * @return {Object.<String, String>} map of {dir: path, name: displayName} */ _makeCrumbs: function(dir) { var crumbs = []; @@ -166,6 +180,8 @@ /** * Show/hide breadcrumbs to fit the given width + * + * @param {int} availableWidth available width */ setMaxWidth: function (availableWidth) { if (this.availableWidth !== availableWidth) { diff --git a/apps/files/js/file-upload.js b/apps/files/js/file-upload.js index 460c2435642..ab450dc5cac 100644 --- a/apps/files/js/file-upload.js +++ b/apps/files/js/file-upload.js @@ -49,7 +49,7 @@ function supportAjaxUploadWithProgress() { /** * keeps track of uploads in progress and implements callbacks for the conflicts dialog - * @type {OC.Upload} + * @namespace */ OC.Upload = { _uploads: [], diff --git a/apps/files/js/fileactions.js b/apps/files/js/fileactions.js index 8ae0d8f1b2e..5bf1618b0b8 100644 --- a/apps/files/js/fileactions.js +++ b/apps/files/js/fileactions.js @@ -13,11 +13,14 @@ /** * Construct a new FileActions instance + * @constructs FileActions + * @memberof OCA.Files */ var FileActions = function() { this.initialize(); - } + }; FileActions.prototype = { + /** @lends FileActions.prototype */ actions: {}, defaults: {}, icons: {}, @@ -31,9 +34,14 @@ /** * List of handlers to be notified whenever a register() or * setDefault() was called. + * + * @member {Function[]} */ _updateListeners: {}, + /** + * @private + */ initialize: function() { this.clear(); // abusing jquery for events until we get a real event lib @@ -45,7 +53,7 @@ * Adds an event handler * * @param {String} eventName event name - * @param Function callback + * @param {Function} callback */ on: function(eventName, callback) { this.$el.on(eventName, callback); @@ -75,7 +83,7 @@ * Merges the actions from the given fileActions into * this instance. * - * @param fileActions instance of OCA.Files.FileActions + * @param {OCA.Files.FileActions} fileActions instance of OCA.Files.FileActions */ merge: function(fileActions) { var self = this; @@ -113,8 +121,9 @@ * to the name given in action.name * @param {String} action.mime mime type * @param {int} action.permissions permissions - * @param {(Function|String)} action.icon icon - * @param {Function} action.actionHandler function that performs the action + * @param {(Function|String)} action.icon icon path to the icon or function + * that returns it + * @param {OCA.Files.FileActions~actionHandler} action.actionHandler action handler function */ registerAction: function (action) { var mime = action.mime; @@ -130,6 +139,9 @@ this.icons[name] = action.icon; this._notifyUpdateListeners('registerAction', {action: action}); }, + /** + * Clears all registered file actions. + */ clear: function() { this.actions = {}; this.defaults = {}; @@ -137,6 +149,12 @@ this.currentFile = null; this._updateListeners = []; }, + /** + * Sets the default action for a given mime type. + * + * @param {String} mime mime type + * @param {String} name action name + */ setDefault: function (mime, name) { this.defaults[mime] = name; this._notifyUpdateListeners('setDefault', {defaultAction: {mime: mime, name: name}}); @@ -261,7 +279,7 @@ } var html = '<a href="#" class="action action-' + name.toLowerCase() + '" data-action="' + name + '">'; if (img) { - html += '<img class ="svg" src="' + img + '" />'; + html += '<img class ="svg" alt="" src="' + img + '" />'; } html += '<span> ' + actionText + '</span></a>'; @@ -370,6 +388,18 @@ OCA.Files.FileActions = FileActions; + /** + * Action handler function for file actions + * + * @callback OCA.Files.FileActions~actionHandler + * @param {String} fileName name of the clicked file + * @param context context + * @param {String} context.dir directory of the file + * @param context.$file jQuery element of the file + * @param {OCA.Files.FileList} context.fileList the FileList instance on which the action occurred + * @param {OCA.Files.FileActions} context.fileActions the FileActions instance on which the action occurred + */ + // global file actions to be used by all lists OCA.Files.fileActions = new OCA.Files.FileActions(); OCA.Files.legacyFileActions = new OCA.Files.FileActions(); @@ -380,6 +410,7 @@ // their actions on. Since legacy apps are very likely to break with other // FileList views than the main one ("All files"), actions registered // through window.FileActions will be limited to the main file list. + // @deprecated use OCA.Files.FileActions instead window.FileActions = OCA.Files.legacyFileActions; window.FileActions.register = function (mime, name, permissions, icon, action, displayName) { console.warn('FileActions.register() is deprecated, please use OCA.Files.fileActions.register() instead', arguments); diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index cf1d9780d99..bec0155e90e 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -10,13 +10,26 @@ (function() { /** + * @class OCA.Files.FileList + * @classdesc + * * The FileList class manages a file list view. * A file list view consists of a controls bar and * a file list table. + * + * @param $el container element with existing markup for the #controls + * and a table + * @param [options] map of options, see other parameters + * @param [options.scrollContainer] scrollable container, defaults to $(window) + * @param [options.dragOptions] drag options, disabled by default + * @param [options.folderDropOptions] folder drop options, disabled by default */ var FileList = function($el, options) { this.initialize($el, options); }; + /** + * @memberof OCA.Files + */ FileList.prototype = { SORT_INDICATOR_ASC_CLASS: 'icon-triangle-n', SORT_INDICATOR_DESC_CLASS: 'icon-triangle-s', @@ -41,15 +54,27 @@ */ $fileList: null, + /** + * @type OCA.Files.BreadCrumb + */ breadcrumb: null, /** - * Instance of FileSummary + * @type OCA.Files.FileSummary */ fileSummary: null, + + /** + * Whether the file list was initialized already. + * @type boolean + */ initialized: false, - // number of files per page, calculated dynamically + /** + * Number of files per page + * + * @return {int} page size + */ pageSize: function() { return Math.ceil(this.$container.height() / 50); }, @@ -57,37 +82,44 @@ /** * Array of files in the current folder. * The entries are of file data. + * + * @type Array.<Object> */ files: [], /** * File actions handler, defaults to OCA.Files.FileActions + * @type OCA.Files.FileActions */ fileActions: null, /** * Map of file id to file data + * @type Object.<int, Object> */ _selectedFiles: {}, /** * Summary of selected files. - * Instance of FileSummary. + * @type OCA.Files.FileSummary */ _selectionSummary: null, /** * Sort attribute + * @type String */ _sort: 'name', /** * Sort direction: 'asc' or 'desc' + * @type String */ _sortDirection: 'asc', /** * Sort comparator function for the current sort + * @type Function */ _sortComparator: null, @@ -100,6 +132,7 @@ /** * Current directory + * @type String */ _currentDirectory: null, @@ -116,6 +149,7 @@ * @param options.dragOptions drag options, disabled by default * @param options.folderDropOptions folder drop options, disabled by default * @param options.scrollTo name of file to scroll to after the first load + * @private */ initialize: function($el, options) { var self = this; @@ -192,6 +226,11 @@ this.fileActions.off('setDefault', this._onFileActionsUpdated); }, + /** + * Initializes the file actions, set up listeners. + * + * @param {OCA.Files.FileActions} fileActions file actions + */ _initFileActions: function(fileActions) { this.fileActions = fileActions; if (!this.fileActions) { @@ -588,8 +627,8 @@ }, /** * Creates a new table row element using the given file data. - * @param fileData map of file attributes - * @param options map of attribute "loading" whether the entry is currently loading + * @param {OCA.Files.FileInfo} fileData file info attributes + * @param options map of attributes * @return new tr element (not appended to the table) */ _createRow: function(fileData, options) { @@ -728,12 +767,14 @@ * Adds an entry to the files array and also into the DOM * in a sorted manner. * - * @param fileData map of file attributes - * @param options map of attributes: - * @param options.updateSummary true to update the summary after adding (default), false otherwise - * @param options.silent true to prevent firing events like "fileActionsReady" - * @param options.animate true to animate preview loading (defaults to true here) - * @param options.scrollTo true to automatically scroll to the file's location + * @param {OCA.Files.FileInfo} fileData map of file attributes + * @param {Object} [options] map of attributes + * @param {boolean} [options.updateSummary] true to update the summary + * after adding (default), false otherwise. Defaults to true. + * @param {boolean} [options.silent] true to prevent firing events like "fileActionsReady", + * defaults to false. + * @param {boolean} [options.animate] true to animate the thumbnail image after load + * defaults to true. * @return new tr element (not appended to the table) */ add: function(fileData, options) { @@ -799,11 +840,13 @@ * Creates a new row element based on the given attributes * and returns it. * - * @param fileData map of file attributes - * @param options map of attributes: - * - "index" optional index at which to insert the element - * - "updateSummary" true to update the summary after adding (default), false otherwise - * - "animate" true to animate the preview rendering + * @param {OCA.Files.FileInfo} fileData map of file attributes + * @param {Object} [options] map of attributes + * @param {int} [options.index] index at which to insert the element + * @param {boolean} [options.updateSummary] true to update the summary + * after adding (default), false otherwise. Defaults to true. + * @param {boolean} [options.animate] true to animate the thumbnail image after load + * defaults to true. * @return new tr element (not appended to the table) */ _renderRow: function(fileData, options) { @@ -870,6 +913,7 @@ }, /** * Returns the current directory + * @method getCurrentDirectory * @return current directory */ getCurrentDirectory: function(){ @@ -1051,7 +1095,10 @@ /** * Generates a preview URL based on the URL space. - * @param urlSpec map with {x: width, y: height, file: file path} + * @param urlSpec attributes for the URL + * @param {int} urlSpec.x width + * @param {int} urlSpec.y height + * @param {String} urlSpec.file path to the file * @return preview URL */ generatePreviewUrl: function(urlSpec) { @@ -1158,8 +1205,9 @@ /** * Removes a file entry from the list * @param name name of the file to remove - * @param options optional options as map: - * "updateSummary": true to update the summary (default), false otherwise + * @param {Object} [options] map of attributes + * @param {boolean} [options.updateSummary] true to update the summary + * after removing, false otherwise. Defaults to true. * @return deleted element */ remove: function(name, options){ @@ -1201,6 +1249,8 @@ * Finds the index of the row before which the given * fileData should be inserted, considering the current * sorting + * + * @param {OCA.Files.FileInfo} fileData file info */ _findInsertionIndex: function(fileData) { var index = 0; @@ -1515,7 +1565,7 @@ /** * Shows the loading mask. * - * @see #hideMask + * @see OCA.Files.FileList#hideMask */ showMask: function() { // in case one was shown before @@ -1536,7 +1586,7 @@ }, /** * Hide the loading mask. - * @see #showMask + * @see OCA.Files.FileList#showMask */ hideMask: function() { this.$el.find('.mask').remove(); @@ -1961,15 +2011,17 @@ /** * Sort comparators. + * @namespace OCA.Files.FileList.Comparators + * @private */ FileList.Comparators = { /** * Compares two file infos by name, making directories appear * first. * - * @param fileInfo1 file info - * @param fileInfo2 file info - * @return -1 if the first file must appear before the second one, + * @param {OCA.Files.FileInfo} fileInfo1 file info + * @param {OCA.Files.FileInfo} fileInfo2 file info + * @return {int} -1 if the first file must appear before the second one, * 0 if they are identify, 1 otherwise. */ name: function(fileInfo1, fileInfo2) { @@ -1984,9 +2036,9 @@ /** * Compares two file infos by size. * - * @param fileInfo1 file info - * @param fileInfo2 file info - * @return -1 if the first file must appear before the second one, + * @param {OCA.Files.FileInfo} fileInfo1 file info + * @param {OCA.Files.FileInfo} fileInfo2 file info + * @return {int} -1 if the first file must appear before the second one, * 0 if they are identify, 1 otherwise. */ size: function(fileInfo1, fileInfo2) { @@ -1995,9 +2047,9 @@ /** * Compares two file infos by timestamp. * - * @param fileInfo1 file info - * @param fileInfo2 file info - * @return -1 if the first file must appear before the second one, + * @param {OCA.Files.FileInfo} fileInfo1 file info + * @param {OCA.Files.FileInfo} fileInfo2 file info + * @return {int} -1 if the first file must appear before the second one, * 0 if they are identify, 1 otherwise. */ mtime: function(fileInfo1, fileInfo2) { @@ -2005,6 +2057,27 @@ } }; + /** + * File info attributes. + * + * @todo make this a real class in the future + * @typedef {Object} OCA.Files.FileInfo + * + * @property {int} id file id + * @property {String} name file name + * @property {String} [path] file path, defaults to the list's current path + * @property {String} mimetype mime type + * @property {String} type "file" for files or "dir" for directories + * @property {int} permissions file permissions + * @property {int} mtime modification time in milliseconds + * @property {boolean} [isShareMountPoint] whether the file is a share mount + * point + * @property {boolean} [isPreviewAvailable] whether a preview is available + * for the given file type + * @property {String} [icon] path to the mime type icon + * @property {String} etag etag of the file + */ + OCA.Files.FileList = FileList; })(); diff --git a/apps/files/js/files.js b/apps/files/js/files.js index df268fea6de..b11ef03eab2 100644 --- a/apps/files/js/files.js +++ b/apps/files/js/files.js @@ -195,7 +195,10 @@ /** * Generates a preview URL based on the URL space. - * @param urlSpec map with {x: width, y: height, file: file path} + * @param urlSpec attributes for the URL + * @param {int} urlSpec.x width + * @param {int} urlSpec.y height + * @param {String} urlSpec.file path to the file * @return preview URL * @deprecated used OCA.Files.FileList.generatePreviewUrl instead */ diff --git a/apps/files/js/filesummary.js b/apps/files/js/filesummary.js index ca70259335c..f83eb54678b 100644 --- a/apps/files/js/filesummary.js +++ b/apps/files/js/filesummary.js @@ -19,14 +19,15 @@ * */ -/* global OC, n, t */ - (function() { /** * The FileSummary class encapsulates the file summary values and * the logic to render it in the given container + * + * @constructs FileSummary + * @memberof OCA.Files + * * @param $tr table row element - * $param summary optional initial summary value */ var FileSummary = function($tr) { this.$el = $tr; diff --git a/apps/files/js/navigation.js b/apps/files/js/navigation.js index b959e016e8c..be385f21f50 100644 --- a/apps/files/js/navigation.js +++ b/apps/files/js/navigation.js @@ -13,10 +13,19 @@ (function() { + /** + * @class OCA.Files.Navigation + * @classdesc Navigation control for the files app sidebar. + * + * @param $el element containing the navigation + */ var Navigation = function($el) { this.initialize($el); }; + /** + * @memberof OCA.Files + */ Navigation.prototype = { /** @@ -31,6 +40,8 @@ /** * Initializes the navigation from the given container + * + * @private * @param $el element containing the navigation */ initialize: function($el) { diff --git a/apps/files/js/upload.js b/apps/files/js/upload.js index 617cf4b1c1d..518608615e0 100644 --- a/apps/files/js/upload.js +++ b/apps/files/js/upload.js @@ -8,7 +8,6 @@ * */ -/* global OC */ function Upload(fileSelector) { if ($.support.xhrFileUpload) { return new XHRUpload(fileSelector.target.files); diff --git a/apps/files/l10n/bg_BG.js b/apps/files/l10n/bg_BG.js index 24e148c9c63..1776e769251 100644 --- a/apps/files/l10n/bg_BG.js +++ b/apps/files/l10n/bg_BG.js @@ -92,6 +92,6 @@ OC.L10N.register( "Upload too large" : "Прекалено голям файл за качване.", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Файловете, които се опитваш да качиш са по-големи от позволеното на този сървър.", "Files are being scanned, please wait." : "Файловете се сканирват, изчакайте.", - "Currently scanning" : "В момента се сканирва." + "Currently scanning" : "В момента се търси" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/bg_BG.json b/apps/files/l10n/bg_BG.json index 451cc21ae7b..cd29da596db 100644 --- a/apps/files/l10n/bg_BG.json +++ b/apps/files/l10n/bg_BG.json @@ -90,6 +90,6 @@ "Upload too large" : "Прекалено голям файл за качване.", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Файловете, които се опитваш да качиш са по-големи от позволеното на този сървър.", "Files are being scanned, please wait." : "Файловете се сканирват, изчакайте.", - "Currently scanning" : "В момента се сканирва." + "Currently scanning" : "В момента се търси" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/ca.js b/apps/files/l10n/ca.js index 8a4b5c42d24..0885794ea43 100644 --- a/apps/files/l10n/ca.js +++ b/apps/files/l10n/ca.js @@ -6,6 +6,7 @@ OC.L10N.register( "Unknown error" : "Error desconegut", "Could not move %s - File with this name already exists" : "No s'ha pogut moure %s - Ja hi ha un fitxer amb aquest nom", "Could not move %s" : " No s'ha pogut moure %s", + "Permission denied" : "Permís denegat", "File name cannot be empty." : "El nom del fitxer no pot ser buit.", "\"%s\" is an invalid file name." : "\"%s\" no es un fitxer vàlid.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." : "El nóm no és vàlid, '\\', '/', '<', '>', ':', '\"', '|', '?' i '*' no estan permesos.", diff --git a/apps/files/l10n/ca.json b/apps/files/l10n/ca.json index 91e96f5742d..2b767a9aaed 100644 --- a/apps/files/l10n/ca.json +++ b/apps/files/l10n/ca.json @@ -4,6 +4,7 @@ "Unknown error" : "Error desconegut", "Could not move %s - File with this name already exists" : "No s'ha pogut moure %s - Ja hi ha un fitxer amb aquest nom", "Could not move %s" : " No s'ha pogut moure %s", + "Permission denied" : "Permís denegat", "File name cannot be empty." : "El nom del fitxer no pot ser buit.", "\"%s\" is an invalid file name." : "\"%s\" no es un fitxer vàlid.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." : "El nóm no és vàlid, '\\', '/', '<', '>', ':', '\"', '|', '?' i '*' no estan permesos.", diff --git a/apps/files/l10n/fr.js b/apps/files/l10n/fr.js index 967908eaca0..719d3355bca 100644 --- a/apps/files/l10n/fr.js +++ b/apps/files/l10n/fr.js @@ -23,7 +23,7 @@ OC.L10N.register( "Invalid Token" : "Jeton non valide", "No file was uploaded. Unknown error" : "Aucun fichier n'a été envoyé. Erreur inconnue", "There is no error, the file uploaded with success" : "Aucune erreur, le fichier a été envoyé avec succès.", - "The uploaded file exceeds the upload_max_filesize directive in php.ini: " : "Le fichier envoyé dépasse l'instruction upload_max_filesize située dans le fichier php.ini:", + "The uploaded file exceeds the upload_max_filesize directive in php.ini: " : "Le fichier envoyé dépasse l'instruction upload_max_filesize située dans le fichier php.ini :", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Le fichier envoyé dépasse l'instruction MAX_FILE_SIZE qui est spécifiée dans le formulaire HTML.", "The uploaded file was only partially uploaded" : "Le fichier n'a été que partiellement envoyé.", "No file was uploaded" : "Pas de fichier envoyé.", diff --git a/apps/files/l10n/fr.json b/apps/files/l10n/fr.json index 19c9154dc79..8501a8551b7 100644 --- a/apps/files/l10n/fr.json +++ b/apps/files/l10n/fr.json @@ -21,7 +21,7 @@ "Invalid Token" : "Jeton non valide", "No file was uploaded. Unknown error" : "Aucun fichier n'a été envoyé. Erreur inconnue", "There is no error, the file uploaded with success" : "Aucune erreur, le fichier a été envoyé avec succès.", - "The uploaded file exceeds the upload_max_filesize directive in php.ini: " : "Le fichier envoyé dépasse l'instruction upload_max_filesize située dans le fichier php.ini:", + "The uploaded file exceeds the upload_max_filesize directive in php.ini: " : "Le fichier envoyé dépasse l'instruction upload_max_filesize située dans le fichier php.ini :", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Le fichier envoyé dépasse l'instruction MAX_FILE_SIZE qui est spécifiée dans le formulaire HTML.", "The uploaded file was only partially uploaded" : "Le fichier n'a été que partiellement envoyé.", "No file was uploaded" : "Pas de fichier envoyé.", diff --git a/apps/files/l10n/it.js b/apps/files/l10n/it.js index 939f5e55dac..693888bb7c8 100644 --- a/apps/files/l10n/it.js +++ b/apps/files/l10n/it.js @@ -21,10 +21,10 @@ OC.L10N.register( "Error when creating the folder" : "Errore durante la creazione della cartella", "Unable to set upload directory." : "Impossibile impostare una cartella di caricamento.", "Invalid Token" : "Token non valido", - "No file was uploaded. Unknown error" : "Nessun file è stato inviato. Errore sconosciuto", + "No file was uploaded. Unknown error" : "Nessun file è stato caricato. Errore sconosciuto", "There is no error, the file uploaded with success" : "Non ci sono errori, il file è stato caricato correttamente", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " : "Il file caricato supera la direttiva upload_max_filesize in php.ini:", - "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Il file inviato supera la direttiva MAX_FILE_SIZE specificata nel modulo HTML", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Il file caricato supera la direttiva MAX_FILE_SIZE specificata nel modulo HTML", "The uploaded file was only partially uploaded" : "Il file è stato caricato solo parzialmente", "No file was uploaded" : "Nessun file è stato caricato", "Missing a temporary folder" : "Manca una cartella temporanea", @@ -38,7 +38,7 @@ OC.L10N.register( "Unable to upload {filename} as it is a directory or has 0 bytes" : "Impossibile caricare {filename} poiché è una cartella oppure ha una dimensione di 0 byte.", "Total file size {size1} exceeds upload limit {size2}" : "La dimensione totale del file {size1} supera il limite di caricamento {size2}", "Not enough free space, you are uploading {size1} but only {size2} is left" : "Spazio insufficiente, stai caricando {size1}, ma è rimasto solo {size2}", - "Upload cancelled." : "Invio annullato", + "Upload cancelled." : "Caricamento annullato.", "Could not get result from server." : "Impossibile ottenere il risultato dal server.", "File upload is in progress. Leaving the page now will cancel the upload." : "Caricamento del file in corso. La chiusura della pagina annullerà il caricamento.", "URL cannot be empty" : "L'URL non può essere vuoto.", @@ -76,7 +76,7 @@ OC.L10N.register( "%s could not be renamed" : "%s non può essere rinominato", "Upload (max. %s)" : "Carica (massimo %s)", "File handling" : "Gestione file", - "Maximum upload size" : "Dimensione massima upload", + "Maximum upload size" : "Dimensione massima caricamento", "max. possible: " : "numero mass.: ", "Save" : "Salva", "WebDAV" : "WebDAV", diff --git a/apps/files/l10n/it.json b/apps/files/l10n/it.json index 8686051f461..4efbf6f64b4 100644 --- a/apps/files/l10n/it.json +++ b/apps/files/l10n/it.json @@ -19,10 +19,10 @@ "Error when creating the folder" : "Errore durante la creazione della cartella", "Unable to set upload directory." : "Impossibile impostare una cartella di caricamento.", "Invalid Token" : "Token non valido", - "No file was uploaded. Unknown error" : "Nessun file è stato inviato. Errore sconosciuto", + "No file was uploaded. Unknown error" : "Nessun file è stato caricato. Errore sconosciuto", "There is no error, the file uploaded with success" : "Non ci sono errori, il file è stato caricato correttamente", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " : "Il file caricato supera la direttiva upload_max_filesize in php.ini:", - "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Il file inviato supera la direttiva MAX_FILE_SIZE specificata nel modulo HTML", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Il file caricato supera la direttiva MAX_FILE_SIZE specificata nel modulo HTML", "The uploaded file was only partially uploaded" : "Il file è stato caricato solo parzialmente", "No file was uploaded" : "Nessun file è stato caricato", "Missing a temporary folder" : "Manca una cartella temporanea", @@ -36,7 +36,7 @@ "Unable to upload {filename} as it is a directory or has 0 bytes" : "Impossibile caricare {filename} poiché è una cartella oppure ha una dimensione di 0 byte.", "Total file size {size1} exceeds upload limit {size2}" : "La dimensione totale del file {size1} supera il limite di caricamento {size2}", "Not enough free space, you are uploading {size1} but only {size2} is left" : "Spazio insufficiente, stai caricando {size1}, ma è rimasto solo {size2}", - "Upload cancelled." : "Invio annullato", + "Upload cancelled." : "Caricamento annullato.", "Could not get result from server." : "Impossibile ottenere il risultato dal server.", "File upload is in progress. Leaving the page now will cancel the upload." : "Caricamento del file in corso. La chiusura della pagina annullerà il caricamento.", "URL cannot be empty" : "L'URL non può essere vuoto.", @@ -74,7 +74,7 @@ "%s could not be renamed" : "%s non può essere rinominato", "Upload (max. %s)" : "Carica (massimo %s)", "File handling" : "Gestione file", - "Maximum upload size" : "Dimensione massima upload", + "Maximum upload size" : "Dimensione massima caricamento", "max. possible: " : "numero mass.: ", "Save" : "Salva", "WebDAV" : "WebDAV", diff --git a/apps/files/l10n/sq.js b/apps/files/l10n/sq.js index 14caaa15140..d85523ba062 100644 --- a/apps/files/l10n/sq.js +++ b/apps/files/l10n/sq.js @@ -1,11 +1,24 @@ OC.L10N.register( "files", { + "Storage not available" : "Hapësira e memorizimit nuk është e disponueshme", + "Storage invalid" : "Hapësirë memorizimi e pavlefshme", "Unknown error" : "Gabim panjohur", "Could not move %s - File with this name already exists" : "E pa mundur zhvendosja e %s - ekziston nje skedar me te njetin emer", "Could not move %s" : "Nuk mund të zhvendoset %s", + "Permission denied" : "Nuk ka të drejtë", "File name cannot be empty." : "Emri i skedarit nuk mund të jetë bosh.", + "\"%s\" is an invalid file name." : "\"%s\" është i pavlefshëm si emër skedari.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." : "Emër jo i vlefshëm, '\\', '/', '<', '>', ':', '\"', '|', '?' dhe '*' nuk lejohen.", + "The target folder has been moved or deleted." : "Dosja e destinacionit është zhvendosur ose fshirë.", + "The name %s is already used in the folder %s. Please choose a different name." : "Emri %s është i përdorur në dosjen %s. Ju lutem zgjidhni një emër tjetër.", + "Not a valid source" : "Burim i pavlefshëm", + "Server is not allowed to open URLs, please check the server configuration" : "Serverit nuk i lejohet të hapë URL, ju lutem kontrolloni konfigurimin e serverit", + "The file exceeds your quota by %s" : "Ky skedar tejkalon kuotën tuaj me %s", + "Error while downloading %s to %s" : "Gabim gjatë shkarkimit të %s në %s", + "Error when creating the file" : "Gabim gjatë krijimit të skedarit", + "Folder name cannot be empty." : "Emri i dosjes nuk mund të jetë bosh.", + "Error when creating the folder" : "Gabim gjatë krijimit të dosjes", "Unable to set upload directory." : "E pa mundur të vendoset dosja e ngarkimit", "Invalid Token" : "Shenjë e gabuar", "No file was uploaded. Unknown error" : "Asnjë skedar nuk u dërgua. Gabim i pa njohur", @@ -17,38 +30,59 @@ OC.L10N.register( "Missing a temporary folder" : "Mungon dosja e përkohshme", "Failed to write to disk" : "Dështoi shkrimi në disk", "Not enough storage available" : "Hapsira e arkivimit e pamjaftueshme", + "Upload failed. Could not find uploaded file" : "Ngarkimi dështoi. Nuk mund të gjendet skedari i ngarkuar", + "Upload failed. Could not get file info." : "Ngarkimi dështoi. Nuk mund të gjej informacion mbi skedarin.", "Invalid directory." : "Dosje e pavlefshme", "Files" : "Skedarë", + "All files" : "Të gjithë", + "Unable to upload {filename} as it is a directory or has 0 bytes" : "Nuk mund të ngarkohet {filename} sepse është dosje ose ka 0 byte", + "Total file size {size1} exceeds upload limit {size2}" : "Përmasa totale {size1} e skedarit tejkalon limitin e ngarkimit {size2}", + "Not enough free space, you are uploading {size1} but only {size2} is left" : "Nuk ka hapësirë të mjaftueshme, ju po ngarkoni {size1} por vetëm {size2} është e lirë", "Upload cancelled." : "Ngarkimi u anullua", + "Could not get result from server." : "Nuk mund të merret ndonjë rezultat nga serveri.", "File upload is in progress. Leaving the page now will cancel the upload." : "Skedari duke u ngarkuar. Largimi nga faqja do të anullojë ngarkimin", "URL cannot be empty" : "URL-i nuk mund të jetë bosh", "{new_name} already exists" : "{new_name} është ekzistues ", + "Could not create file" : "Skedari nuk mund të krijohet", "Could not create folder" : "I pamundur krijimi i kartelës", + "Error fetching URL" : "Gabim në ngarkimin e URL", "Share" : "Ndaj", "Delete" : "Fshi", + "Disconnect storage" : "Shkëput hapësirën e memorizimit", "Unshare" : "Hiq ndarjen", "Delete permanently" : "Fshi përfundimisht", "Rename" : "Riemëro", "Pending" : "Në vijim", + "Error moving file." : "Gabim në lëvizjen e skedarëve.", "Error moving file" : "Gabim lëvizjen dokumentave", "Error" : "Gabim", + "Could not rename file" : "Riemërtimi i skedarit nuk është i mundur", + "Error deleting file." : "Gabim gjatë fshirjes së skedarit.", "Name" : "Emri", "Size" : "Madhësia", "Modified" : "Ndryshuar", "_%n folder_::_%n folders_" : ["%n dosje","%n dosje"], "_%n file_::_%n files_" : ["%n skedar","%n skedarë"], + "You don’t have permission to upload or create files here" : "Ju nuk keni të drejta për të ngarkuar apo krijuar skedarë këtu", "_Uploading %n file_::_Uploading %n files_" : ["Po ngarkoj %n skedar","Po ngarkoj %n skedarë"], + "\"{name}\" is an invalid file name." : "\"{name}\" është emër i pavlefshëm.", "Your storage is full, files can not be updated or synced anymore!" : "Hapsira juaj e arkivimit është plot, skedarët nuk mund të përditësohen ose sinkronizohen!", "Your storage is almost full ({usedSpacePercent}%)" : "Hapsira juaj e arkivimit është pothuajse në fund ({usedSpacePercent}%)", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikacioni i Shifrimit është i aktivizuar por çelësat tuaj nuk janë aktivizuar, ju lutem dilni dhe ri-hyni përseri në sistem", + "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Çelësi privat për Aplikacionin e Shifrimit është i pavlefshëm. Ju lutem përditësoni fjalëkalimin e çelësit tuaj privat në parametrat tuaj për të rimarrë qasje në skedarët tuaj të shifruar.", "Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." : "Kodifikimi u çaktivizua por skedarët tuaj vazhdojnë të jenë të kodifikuar. Ju lutem shkoni tek parametrat personale për të dekodifikuar skedarët tuaj.", "{dirs} and {files}" : "{dirs} dhe {files}", + "%s could not be renamed as it has been deleted" : "%s nuk mund të riemërtohet sepse është fshirë", "%s could not be renamed" : "Nuk është i mundur riemërtimi i %s", + "Upload (max. %s)" : "Ngarko (maks. %s)", "File handling" : "Trajtimi i Skedarëve", "Maximum upload size" : "Madhësia maksimale e nagarkimit", "max. possible: " : "maks i mundshëm", "Save" : "Ruaj", "WebDAV" : "WebDAV", + "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Përdorni këtë adresë për <a href=\"%s\" target=\"_blank\">qasje në skedarët tuaj me anë të WebDAV</a>", "New" : "E re", + "New text file" : "Skedar i ri tekst", "Text file" : "Skedar tekst", "New folder" : "Dosje e're", "Folder" : "Dosje", @@ -57,6 +91,7 @@ OC.L10N.register( "Download" : "Shkarko", "Upload too large" : "Ngarkimi shumë i madh", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Skedarët që po mundoheni të ngarkoni e tejkalojnë madhësinë maksimale të lejuar nga serveri.", - "Files are being scanned, please wait." : "Skanerizimi i skedarit në proces. Ju lutem prisni." + "Files are being scanned, please wait." : "Skanerizimi i skedarit në proces. Ju lutem prisni.", + "Currently scanning" : "Duke skanuar" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/sq.json b/apps/files/l10n/sq.json index ec666c96ee4..f15bc950d03 100644 --- a/apps/files/l10n/sq.json +++ b/apps/files/l10n/sq.json @@ -1,9 +1,22 @@ { "translations": { + "Storage not available" : "Hapësira e memorizimit nuk është e disponueshme", + "Storage invalid" : "Hapësirë memorizimi e pavlefshme", "Unknown error" : "Gabim panjohur", "Could not move %s - File with this name already exists" : "E pa mundur zhvendosja e %s - ekziston nje skedar me te njetin emer", "Could not move %s" : "Nuk mund të zhvendoset %s", + "Permission denied" : "Nuk ka të drejtë", "File name cannot be empty." : "Emri i skedarit nuk mund të jetë bosh.", + "\"%s\" is an invalid file name." : "\"%s\" është i pavlefshëm si emër skedari.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." : "Emër jo i vlefshëm, '\\', '/', '<', '>', ':', '\"', '|', '?' dhe '*' nuk lejohen.", + "The target folder has been moved or deleted." : "Dosja e destinacionit është zhvendosur ose fshirë.", + "The name %s is already used in the folder %s. Please choose a different name." : "Emri %s është i përdorur në dosjen %s. Ju lutem zgjidhni një emër tjetër.", + "Not a valid source" : "Burim i pavlefshëm", + "Server is not allowed to open URLs, please check the server configuration" : "Serverit nuk i lejohet të hapë URL, ju lutem kontrolloni konfigurimin e serverit", + "The file exceeds your quota by %s" : "Ky skedar tejkalon kuotën tuaj me %s", + "Error while downloading %s to %s" : "Gabim gjatë shkarkimit të %s në %s", + "Error when creating the file" : "Gabim gjatë krijimit të skedarit", + "Folder name cannot be empty." : "Emri i dosjes nuk mund të jetë bosh.", + "Error when creating the folder" : "Gabim gjatë krijimit të dosjes", "Unable to set upload directory." : "E pa mundur të vendoset dosja e ngarkimit", "Invalid Token" : "Shenjë e gabuar", "No file was uploaded. Unknown error" : "Asnjë skedar nuk u dërgua. Gabim i pa njohur", @@ -15,38 +28,59 @@ "Missing a temporary folder" : "Mungon dosja e përkohshme", "Failed to write to disk" : "Dështoi shkrimi në disk", "Not enough storage available" : "Hapsira e arkivimit e pamjaftueshme", + "Upload failed. Could not find uploaded file" : "Ngarkimi dështoi. Nuk mund të gjendet skedari i ngarkuar", + "Upload failed. Could not get file info." : "Ngarkimi dështoi. Nuk mund të gjej informacion mbi skedarin.", "Invalid directory." : "Dosje e pavlefshme", "Files" : "Skedarë", + "All files" : "Të gjithë", + "Unable to upload {filename} as it is a directory or has 0 bytes" : "Nuk mund të ngarkohet {filename} sepse është dosje ose ka 0 byte", + "Total file size {size1} exceeds upload limit {size2}" : "Përmasa totale {size1} e skedarit tejkalon limitin e ngarkimit {size2}", + "Not enough free space, you are uploading {size1} but only {size2} is left" : "Nuk ka hapësirë të mjaftueshme, ju po ngarkoni {size1} por vetëm {size2} është e lirë", "Upload cancelled." : "Ngarkimi u anullua", + "Could not get result from server." : "Nuk mund të merret ndonjë rezultat nga serveri.", "File upload is in progress. Leaving the page now will cancel the upload." : "Skedari duke u ngarkuar. Largimi nga faqja do të anullojë ngarkimin", "URL cannot be empty" : "URL-i nuk mund të jetë bosh", "{new_name} already exists" : "{new_name} është ekzistues ", + "Could not create file" : "Skedari nuk mund të krijohet", "Could not create folder" : "I pamundur krijimi i kartelës", + "Error fetching URL" : "Gabim në ngarkimin e URL", "Share" : "Ndaj", "Delete" : "Fshi", + "Disconnect storage" : "Shkëput hapësirën e memorizimit", "Unshare" : "Hiq ndarjen", "Delete permanently" : "Fshi përfundimisht", "Rename" : "Riemëro", "Pending" : "Në vijim", + "Error moving file." : "Gabim në lëvizjen e skedarëve.", "Error moving file" : "Gabim lëvizjen dokumentave", "Error" : "Gabim", + "Could not rename file" : "Riemërtimi i skedarit nuk është i mundur", + "Error deleting file." : "Gabim gjatë fshirjes së skedarit.", "Name" : "Emri", "Size" : "Madhësia", "Modified" : "Ndryshuar", "_%n folder_::_%n folders_" : ["%n dosje","%n dosje"], "_%n file_::_%n files_" : ["%n skedar","%n skedarë"], + "You don’t have permission to upload or create files here" : "Ju nuk keni të drejta për të ngarkuar apo krijuar skedarë këtu", "_Uploading %n file_::_Uploading %n files_" : ["Po ngarkoj %n skedar","Po ngarkoj %n skedarë"], + "\"{name}\" is an invalid file name." : "\"{name}\" është emër i pavlefshëm.", "Your storage is full, files can not be updated or synced anymore!" : "Hapsira juaj e arkivimit është plot, skedarët nuk mund të përditësohen ose sinkronizohen!", "Your storage is almost full ({usedSpacePercent}%)" : "Hapsira juaj e arkivimit është pothuajse në fund ({usedSpacePercent}%)", + "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikacioni i Shifrimit është i aktivizuar por çelësat tuaj nuk janë aktivizuar, ju lutem dilni dhe ri-hyni përseri në sistem", + "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "Çelësi privat për Aplikacionin e Shifrimit është i pavlefshëm. Ju lutem përditësoni fjalëkalimin e çelësit tuaj privat në parametrat tuaj për të rimarrë qasje në skedarët tuaj të shifruar.", "Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." : "Kodifikimi u çaktivizua por skedarët tuaj vazhdojnë të jenë të kodifikuar. Ju lutem shkoni tek parametrat personale për të dekodifikuar skedarët tuaj.", "{dirs} and {files}" : "{dirs} dhe {files}", + "%s could not be renamed as it has been deleted" : "%s nuk mund të riemërtohet sepse është fshirë", "%s could not be renamed" : "Nuk është i mundur riemërtimi i %s", + "Upload (max. %s)" : "Ngarko (maks. %s)", "File handling" : "Trajtimi i Skedarëve", "Maximum upload size" : "Madhësia maksimale e nagarkimit", "max. possible: " : "maks i mundshëm", "Save" : "Ruaj", "WebDAV" : "WebDAV", + "Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" : "Përdorni këtë adresë për <a href=\"%s\" target=\"_blank\">qasje në skedarët tuaj me anë të WebDAV</a>", "New" : "E re", + "New text file" : "Skedar i ri tekst", "Text file" : "Skedar tekst", "New folder" : "Dosje e're", "Folder" : "Dosje", @@ -55,6 +89,7 @@ "Download" : "Shkarko", "Upload too large" : "Ngarkimi shumë i madh", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Skedarët që po mundoheni të ngarkoni e tejkalojnë madhësinë maksimale të lejuar nga serveri.", - "Files are being scanned, please wait." : "Skanerizimi i skedarit në proces. Ju lutem prisni." + "Files are being scanned, please wait." : "Skanerizimi i skedarit në proces. Ju lutem prisni.", + "Currently scanning" : "Duke skanuar" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/lib/capabilities.php b/apps/files/lib/capabilities.php index d4820e931ba..690cc314ccd 100644 --- a/apps/files/lib/capabilities.php +++ b/apps/files/lib/capabilities.php @@ -15,7 +15,6 @@ class Capabilities { 'capabilities' => array( 'files' => array( 'bigfilechunking' => true, - 'undelete' => true, ), ), )); diff --git a/apps/files/tests/ajax_rename.php b/apps/files/tests/ajax_rename.php index 5ed8b1931f4..48aed05823b 100644 --- a/apps/files/tests/ajax_rename.php +++ b/apps/files/tests/ajax_rename.php @@ -21,7 +21,7 @@ * */ -class Test_OC_Files_App_Rename extends \PHPUnit_Framework_TestCase { +class Test_OC_Files_App_Rename extends \Test\TestCase { private static $user; /** @@ -34,7 +34,13 @@ class Test_OC_Files_App_Rename extends \PHPUnit_Framework_TestCase { */ private $files; - function setUp() { + private $originalStorage; + + protected function setUp() { + parent::setUp(); + + $this->originalStorage = \OC\Files\Filesystem::getStorage('/'); + // mock OC_L10n if (!self::$user) { self::$user = uniqid(); @@ -59,10 +65,13 @@ class Test_OC_Files_App_Rename extends \PHPUnit_Framework_TestCase { $this->files = new \OCA\Files\App($viewMock, $l10nMock); } - function tearDown() { + protected function tearDown() { $result = \OC_User::deleteUser(self::$user); $this->assertTrue($result); \OC\Files\Filesystem::tearDown(); + \OC\Files\Filesystem::mount($this->originalStorage, array(), '/'); + + parent::tearDown(); } /** diff --git a/apps/files/tests/helper.php b/apps/files/tests/helper.php index 17be1770c33..da902f4f78a 100644 --- a/apps/files/tests/helper.php +++ b/apps/files/tests/helper.php @@ -11,7 +11,7 @@ use OCA\Files; /** * Class Test_Files_Helper */ -class Test_Files_Helper extends \PHPUnit_Framework_TestCase { +class Test_Files_Helper extends \Test\TestCase { private function makeFileInfo($name, $size, $mtime, $isDir = false) { return new \OC\Files\FileInfo( @@ -90,7 +90,7 @@ class Test_Files_Helper extends \PHPUnit_Framework_TestCase { $this->assertEquals( $expectedOrder, $fileNames - ); + ); } } diff --git a/apps/files_encryption/ajax/updatePrivateKeyPassword.php b/apps/files_encryption/ajax/updatePrivateKeyPassword.php index 0f182e93831..fa5e279b21b 100644 --- a/apps/files_encryption/ajax/updatePrivateKeyPassword.php +++ b/apps/files_encryption/ajax/updatePrivateKeyPassword.php @@ -26,9 +26,10 @@ $newPassword = $_POST['newPassword']; $view = new \OC\Files\View('/'); $session = new \OCA\Encryption\Session($view); $user = \OCP\User::getUser(); +$loginName = \OC::$server->getUserSession()->getLoginName(); // check new password -$passwordCorrect = \OCP\User::checkPassword($user, $newPassword); +$passwordCorrect = \OCP\User::checkPassword($loginName, $newPassword); if ($passwordCorrect !== false) { diff --git a/apps/files_encryption/appinfo/app.php b/apps/files_encryption/appinfo/app.php index aa709fbac65..8bf422a612e 100644 --- a/apps/files_encryption/appinfo/app.php +++ b/apps/files_encryption/appinfo/app.php @@ -11,8 +11,9 @@ OC::$CLASSPATH['OCA\Encryption\Capabilities'] = 'files_encryption/lib/capabiliti OC::$CLASSPATH['OCA\Encryption\Helper'] = 'files_encryption/lib/helper.php'; // Exceptions -OC::$CLASSPATH['OCA\Encryption\Exceptions\MultiKeyEncryptException'] = 'files_encryption/lib/exceptions.php'; -OC::$CLASSPATH['OCA\Encryption\Exceptions\MultiKeyDecryptException'] = 'files_encryption/lib/exceptions.php'; +OC::$CLASSPATH['OCA\Encryption\Exception\MultiKeyEncryptException'] = 'files_encryption/exception/multiKeyEncryptException.php'; +OC::$CLASSPATH['OCA\Encryption\Exception\MultiKeyDecryptException'] = 'files_encryption/exception/multiKeyDecryptException.php'; +OC::$CLASSPATH['OCA\Encryption\Exception\EncryptionException'] = 'files_encryption/exception/encryptionException.php'; \OCP\Util::addTranslations('files_encryption'); \OCP\Util::addscript('files_encryption', 'encryption'); diff --git a/apps/files_encryption/exception/encryptionException.php b/apps/files_encryption/exception/encryptionException.php new file mode 100644 index 00000000000..c51a3b3439f --- /dev/null +++ b/apps/files_encryption/exception/encryptionException.php @@ -0,0 +1,50 @@ +<?php +/** + * ownCloud + * + * @copyright (C) 2014 ownCloud, Inc. + * + * @author Bjoern Schiessle <schiessle@owncloud.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE + * License as published by the Free Software Foundation; either + * version 3 of the License, or any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with this library. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Encryption\Exception; + +/** + * Base class for all encryption exception + * + * Possible Error Codes: + * 10 - unknown error + * 20 - unexpected end of encryption header + * 30 - unexpected blog size + * 40 - encryption header to large + * 50 - unknown cipher + * 60 - encryption failed + * 70 - decryption failed + * 80 - empty data + * 90 - private key missing + */ +class EncryptionException extends \Exception { + const UNKNOWN = 10; + const UNEXPECTED_END_OF_ENCRYPTION_HEADER = 20; + const UNEXPECTED_BLOG_SIZE = 30; + const ENCRYPTION_HEADER_TO_LARGE = 40; + const UNKNOWN_CIPHER = 50; + const ENCRYPTION_FAILED = 60; + const DECRYPTION_FAILED = 70; + const EMPTY_DATA = 80; + const PRIVATE_KEY_MISSING = 90; +} diff --git a/apps/files_encryption/lib/exceptions.php b/apps/files_encryption/exception/multiKeyDecryptException.php index 3ea27faf406..c1e40e045e0 100644 --- a/apps/files_encryption/lib/exceptions.php +++ b/apps/files_encryption/exception/multiKeyDecryptException.php @@ -2,8 +2,9 @@ /** * ownCloud * - * @author Bjoern Schiessle - * @copyright 2014 Bjoern Schiessle <schiessle@owncloud.com> + * @copyright (C) 2014 ownCloud, Inc. + * + * @author Bjoern Schiessle <schiessle@owncloud.com> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE @@ -20,36 +21,14 @@ * */ -namespace OCA\Encryption\Exceptions; - -/** - * General encryption exception - * Possible Error Codes: - * 10 - unexpected end of encryption header - * 20 - unexpected blog size - * 30 - encryption header to large - * 40 - unknown cipher - * 50 - encryption failed - */ -class EncryptionException extends \Exception { -} - -/** - * Throw this exception if multi key encrytion fails - * - * Possible error codes: - * 10 - empty plain content was given - * 20 - openssl_seal failed - */ -class MultiKeyEncryptException extends EncryptionException { -} +namespace OCA\Encryption\Exception; /** * Throw this encryption if multi key decryption failed * * Possible error codes: - * 10 - empty encrypted content was given - * 20 - openssl_open failed + * 110 - openssl_open failed */ class MultiKeyDecryptException extends EncryptionException { + const OPENSSL_OPEN_FAILED = 110; } diff --git a/apps/files_encryption/exception/multiKeyEncryptException.php b/apps/files_encryption/exception/multiKeyEncryptException.php new file mode 100644 index 00000000000..e3aa7de591f --- /dev/null +++ b/apps/files_encryption/exception/multiKeyEncryptException.php @@ -0,0 +1,34 @@ +<?php +/** + * ownCloud + * + * @copyright (C) 2014 ownCloud, Inc. + * + * @author Bjoern Schiessle <schiessle@owncloud.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE + * License as published by the Free Software Foundation; either + * version 3 of the License, or any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with this library. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Encryption\Exception; + +/** + * Throw this exception if multi key encrytion fails + * + * Possible error codes: + * 110 - openssl_seal failed + */ +class MultiKeyEncryptException extends EncryptionException { + const OPENSSL_SEAL_FAILED = 110; +} diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index 3a0a37c0a59..eadd2b64b80 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -263,6 +263,19 @@ class Hooks { }
}
+ /**
+ * after password reset we create a new key pair for the user
+ *
+ * @param array $params
+ */
+ public static function postPasswordReset($params) {
+ $uid = $params['uid'];
+ $password = $params['password'];
+
+ $util = new Util(new \OC\Files\View(), $uid);
+ $util->replaceUserKeys($password);
+ }
+
/*
* check if files can be encrypted to every user.
*/
diff --git a/apps/files_encryption/js/encryption.js b/apps/files_encryption/js/encryption.js index 65ffabe55e6..d2d1c3a1fc5 100644 --- a/apps/files_encryption/js/encryption.js +++ b/apps/files_encryption/js/encryption.js @@ -5,6 +5,10 @@ * See the COPYING-README file. */ +/** + * @namespace + * @memberOf OC + */ OC.Encryption={ MIGRATION_OPEN:0, MIGRATION_COMPLETED:1, diff --git a/apps/files_encryption/l10n/ar.js b/apps/files_encryption/l10n/ar.js index b1af4358241..9f51322cf92 100644 --- a/apps/files_encryption/l10n/ar.js +++ b/apps/files_encryption/l10n/ar.js @@ -8,7 +8,6 @@ OC.L10N.register( "Password successfully changed." : "تم تغيير كلمة المرور بنجاح.", "Could not change the password. Maybe the old password was not correct." : "تعذر تغيير كلمة المرور. من الممكن ان كلمة المرور القديمة غير صحيحة.", "Private key password successfully updated." : "تم تحديث كلمة المرور للمفتاح الخاص بنجاح.", - "Could not update the private key password. Maybe the old password was not correct." : "لا يمكن تحديث كلمة مرور المفتاح الخاص. من الممكن ان كلمة المرور القديمة غير صحيحة.", "File recovery settings updated" : "اعدادات ملف الاستعادة تم تحديثه", "Could not update file recovery" : "تعذر تحديث ملف الاستعادة", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "برنامج التشفير لم يتم تهيئتة ! من الممكن ان برنامج التشفير تم اعادة تفعيلة خلال الجلسة. يرجى تسجيل الخروج ومن ثم تسجيل الدخول مجددا لتهيئة برنامج التشفير.", diff --git a/apps/files_encryption/l10n/ar.json b/apps/files_encryption/l10n/ar.json index f65d0c7b327..d7caa1b31d0 100644 --- a/apps/files_encryption/l10n/ar.json +++ b/apps/files_encryption/l10n/ar.json @@ -6,7 +6,6 @@ "Password successfully changed." : "تم تغيير كلمة المرور بنجاح.", "Could not change the password. Maybe the old password was not correct." : "تعذر تغيير كلمة المرور. من الممكن ان كلمة المرور القديمة غير صحيحة.", "Private key password successfully updated." : "تم تحديث كلمة المرور للمفتاح الخاص بنجاح.", - "Could not update the private key password. Maybe the old password was not correct." : "لا يمكن تحديث كلمة مرور المفتاح الخاص. من الممكن ان كلمة المرور القديمة غير صحيحة.", "File recovery settings updated" : "اعدادات ملف الاستعادة تم تحديثه", "Could not update file recovery" : "تعذر تحديث ملف الاستعادة", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "برنامج التشفير لم يتم تهيئتة ! من الممكن ان برنامج التشفير تم اعادة تفعيلة خلال الجلسة. يرجى تسجيل الخروج ومن ثم تسجيل الدخول مجددا لتهيئة برنامج التشفير.", diff --git a/apps/files_encryption/l10n/ast.js b/apps/files_encryption/l10n/ast.js index 2252f302aaa..c909d4ee021 100644 --- a/apps/files_encryption/l10n/ast.js +++ b/apps/files_encryption/l10n/ast.js @@ -8,7 +8,6 @@ OC.L10N.register( "Password successfully changed." : "Camudóse la contraseña", "Could not change the password. Maybe the old password was not correct." : "Nun pudo camudase la contraseña. Comprueba que la contraseña actual seya correuta.", "Private key password successfully updated." : "Contraseña de clave privada anovada correchamente.", - "Could not update the private key password. Maybe the old password was not correct." : "Nun pudo camudase la contraseña. Pue que la contraseña antigua nun seya correuta.", "File recovery settings updated" : "Opciones de recuperación de ficheros anovada", "Could not update file recovery" : "Nun pudo anovase la recuperación de ficheros", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "¡L'aplicación de cifráu nun s'anició! Seique se restableciera mentanto la sesión. Por favor intenta zarrar la sesión y volver a aniciala p'aniciar l'aplicación de cifráu.", diff --git a/apps/files_encryption/l10n/ast.json b/apps/files_encryption/l10n/ast.json index 4c1edefea97..d34a727863d 100644 --- a/apps/files_encryption/l10n/ast.json +++ b/apps/files_encryption/l10n/ast.json @@ -6,7 +6,6 @@ "Password successfully changed." : "Camudóse la contraseña", "Could not change the password. Maybe the old password was not correct." : "Nun pudo camudase la contraseña. Comprueba que la contraseña actual seya correuta.", "Private key password successfully updated." : "Contraseña de clave privada anovada correchamente.", - "Could not update the private key password. Maybe the old password was not correct." : "Nun pudo camudase la contraseña. Pue que la contraseña antigua nun seya correuta.", "File recovery settings updated" : "Opciones de recuperación de ficheros anovada", "Could not update file recovery" : "Nun pudo anovase la recuperación de ficheros", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "¡L'aplicación de cifráu nun s'anició! Seique se restableciera mentanto la sesión. Por favor intenta zarrar la sesión y volver a aniciala p'aniciar l'aplicación de cifráu.", diff --git a/apps/files_encryption/l10n/bg_BG.js b/apps/files_encryption/l10n/bg_BG.js index a117818ba84..87ffacc697d 100644 --- a/apps/files_encryption/l10n/bg_BG.js +++ b/apps/files_encryption/l10n/bg_BG.js @@ -13,8 +13,10 @@ OC.L10N.register( "Please repeat the new recovery password" : "Моля, въведи повторна новата парола за възстановяване", "Password successfully changed." : "Паролата е успешно променена.", "Could not change the password. Maybe the old password was not correct." : "Грешка при промяна на паролата. Може би старата ти парола е сгрешена.", + "Could not update the private key password." : "Неуспешна промяна на паролата на личния ключ", + "The old password was not correct, please try again." : "Старата парола е грешна, опитай отново.", + "The current log-in password was not correct, please try again." : "Грешна парола за вписване, опитай отново.", "Private key password successfully updated." : "Успешно променена тайната парола за ключа.", - "Could not update the private key password. Maybe the old password was not correct." : "Неуспешна промяна на тайната парола за ключа. Може би старата парола е грешно въведена.", "File recovery settings updated" : "Настройките за възстановяване на файлове са променени.", "Could not update file recovery" : "Неуспешна промяна на настройките за възстановяване на файлове.", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Неуспешна инициализация на криптиращото приложение! Може би криптиращото приложение бе включено по време на твоята сесия. Отпиши се и се впиши обратно за да инциализираш криптиращото приложение.", diff --git a/apps/files_encryption/l10n/bg_BG.json b/apps/files_encryption/l10n/bg_BG.json index 74ac2593091..6e0ac83b494 100644 --- a/apps/files_encryption/l10n/bg_BG.json +++ b/apps/files_encryption/l10n/bg_BG.json @@ -11,8 +11,10 @@ "Please repeat the new recovery password" : "Моля, въведи повторна новата парола за възстановяване", "Password successfully changed." : "Паролата е успешно променена.", "Could not change the password. Maybe the old password was not correct." : "Грешка при промяна на паролата. Може би старата ти парола е сгрешена.", + "Could not update the private key password." : "Неуспешна промяна на паролата на личния ключ", + "The old password was not correct, please try again." : "Старата парола е грешна, опитай отново.", + "The current log-in password was not correct, please try again." : "Грешна парола за вписване, опитай отново.", "Private key password successfully updated." : "Успешно променена тайната парола за ключа.", - "Could not update the private key password. Maybe the old password was not correct." : "Неуспешна промяна на тайната парола за ключа. Може би старата парола е грешно въведена.", "File recovery settings updated" : "Настройките за възстановяване на файлове са променени.", "Could not update file recovery" : "Неуспешна промяна на настройките за възстановяване на файлове.", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Неуспешна инициализация на криптиращото приложение! Може би криптиращото приложение бе включено по време на твоята сесия. Отпиши се и се впиши обратно за да инциализираш криптиращото приложение.", diff --git a/apps/files_encryption/l10n/ca.js b/apps/files_encryption/l10n/ca.js index e443d384ac2..2cc924a7523 100644 --- a/apps/files_encryption/l10n/ca.js +++ b/apps/files_encryption/l10n/ca.js @@ -8,7 +8,6 @@ OC.L10N.register( "Password successfully changed." : "La contrasenya s'ha canviat.", "Could not change the password. Maybe the old password was not correct." : "No s'ha pogut canviar la contrasenya. Potser la contrasenya anterior no era correcta.", "Private key password successfully updated." : "La contrasenya de la clau privada s'ha actualitzat.", - "Could not update the private key password. Maybe the old password was not correct." : "No s'ha pogut actualitzar la contrasenya de la clau privada. Potser la contrasenya anterior no era correcta.", "File recovery settings updated" : "S'han actualitzat els arranjaments de recuperació de fitxers", "Could not update file recovery" : "No s'ha pogut actualitzar la recuperació de fitxers", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "L'aplicació d'encriptació no està inicialitzada! Potser l'aplicació d'encriptació ha estat reiniciada durant la sessió. Intenteu sortir i acreditar-vos de nou per reinicialitzar l'aplicació d'encriptació.", diff --git a/apps/files_encryption/l10n/ca.json b/apps/files_encryption/l10n/ca.json index a65fbf9c88e..378af112cf2 100644 --- a/apps/files_encryption/l10n/ca.json +++ b/apps/files_encryption/l10n/ca.json @@ -6,7 +6,6 @@ "Password successfully changed." : "La contrasenya s'ha canviat.", "Could not change the password. Maybe the old password was not correct." : "No s'ha pogut canviar la contrasenya. Potser la contrasenya anterior no era correcta.", "Private key password successfully updated." : "La contrasenya de la clau privada s'ha actualitzat.", - "Could not update the private key password. Maybe the old password was not correct." : "No s'ha pogut actualitzar la contrasenya de la clau privada. Potser la contrasenya anterior no era correcta.", "File recovery settings updated" : "S'han actualitzat els arranjaments de recuperació de fitxers", "Could not update file recovery" : "No s'ha pogut actualitzar la recuperació de fitxers", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "L'aplicació d'encriptació no està inicialitzada! Potser l'aplicació d'encriptació ha estat reiniciada durant la sessió. Intenteu sortir i acreditar-vos de nou per reinicialitzar l'aplicació d'encriptació.", diff --git a/apps/files_encryption/l10n/cs_CZ.js b/apps/files_encryption/l10n/cs_CZ.js index 3c3b54e67f3..5d4d36557b7 100644 --- a/apps/files_encryption/l10n/cs_CZ.js +++ b/apps/files_encryption/l10n/cs_CZ.js @@ -8,13 +8,15 @@ OC.L10N.register( "Recovery key successfully enabled" : "Záchranný klíč byl úspěšně povolen", "Could not disable recovery key. Please check your recovery key password!" : "Nelze zakázat záchranný klíč. Zkontrolujte prosím heslo vašeho záchranného klíče!", "Recovery key successfully disabled" : "Záchranný klíč byl úspěšně zakázán", - "Please provide the old recovery password" : "Zapište prosím staré heslo pro obnovu", - "Please provide a new recovery password" : "Zapište prosím nové heslo pro obnovu", + "Please provide the old recovery password" : "Zadejte prosím staré heslo pro obnovu", + "Please provide a new recovery password" : "Zadejte prosím nové heslo pro obnovu", "Please repeat the new recovery password" : "Zopakujte prosím nové heslo pro obnovu", "Password successfully changed." : "Heslo bylo úspěšně změněno.", "Could not change the password. Maybe the old password was not correct." : "Změna hesla se nezdařila. Pravděpodobně nebylo stávající heslo zadáno správně.", + "Could not update the private key password." : "Nelze aktualizovat heslo soukromého klíče.", + "The old password was not correct, please try again." : "Staré heslo nebylo zadáno správně, zkuste to prosím znovu.", + "The current log-in password was not correct, please try again." : "Současné přihlašovací heslo nebylo zadáno správně, zkuste to prosím znovu.", "Private key password successfully updated." : "Heslo soukromého klíče úspěšně aktualizováno.", - "Could not update the private key password. Maybe the old password was not correct." : "Nelze aktualizovat heslo soukromého klíče. Možná nebylo staré heslo správně.", "File recovery settings updated" : "Možnosti záchrany souborů aktualizovány", "Could not update file recovery" : "Nelze nastavit záchranu souborů", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Aplikace pro šifrování není inicializována! Je možné, že aplikace byla znovu aktivována během vašeho přihlášení. Zkuste se prosím odhlásit a znovu přihlásit pro provedení inicializace šifrovací aplikace.", diff --git a/apps/files_encryption/l10n/cs_CZ.json b/apps/files_encryption/l10n/cs_CZ.json index 5bd5bb54f01..3f25a78695e 100644 --- a/apps/files_encryption/l10n/cs_CZ.json +++ b/apps/files_encryption/l10n/cs_CZ.json @@ -6,13 +6,15 @@ "Recovery key successfully enabled" : "Záchranný klíč byl úspěšně povolen", "Could not disable recovery key. Please check your recovery key password!" : "Nelze zakázat záchranný klíč. Zkontrolujte prosím heslo vašeho záchranného klíče!", "Recovery key successfully disabled" : "Záchranný klíč byl úspěšně zakázán", - "Please provide the old recovery password" : "Zapište prosím staré heslo pro obnovu", - "Please provide a new recovery password" : "Zapište prosím nové heslo pro obnovu", + "Please provide the old recovery password" : "Zadejte prosím staré heslo pro obnovu", + "Please provide a new recovery password" : "Zadejte prosím nové heslo pro obnovu", "Please repeat the new recovery password" : "Zopakujte prosím nové heslo pro obnovu", "Password successfully changed." : "Heslo bylo úspěšně změněno.", "Could not change the password. Maybe the old password was not correct." : "Změna hesla se nezdařila. Pravděpodobně nebylo stávající heslo zadáno správně.", + "Could not update the private key password." : "Nelze aktualizovat heslo soukromého klíče.", + "The old password was not correct, please try again." : "Staré heslo nebylo zadáno správně, zkuste to prosím znovu.", + "The current log-in password was not correct, please try again." : "Současné přihlašovací heslo nebylo zadáno správně, zkuste to prosím znovu.", "Private key password successfully updated." : "Heslo soukromého klíče úspěšně aktualizováno.", - "Could not update the private key password. Maybe the old password was not correct." : "Nelze aktualizovat heslo soukromého klíče. Možná nebylo staré heslo správně.", "File recovery settings updated" : "Možnosti záchrany souborů aktualizovány", "Could not update file recovery" : "Nelze nastavit záchranu souborů", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Aplikace pro šifrování není inicializována! Je možné, že aplikace byla znovu aktivována během vašeho přihlášení. Zkuste se prosím odhlásit a znovu přihlásit pro provedení inicializace šifrovací aplikace.", diff --git a/apps/files_encryption/l10n/da.js b/apps/files_encryption/l10n/da.js index 9c12271be0b..95e3a115cd7 100644 --- a/apps/files_encryption/l10n/da.js +++ b/apps/files_encryption/l10n/da.js @@ -13,8 +13,10 @@ OC.L10N.register( "Please repeat the new recovery password" : "Gentag venligst det nye kodeord til gendannelse", "Password successfully changed." : "Kodeordet blev ændret succesfuldt", "Could not change the password. Maybe the old password was not correct." : "Kunne ikke ændre kodeordet. Måske var det gamle kodeord ikke korrekt.", + "Could not update the private key password." : "Kunne ikke opdatere kodeordet til den private nøgle.", + "The old password was not correct, please try again." : "Det gamle kodeord var ikke korrekt, prøv venligst igen.", + "The current log-in password was not correct, please try again." : "Det nuværende kodeord til log-in var ikke korrekt, prøv venligst igen.", "Private key password successfully updated." : "Privat nøgle kodeord succesfuldt opdateret.", - "Could not update the private key password. Maybe the old password was not correct." : "Kunne ikke opdatere det private nøgle kodeord-. Måske var det gamle kodeord forkert.", "File recovery settings updated" : "Filgendannelsesindstillinger opdateret", "Could not update file recovery" : "Kunne ikke opdatere filgendannelse", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Krypteringsprogrammet er ikke igangsat. Det kan skyldes at krypteringsprogrammet er blevet genaktiveret under din session. Prøv at logge ud og ind igen for at aktivere krypteringsprogrammet. ", diff --git a/apps/files_encryption/l10n/da.json b/apps/files_encryption/l10n/da.json index 65a64a95d33..141d6998d47 100644 --- a/apps/files_encryption/l10n/da.json +++ b/apps/files_encryption/l10n/da.json @@ -11,8 +11,10 @@ "Please repeat the new recovery password" : "Gentag venligst det nye kodeord til gendannelse", "Password successfully changed." : "Kodeordet blev ændret succesfuldt", "Could not change the password. Maybe the old password was not correct." : "Kunne ikke ændre kodeordet. Måske var det gamle kodeord ikke korrekt.", + "Could not update the private key password." : "Kunne ikke opdatere kodeordet til den private nøgle.", + "The old password was not correct, please try again." : "Det gamle kodeord var ikke korrekt, prøv venligst igen.", + "The current log-in password was not correct, please try again." : "Det nuværende kodeord til log-in var ikke korrekt, prøv venligst igen.", "Private key password successfully updated." : "Privat nøgle kodeord succesfuldt opdateret.", - "Could not update the private key password. Maybe the old password was not correct." : "Kunne ikke opdatere det private nøgle kodeord-. Måske var det gamle kodeord forkert.", "File recovery settings updated" : "Filgendannelsesindstillinger opdateret", "Could not update file recovery" : "Kunne ikke opdatere filgendannelse", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Krypteringsprogrammet er ikke igangsat. Det kan skyldes at krypteringsprogrammet er blevet genaktiveret under din session. Prøv at logge ud og ind igen for at aktivere krypteringsprogrammet. ", diff --git a/apps/files_encryption/l10n/de.js b/apps/files_encryption/l10n/de.js index 2c680836cb5..e02b6cd473c 100644 --- a/apps/files_encryption/l10n/de.js +++ b/apps/files_encryption/l10n/de.js @@ -13,8 +13,10 @@ OC.L10N.register( "Please repeat the new recovery password" : "Bitte das neue Passwort zur Wiederherstellung wiederholen", "Password successfully changed." : "Dein Passwort wurde geändert.", "Could not change the password. Maybe the old password was not correct." : "Das Passwort konnte nicht geändert werden. Vielleicht war das alte Passwort falsch.", + "Could not update the private key password." : "Das Passwort des privaten Schlüssels konnte nicht aktualisiert werden.", + "The old password was not correct, please try again." : "Das alte Passwort war nicht korrekt, bitte versuche es noch einmal.", + "The current log-in password was not correct, please try again." : "Das aktuelle Anmeldepasswort war nicht korrekt, bitte versuche es noch einmal.", "Private key password successfully updated." : "Passwort des privaten Schlüssels erfolgreich aktualisiert", - "Could not update the private key password. Maybe the old password was not correct." : "Das Passwort des privaten Schlüssels konnte nicht aktualisiert werden. Eventuell war das alte Passwort falsch.", "File recovery settings updated" : "Einstellungen zur Wiederherstellung von Dateien wurden aktualisiert", "Could not update file recovery" : "Dateiwiederherstellung konnte nicht aktualisiert werden", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Verschlüsselung-App ist nicht initialisiert! Vielleicht wurde die Verschlüsselung-App in der aktuellen Sitzung reaktiviert. Bitte versuche Dich ab- und wieder anzumelden, um die Verschlüsselung-App zu initialisieren.", diff --git a/apps/files_encryption/l10n/de.json b/apps/files_encryption/l10n/de.json index ce5b6e81af1..c3077fc61a9 100644 --- a/apps/files_encryption/l10n/de.json +++ b/apps/files_encryption/l10n/de.json @@ -11,8 +11,10 @@ "Please repeat the new recovery password" : "Bitte das neue Passwort zur Wiederherstellung wiederholen", "Password successfully changed." : "Dein Passwort wurde geändert.", "Could not change the password. Maybe the old password was not correct." : "Das Passwort konnte nicht geändert werden. Vielleicht war das alte Passwort falsch.", + "Could not update the private key password." : "Das Passwort des privaten Schlüssels konnte nicht aktualisiert werden.", + "The old password was not correct, please try again." : "Das alte Passwort war nicht korrekt, bitte versuche es noch einmal.", + "The current log-in password was not correct, please try again." : "Das aktuelle Anmeldepasswort war nicht korrekt, bitte versuche es noch einmal.", "Private key password successfully updated." : "Passwort des privaten Schlüssels erfolgreich aktualisiert", - "Could not update the private key password. Maybe the old password was not correct." : "Das Passwort des privaten Schlüssels konnte nicht aktualisiert werden. Eventuell war das alte Passwort falsch.", "File recovery settings updated" : "Einstellungen zur Wiederherstellung von Dateien wurden aktualisiert", "Could not update file recovery" : "Dateiwiederherstellung konnte nicht aktualisiert werden", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Verschlüsselung-App ist nicht initialisiert! Vielleicht wurde die Verschlüsselung-App in der aktuellen Sitzung reaktiviert. Bitte versuche Dich ab- und wieder anzumelden, um die Verschlüsselung-App zu initialisieren.", diff --git a/apps/files_encryption/l10n/de_DE.js b/apps/files_encryption/l10n/de_DE.js index f24b4a74358..84dd13df2a9 100644 --- a/apps/files_encryption/l10n/de_DE.js +++ b/apps/files_encryption/l10n/de_DE.js @@ -13,8 +13,10 @@ OC.L10N.register( "Please repeat the new recovery password" : "Bitte das neue Passwort zur Wiederherstellung wiederholen", "Password successfully changed." : "Das Passwort wurde erfolgreich geändert.", "Could not change the password. Maybe the old password was not correct." : "Das Passwort konnte nicht geändert werden. Vielleicht war das alte Passwort nicht richtig.", + "Could not update the private key password." : "Das Passwort des privaten Schlüssels konnte nicht aktualisiert werden.", + "The old password was not correct, please try again." : "Das alte Passwort war nicht korrekt, bitte versuchen Sie es noch einmal.", + "The current log-in password was not correct, please try again." : "Das aktuelle Anmeldepasswort war nicht korrekt, bitte versuchen Sie es noch einmal.", "Private key password successfully updated." : "Das Passwort des privaten Schlüssels wurde erfolgreich aktualisiert.", - "Could not update the private key password. Maybe the old password was not correct." : "Das Passwort des privaten Schlüssels konnte nicht aktualisiert werden. Vielleicht war das alte Passwort nicht richtig.", "File recovery settings updated" : "Die Einstellungen für die Dateiwiederherstellung wurden aktualisiert.", "Could not update file recovery" : "Die Dateiwiederherstellung konnte nicht aktualisiert werden.", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Verschlüsselung-App ist nicht initialisiert! Vielleicht wurde die Verschlüsselung-App in der aktuellen Sitzung reaktiviert. Bitte versuchen Sie sich ab- und wieder anzumelden, um die Verschlüsselung-App zu initialisieren.", diff --git a/apps/files_encryption/l10n/de_DE.json b/apps/files_encryption/l10n/de_DE.json index 0bbba2a50df..0e9ee5084c4 100644 --- a/apps/files_encryption/l10n/de_DE.json +++ b/apps/files_encryption/l10n/de_DE.json @@ -11,8 +11,10 @@ "Please repeat the new recovery password" : "Bitte das neue Passwort zur Wiederherstellung wiederholen", "Password successfully changed." : "Das Passwort wurde erfolgreich geändert.", "Could not change the password. Maybe the old password was not correct." : "Das Passwort konnte nicht geändert werden. Vielleicht war das alte Passwort nicht richtig.", + "Could not update the private key password." : "Das Passwort des privaten Schlüssels konnte nicht aktualisiert werden.", + "The old password was not correct, please try again." : "Das alte Passwort war nicht korrekt, bitte versuchen Sie es noch einmal.", + "The current log-in password was not correct, please try again." : "Das aktuelle Anmeldepasswort war nicht korrekt, bitte versuchen Sie es noch einmal.", "Private key password successfully updated." : "Das Passwort des privaten Schlüssels wurde erfolgreich aktualisiert.", - "Could not update the private key password. Maybe the old password was not correct." : "Das Passwort des privaten Schlüssels konnte nicht aktualisiert werden. Vielleicht war das alte Passwort nicht richtig.", "File recovery settings updated" : "Die Einstellungen für die Dateiwiederherstellung wurden aktualisiert.", "Could not update file recovery" : "Die Dateiwiederherstellung konnte nicht aktualisiert werden.", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Verschlüsselung-App ist nicht initialisiert! Vielleicht wurde die Verschlüsselung-App in der aktuellen Sitzung reaktiviert. Bitte versuchen Sie sich ab- und wieder anzumelden, um die Verschlüsselung-App zu initialisieren.", diff --git a/apps/files_encryption/l10n/el.js b/apps/files_encryption/l10n/el.js index a39a0c867f3..03a94c2a85e 100644 --- a/apps/files_encryption/l10n/el.js +++ b/apps/files_encryption/l10n/el.js @@ -13,8 +13,8 @@ OC.L10N.register( "Please repeat the new recovery password" : "Παρακαλώ επαναλάβετε το νέο κωδικό επαναφοράς", "Password successfully changed." : "Ο κωδικός αλλάχτηκε επιτυχώς.", "Could not change the password. Maybe the old password was not correct." : "Αποτυχία αλλαγής κωδικού ίσως ο παλιός κωδικός να μην ήταν σωστός.", + "The old password was not correct, please try again." : "Το παλαιό συνθηματικό δεν είναι σωστό, παρακαλώ δοκιμάστε ξανά.", "Private key password successfully updated." : "Το Προσωπικό κλειδί πρόσβασης ενημερώθηκε επιτυχώς", - "Could not update the private key password. Maybe the old password was not correct." : "Αποτυχία ενημέρωσης του κωδικού για το προσωπικό κλειδί. Ενδεχομένως ο παλιός κωδικός δεν ήταν σωστός.", "File recovery settings updated" : "Οι ρυθμίσεις επαναφοράς αρχείων ανανεώθηκαν", "Could not update file recovery" : "Αποτυχία ενημέρωσης ανάκτησης αρχείων", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Η εφαρμογή κρυπτογράφησης δεν έχει εκκινήσει! Ίσως η εφαρμογή κρυπτογράφησης επανενεργοποιήθηκε κατά τη διάρκεια της τρέχουσας σύνδεσής σας. Παρακαλώ προσπαθήστε να αποσυνδεθείτε και να ξανασυνδεθείτε για να εκκινήσετε την εφαρμογή κρυπτογράφησης.", diff --git a/apps/files_encryption/l10n/el.json b/apps/files_encryption/l10n/el.json index 0ebf52e3f88..13ed5ab7755 100644 --- a/apps/files_encryption/l10n/el.json +++ b/apps/files_encryption/l10n/el.json @@ -11,8 +11,8 @@ "Please repeat the new recovery password" : "Παρακαλώ επαναλάβετε το νέο κωδικό επαναφοράς", "Password successfully changed." : "Ο κωδικός αλλάχτηκε επιτυχώς.", "Could not change the password. Maybe the old password was not correct." : "Αποτυχία αλλαγής κωδικού ίσως ο παλιός κωδικός να μην ήταν σωστός.", + "The old password was not correct, please try again." : "Το παλαιό συνθηματικό δεν είναι σωστό, παρακαλώ δοκιμάστε ξανά.", "Private key password successfully updated." : "Το Προσωπικό κλειδί πρόσβασης ενημερώθηκε επιτυχώς", - "Could not update the private key password. Maybe the old password was not correct." : "Αποτυχία ενημέρωσης του κωδικού για το προσωπικό κλειδί. Ενδεχομένως ο παλιός κωδικός δεν ήταν σωστός.", "File recovery settings updated" : "Οι ρυθμίσεις επαναφοράς αρχείων ανανεώθηκαν", "Could not update file recovery" : "Αποτυχία ενημέρωσης ανάκτησης αρχείων", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Η εφαρμογή κρυπτογράφησης δεν έχει εκκινήσει! Ίσως η εφαρμογή κρυπτογράφησης επανενεργοποιήθηκε κατά τη διάρκεια της τρέχουσας σύνδεσής σας. Παρακαλώ προσπαθήστε να αποσυνδεθείτε και να ξανασυνδεθείτε για να εκκινήσετε την εφαρμογή κρυπτογράφησης.", diff --git a/apps/files_encryption/l10n/en_GB.js b/apps/files_encryption/l10n/en_GB.js index 126d901b24f..cae7d2c9679 100644 --- a/apps/files_encryption/l10n/en_GB.js +++ b/apps/files_encryption/l10n/en_GB.js @@ -13,8 +13,10 @@ OC.L10N.register( "Please repeat the new recovery password" : "Please repeat the new recovery password", "Password successfully changed." : "Password changed successfully.", "Could not change the password. Maybe the old password was not correct." : "Could not change the password. Maybe the old password was incorrect.", + "Could not update the private key password." : "Could not update the private key password.", + "The old password was not correct, please try again." : "The old password was not correct, please try again.", + "The current log-in password was not correct, please try again." : "The current log-in password was not correct, please try again.", "Private key password successfully updated." : "Private key password updated successfully.", - "Could not update the private key password. Maybe the old password was not correct." : "Could not update the private key password. Maybe the old password was not correct.", "File recovery settings updated" : "File recovery settings updated", "Could not update file recovery" : "Could not update file recovery", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Encryption app not initialised! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialise the encryption app.", diff --git a/apps/files_encryption/l10n/en_GB.json b/apps/files_encryption/l10n/en_GB.json index e81b4088055..d0b9ece1781 100644 --- a/apps/files_encryption/l10n/en_GB.json +++ b/apps/files_encryption/l10n/en_GB.json @@ -11,8 +11,10 @@ "Please repeat the new recovery password" : "Please repeat the new recovery password", "Password successfully changed." : "Password changed successfully.", "Could not change the password. Maybe the old password was not correct." : "Could not change the password. Maybe the old password was incorrect.", + "Could not update the private key password." : "Could not update the private key password.", + "The old password was not correct, please try again." : "The old password was not correct, please try again.", + "The current log-in password was not correct, please try again." : "The current log-in password was not correct, please try again.", "Private key password successfully updated." : "Private key password updated successfully.", - "Could not update the private key password. Maybe the old password was not correct." : "Could not update the private key password. Maybe the old password was not correct.", "File recovery settings updated" : "File recovery settings updated", "Could not update file recovery" : "Could not update file recovery", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Encryption app not initialised! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialise the encryption app.", diff --git a/apps/files_encryption/l10n/es.js b/apps/files_encryption/l10n/es.js index 8101c9f4663..28f52666d45 100644 --- a/apps/files_encryption/l10n/es.js +++ b/apps/files_encryption/l10n/es.js @@ -13,8 +13,10 @@ OC.L10N.register( "Please repeat the new recovery password" : "Por favor repita su nueva contraseña de recuperacion", "Password successfully changed." : "Su contraseña ha sido cambiada", "Could not change the password. Maybe the old password was not correct." : "No se pudo cambiar la contraseña. Compruebe que la contraseña actual sea correcta.", + "Could not update the private key password." : "No se pudo actualizar la contraseña de clave privada.", + "The old password was not correct, please try again." : "La antigua contraseña no es correcta, por favor intente de nuevo.", + "The current log-in password was not correct, please try again." : "La contraseña de inicio de sesión actual no es correcto, por favor intente de nuevo.", "Private key password successfully updated." : "Contraseña de clave privada actualizada con éxito.", - "Could not update the private key password. Maybe the old password was not correct." : "No se pudo cambiar la contraseña. Puede que la contraseña antigua no sea correcta.", "File recovery settings updated" : "Opciones de recuperación de archivos actualizada", "Could not update file recovery" : "No se pudo actualizar la recuperación de archivos", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "¡La aplicación de cifrado no ha sido inicializada! Quizá fue restablecida durante tu sesión. Por favor intenta cerrar la sesión y volver a iniciarla para inicializar la aplicación de cifrado.", diff --git a/apps/files_encryption/l10n/es.json b/apps/files_encryption/l10n/es.json index 16cdc6b40a0..8bed1ad1aba 100644 --- a/apps/files_encryption/l10n/es.json +++ b/apps/files_encryption/l10n/es.json @@ -11,8 +11,10 @@ "Please repeat the new recovery password" : "Por favor repita su nueva contraseña de recuperacion", "Password successfully changed." : "Su contraseña ha sido cambiada", "Could not change the password. Maybe the old password was not correct." : "No se pudo cambiar la contraseña. Compruebe que la contraseña actual sea correcta.", + "Could not update the private key password." : "No se pudo actualizar la contraseña de clave privada.", + "The old password was not correct, please try again." : "La antigua contraseña no es correcta, por favor intente de nuevo.", + "The current log-in password was not correct, please try again." : "La contraseña de inicio de sesión actual no es correcto, por favor intente de nuevo.", "Private key password successfully updated." : "Contraseña de clave privada actualizada con éxito.", - "Could not update the private key password. Maybe the old password was not correct." : "No se pudo cambiar la contraseña. Puede que la contraseña antigua no sea correcta.", "File recovery settings updated" : "Opciones de recuperación de archivos actualizada", "Could not update file recovery" : "No se pudo actualizar la recuperación de archivos", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "¡La aplicación de cifrado no ha sido inicializada! Quizá fue restablecida durante tu sesión. Por favor intenta cerrar la sesión y volver a iniciarla para inicializar la aplicación de cifrado.", diff --git a/apps/files_encryption/l10n/es_AR.js b/apps/files_encryption/l10n/es_AR.js index 86ac5977f7f..bde0e920689 100644 --- a/apps/files_encryption/l10n/es_AR.js +++ b/apps/files_encryption/l10n/es_AR.js @@ -8,7 +8,6 @@ OC.L10N.register( "Password successfully changed." : "Tu contraseña fue cambiada", "Could not change the password. Maybe the old password was not correct." : "No se pudo cambiar la contraseña. Comprobá que la contraseña actual sea correcta.", "Private key password successfully updated." : "Contraseña de clave privada actualizada con éxito.", - "Could not update the private key password. Maybe the old password was not correct." : "No fue posible actualizar la contraseña de clave privada. Tal vez la contraseña anterior no es correcta.", "File recovery settings updated" : "Las opciones de recuperación de archivos fueron actualizadas", "Could not update file recovery" : "No fue posible actualizar la recuperación de archivos", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "¡La aplicación de encriptación no está inicializada! Es probable que la aplicación fue re-habilitada durante tu sesión. Intenta salir y iniciar sesión para volverla a iniciar.", diff --git a/apps/files_encryption/l10n/es_AR.json b/apps/files_encryption/l10n/es_AR.json index 07dab2694bd..6251abd7ec6 100644 --- a/apps/files_encryption/l10n/es_AR.json +++ b/apps/files_encryption/l10n/es_AR.json @@ -6,7 +6,6 @@ "Password successfully changed." : "Tu contraseña fue cambiada", "Could not change the password. Maybe the old password was not correct." : "No se pudo cambiar la contraseña. Comprobá que la contraseña actual sea correcta.", "Private key password successfully updated." : "Contraseña de clave privada actualizada con éxito.", - "Could not update the private key password. Maybe the old password was not correct." : "No fue posible actualizar la contraseña de clave privada. Tal vez la contraseña anterior no es correcta.", "File recovery settings updated" : "Las opciones de recuperación de archivos fueron actualizadas", "Could not update file recovery" : "No fue posible actualizar la recuperación de archivos", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "¡La aplicación de encriptación no está inicializada! Es probable que la aplicación fue re-habilitada durante tu sesión. Intenta salir y iniciar sesión para volverla a iniciar.", diff --git a/apps/files_encryption/l10n/es_MX.js b/apps/files_encryption/l10n/es_MX.js index 02af0608ab1..99a633c6e43 100644 --- a/apps/files_encryption/l10n/es_MX.js +++ b/apps/files_encryption/l10n/es_MX.js @@ -8,7 +8,6 @@ OC.L10N.register( "Password successfully changed." : "Su contraseña ha sido cambiada", "Could not change the password. Maybe the old password was not correct." : "No se pudo cambiar la contraseña. Compruebe que la contraseña actual sea correcta.", "Private key password successfully updated." : "Contraseña de clave privada actualizada con éxito.", - "Could not update the private key password. Maybe the old password was not correct." : "No se pudo cambiar la contraseña. Puede que la contraseña antigua no sea correcta.", "File recovery settings updated" : "Opciones de recuperación de archivos actualizada", "Could not update file recovery" : "No se pudo actualizar la recuperación de archivos", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "¡La aplicación de cifrado no ha sido inicializada! Quizá fue restablecida durante tu sesión. Por favor intenta cerrar la sesión y volver a iniciarla para inicializar la aplicación de cifrado.", diff --git a/apps/files_encryption/l10n/es_MX.json b/apps/files_encryption/l10n/es_MX.json index 1ff89da3d8f..fe257ee670a 100644 --- a/apps/files_encryption/l10n/es_MX.json +++ b/apps/files_encryption/l10n/es_MX.json @@ -6,7 +6,6 @@ "Password successfully changed." : "Su contraseña ha sido cambiada", "Could not change the password. Maybe the old password was not correct." : "No se pudo cambiar la contraseña. Compruebe que la contraseña actual sea correcta.", "Private key password successfully updated." : "Contraseña de clave privada actualizada con éxito.", - "Could not update the private key password. Maybe the old password was not correct." : "No se pudo cambiar la contraseña. Puede que la contraseña antigua no sea correcta.", "File recovery settings updated" : "Opciones de recuperación de archivos actualizada", "Could not update file recovery" : "No se pudo actualizar la recuperación de archivos", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "¡La aplicación de cifrado no ha sido inicializada! Quizá fue restablecida durante tu sesión. Por favor intenta cerrar la sesión y volver a iniciarla para inicializar la aplicación de cifrado.", diff --git a/apps/files_encryption/l10n/et_EE.js b/apps/files_encryption/l10n/et_EE.js index a4edf9950a6..93fa8084ff9 100644 --- a/apps/files_encryption/l10n/et_EE.js +++ b/apps/files_encryption/l10n/et_EE.js @@ -13,8 +13,10 @@ OC.L10N.register( "Please repeat the new recovery password" : "Palun korda uut taastevõtme parooli", "Password successfully changed." : "Parool edukalt vahetatud.", "Could not change the password. Maybe the old password was not correct." : "Ei suutnud vahetada parooli. Võib-olla on vana parool valesti sisestatud.", + "Could not update the private key password." : "Ei suutnud uuendada privaatse võtme parooli.", + "The old password was not correct, please try again." : "Vana parool polnud õige, palun proovi uuesti.", + "The current log-in password was not correct, please try again." : "Praeguse sisselogimise parool polnud õige, palun proovi uuesti.", "Private key password successfully updated." : "Privaatse võtme parool edukalt uuendatud.", - "Could not update the private key password. Maybe the old password was not correct." : "Ei suutnud uuendada privaatse võtme parooli. Võib-olla polnud vana parool õige.", "File recovery settings updated" : "Faili taaste seaded uuendatud", "Could not update file recovery" : "Ei suuda uuendada taastefaili", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Krüpteerimise rakend pole käivitatud. Võib-olla krüpteerimise rakend taaskäivitati sinu sessiooni kestel. Palun proovi logida välja ning uuesti sisse käivitamaks krüpteerimise rakendit.", diff --git a/apps/files_encryption/l10n/et_EE.json b/apps/files_encryption/l10n/et_EE.json index df58c8f11fb..873bc8945d7 100644 --- a/apps/files_encryption/l10n/et_EE.json +++ b/apps/files_encryption/l10n/et_EE.json @@ -11,8 +11,10 @@ "Please repeat the new recovery password" : "Palun korda uut taastevõtme parooli", "Password successfully changed." : "Parool edukalt vahetatud.", "Could not change the password. Maybe the old password was not correct." : "Ei suutnud vahetada parooli. Võib-olla on vana parool valesti sisestatud.", + "Could not update the private key password." : "Ei suutnud uuendada privaatse võtme parooli.", + "The old password was not correct, please try again." : "Vana parool polnud õige, palun proovi uuesti.", + "The current log-in password was not correct, please try again." : "Praeguse sisselogimise parool polnud õige, palun proovi uuesti.", "Private key password successfully updated." : "Privaatse võtme parool edukalt uuendatud.", - "Could not update the private key password. Maybe the old password was not correct." : "Ei suutnud uuendada privaatse võtme parooli. Võib-olla polnud vana parool õige.", "File recovery settings updated" : "Faili taaste seaded uuendatud", "Could not update file recovery" : "Ei suuda uuendada taastefaili", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Krüpteerimise rakend pole käivitatud. Võib-olla krüpteerimise rakend taaskäivitati sinu sessiooni kestel. Palun proovi logida välja ning uuesti sisse käivitamaks krüpteerimise rakendit.", diff --git a/apps/files_encryption/l10n/eu.js b/apps/files_encryption/l10n/eu.js index 84d446313a1..d5c23d016f0 100644 --- a/apps/files_encryption/l10n/eu.js +++ b/apps/files_encryption/l10n/eu.js @@ -14,7 +14,6 @@ OC.L10N.register( "Password successfully changed." : "Pasahitza behar bezala aldatu da.", "Could not change the password. Maybe the old password was not correct." : "Ezin izan da pasahitza aldatu. Agian pasahitz zaharra okerrekoa da.", "Private key password successfully updated." : "Gako pasahitz pribatu behar bezala eguneratu da.", - "Could not update the private key password. Maybe the old password was not correct." : "Ezin izan da gako pribatu pasahitza eguneratu. Agian pasahitz zaharra okerrekoa da.", "File recovery settings updated" : "Fitxategi berreskuratze ezarpenak eguneratuak", "Could not update file recovery" : "Ezin da fitxategi berreskuratzea eguneratu", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Enkriptazio aplikazioa ez dago hasieratuta! Agian aplikazioa birgaitu egin da zure saioa bitartean. Mesdez atear eta sartu berriz enkriptazio aplikazioa hasierarazteko.", diff --git a/apps/files_encryption/l10n/eu.json b/apps/files_encryption/l10n/eu.json index c18cebad99d..3b932fd769e 100644 --- a/apps/files_encryption/l10n/eu.json +++ b/apps/files_encryption/l10n/eu.json @@ -12,7 +12,6 @@ "Password successfully changed." : "Pasahitza behar bezala aldatu da.", "Could not change the password. Maybe the old password was not correct." : "Ezin izan da pasahitza aldatu. Agian pasahitz zaharra okerrekoa da.", "Private key password successfully updated." : "Gako pasahitz pribatu behar bezala eguneratu da.", - "Could not update the private key password. Maybe the old password was not correct." : "Ezin izan da gako pribatu pasahitza eguneratu. Agian pasahitz zaharra okerrekoa da.", "File recovery settings updated" : "Fitxategi berreskuratze ezarpenak eguneratuak", "Could not update file recovery" : "Ezin da fitxategi berreskuratzea eguneratu", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Enkriptazio aplikazioa ez dago hasieratuta! Agian aplikazioa birgaitu egin da zure saioa bitartean. Mesdez atear eta sartu berriz enkriptazio aplikazioa hasierarazteko.", diff --git a/apps/files_encryption/l10n/fa.js b/apps/files_encryption/l10n/fa.js index 541b19c695c..037dc26e681 100644 --- a/apps/files_encryption/l10n/fa.js +++ b/apps/files_encryption/l10n/fa.js @@ -8,7 +8,6 @@ OC.L10N.register( "Password successfully changed." : "رمزعبور با موفقیت تغییر یافت.", "Could not change the password. Maybe the old password was not correct." : "رمزعبور را نمیتواند تغییر دهد. شاید رمزعبورقدیمی صحیح نمی باشد.", "Private key password successfully updated." : "رمزعبور کلید خصوصی با موفقیت به روز شد.", - "Could not update the private key password. Maybe the old password was not correct." : "رمزعبور کلید خصوصی را نمی تواند به روز کند. شاید رمزعبور قدیمی صحیح نمی باشد.", "File recovery settings updated" : "تنظیمات بازیابی فایل به روز شده است.", "Could not update file recovery" : "به روز رسانی بازیابی فایل را نمی تواند انجام دهد.", "Missing requirements." : "نیازمندی های گمشده", diff --git a/apps/files_encryption/l10n/fa.json b/apps/files_encryption/l10n/fa.json index 30b0faa5ec8..0c89886d412 100644 --- a/apps/files_encryption/l10n/fa.json +++ b/apps/files_encryption/l10n/fa.json @@ -6,7 +6,6 @@ "Password successfully changed." : "رمزعبور با موفقیت تغییر یافت.", "Could not change the password. Maybe the old password was not correct." : "رمزعبور را نمیتواند تغییر دهد. شاید رمزعبورقدیمی صحیح نمی باشد.", "Private key password successfully updated." : "رمزعبور کلید خصوصی با موفقیت به روز شد.", - "Could not update the private key password. Maybe the old password was not correct." : "رمزعبور کلید خصوصی را نمی تواند به روز کند. شاید رمزعبور قدیمی صحیح نمی باشد.", "File recovery settings updated" : "تنظیمات بازیابی فایل به روز شده است.", "Could not update file recovery" : "به روز رسانی بازیابی فایل را نمی تواند انجام دهد.", "Missing requirements." : "نیازمندی های گمشده", diff --git a/apps/files_encryption/l10n/fi_FI.js b/apps/files_encryption/l10n/fi_FI.js index bf1afbb1129..aff16f1fcdd 100644 --- a/apps/files_encryption/l10n/fi_FI.js +++ b/apps/files_encryption/l10n/fi_FI.js @@ -5,9 +5,11 @@ OC.L10N.register( "Recovery key successfully enabled" : "Palautusavain kytketty päälle onnistuneesti", "Password successfully changed." : "Salasana vaihdettiin onnistuneesti.", "Could not change the password. Maybe the old password was not correct." : "Salasanan vaihto epäonnistui. Kenties vanha salasana oli väärin.", + "The old password was not correct, please try again." : "Vanha salasana oli väärin, yritä uudelleen.", "Private key password successfully updated." : "Yksityisen avaimen salasana päivitetty onnistuneesti.", "File recovery settings updated" : "Tiedostopalautuksen asetukset päivitetty", "Unknown error. Please check your system settings or contact your administrator" : "Tuntematon virhe. Tarkista järjestelmän asetukset tai ole yhteydessä ylläpitäjään.", + "Missing requirements." : "Puuttuvat vaatimukset.", "Following users are not set up for encryption:" : "Seuraavat käyttäjät eivät ole määrittäneet salausta:", "Initial encryption started... This can take some time. Please wait." : "Ensimmäinen salauskerta käynnistetty... Tämä saattaa kestää hetken.", "Initial encryption running... Please try again later." : "Ensimmäinen salauskerta on meneillään... Yritä myöhemmin uudelleen.", @@ -25,8 +27,8 @@ OC.L10N.register( "Repeat New Recovery key password" : "Toista uusi palautusavaimen salasana", "Change Password" : "Vaihda salasana", " If you don't remember your old password you can ask your administrator to recover your files." : "Jos et muista vanhaa salasanaasi, voit pyytää ylläpitäjää palauttamaan tiedostosi.", - "Old log-in password" : "Vanha kirjautumis-salasana", - "Current log-in password" : "Nykyinen kirjautumis-salasana", + "Old log-in password" : "Vanha kirjautumissalasana", + "Current log-in password" : "Nykyinen kirjautumissalasana", "Update Private Key Password" : "Päivitä yksityisen avaimen salasana", "Enable password recovery:" : "Ota salasanan palautus käyttöön:" }, diff --git a/apps/files_encryption/l10n/fi_FI.json b/apps/files_encryption/l10n/fi_FI.json index 2b91a4388d0..348f8aeb1fe 100644 --- a/apps/files_encryption/l10n/fi_FI.json +++ b/apps/files_encryption/l10n/fi_FI.json @@ -3,9 +3,11 @@ "Recovery key successfully enabled" : "Palautusavain kytketty päälle onnistuneesti", "Password successfully changed." : "Salasana vaihdettiin onnistuneesti.", "Could not change the password. Maybe the old password was not correct." : "Salasanan vaihto epäonnistui. Kenties vanha salasana oli väärin.", + "The old password was not correct, please try again." : "Vanha salasana oli väärin, yritä uudelleen.", "Private key password successfully updated." : "Yksityisen avaimen salasana päivitetty onnistuneesti.", "File recovery settings updated" : "Tiedostopalautuksen asetukset päivitetty", "Unknown error. Please check your system settings or contact your administrator" : "Tuntematon virhe. Tarkista järjestelmän asetukset tai ole yhteydessä ylläpitäjään.", + "Missing requirements." : "Puuttuvat vaatimukset.", "Following users are not set up for encryption:" : "Seuraavat käyttäjät eivät ole määrittäneet salausta:", "Initial encryption started... This can take some time. Please wait." : "Ensimmäinen salauskerta käynnistetty... Tämä saattaa kestää hetken.", "Initial encryption running... Please try again later." : "Ensimmäinen salauskerta on meneillään... Yritä myöhemmin uudelleen.", @@ -23,8 +25,8 @@ "Repeat New Recovery key password" : "Toista uusi palautusavaimen salasana", "Change Password" : "Vaihda salasana", " If you don't remember your old password you can ask your administrator to recover your files." : "Jos et muista vanhaa salasanaasi, voit pyytää ylläpitäjää palauttamaan tiedostosi.", - "Old log-in password" : "Vanha kirjautumis-salasana", - "Current log-in password" : "Nykyinen kirjautumis-salasana", + "Old log-in password" : "Vanha kirjautumissalasana", + "Current log-in password" : "Nykyinen kirjautumissalasana", "Update Private Key Password" : "Päivitä yksityisen avaimen salasana", "Enable password recovery:" : "Ota salasanan palautus käyttöön:" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/files_encryption/l10n/fr.js b/apps/files_encryption/l10n/fr.js index 68d07143f73..b5bcaff19c2 100644 --- a/apps/files_encryption/l10n/fr.js +++ b/apps/files_encryption/l10n/fr.js @@ -11,10 +11,12 @@ OC.L10N.register( "Please provide the old recovery password" : "Veuillez entrer l'ancien mot de passe de récupération", "Please provide a new recovery password" : "Veuillez entrer un nouveau mot de passe de récupération", "Please repeat the new recovery password" : "Veuillez répéter le nouveau mot de passe de récupération", - "Password successfully changed." : "Mot de passe changé avec succès ", - "Could not change the password. Maybe the old password was not correct." : "Ne peut pas changer le mot de passe. L'ancien mot de passe est peut-être incorrect.", + "Password successfully changed." : "Mot de passe changé avec succès.", + "Could not change the password. Maybe the old password was not correct." : "Erreur lors du changement de mot de passe. L'ancien mot de passe est peut-être incorrect.", + "Could not update the private key password." : "Impossible de mettre à jour le mot de passe de la clé privée.", + "The old password was not correct, please try again." : "L'ancien mot de passe est incorrect. Veuillez réessayer.", + "The current log-in password was not correct, please try again." : "Le mot de passe actuel n'est pas correct, veuillez réessayer.", "Private key password successfully updated." : "Mot de passe de la clé privé mis à jour avec succès.", - "Could not update the private key password. Maybe the old password was not correct." : "Impossible de mettre à jour le mot de passe de la clé privé. Peut-être que l'ancien mot de passe n'était pas correcte.", "File recovery settings updated" : "Paramètres de récupération de fichiers mis à jour", "Could not update file recovery" : "Ne peut pas remettre à jour les fichiers de récupération", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "L'application de chiffrement n'est pas initialisée ! Peut-être que cette application a été réactivée pendant votre session. Veuillez essayer de vous déconnecter et ensuite de vous reconnecter pour initialiser l'application de chiffrement.", @@ -32,8 +34,8 @@ OC.L10N.register( "Enable recovery key (allow to recover users files in case of password loss):" : "Activer la clef de récupération (permet de récupérer les fichiers des utilisateurs en cas de perte de mot de passe).", "Recovery key password" : "Mot de passe de la clef de récupération", "Repeat Recovery key password" : "Répétez le mot de passe de la clé de récupération", - "Enabled" : "Activer", - "Disabled" : "Désactiver", + "Enabled" : "Activé", + "Disabled" : "Désactivé", "Change recovery key password:" : "Modifier le mot de passe de la clef de récupération :", "Old Recovery key password" : "Ancien mot de passe de la clef de récupération", "New Recovery key password" : "Nouveau mot de passe de la clef de récupération", diff --git a/apps/files_encryption/l10n/fr.json b/apps/files_encryption/l10n/fr.json index 707583f7c80..24de660bb3c 100644 --- a/apps/files_encryption/l10n/fr.json +++ b/apps/files_encryption/l10n/fr.json @@ -9,10 +9,12 @@ "Please provide the old recovery password" : "Veuillez entrer l'ancien mot de passe de récupération", "Please provide a new recovery password" : "Veuillez entrer un nouveau mot de passe de récupération", "Please repeat the new recovery password" : "Veuillez répéter le nouveau mot de passe de récupération", - "Password successfully changed." : "Mot de passe changé avec succès ", - "Could not change the password. Maybe the old password was not correct." : "Ne peut pas changer le mot de passe. L'ancien mot de passe est peut-être incorrect.", + "Password successfully changed." : "Mot de passe changé avec succès.", + "Could not change the password. Maybe the old password was not correct." : "Erreur lors du changement de mot de passe. L'ancien mot de passe est peut-être incorrect.", + "Could not update the private key password." : "Impossible de mettre à jour le mot de passe de la clé privée.", + "The old password was not correct, please try again." : "L'ancien mot de passe est incorrect. Veuillez réessayer.", + "The current log-in password was not correct, please try again." : "Le mot de passe actuel n'est pas correct, veuillez réessayer.", "Private key password successfully updated." : "Mot de passe de la clé privé mis à jour avec succès.", - "Could not update the private key password. Maybe the old password was not correct." : "Impossible de mettre à jour le mot de passe de la clé privé. Peut-être que l'ancien mot de passe n'était pas correcte.", "File recovery settings updated" : "Paramètres de récupération de fichiers mis à jour", "Could not update file recovery" : "Ne peut pas remettre à jour les fichiers de récupération", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "L'application de chiffrement n'est pas initialisée ! Peut-être que cette application a été réactivée pendant votre session. Veuillez essayer de vous déconnecter et ensuite de vous reconnecter pour initialiser l'application de chiffrement.", @@ -30,8 +32,8 @@ "Enable recovery key (allow to recover users files in case of password loss):" : "Activer la clef de récupération (permet de récupérer les fichiers des utilisateurs en cas de perte de mot de passe).", "Recovery key password" : "Mot de passe de la clef de récupération", "Repeat Recovery key password" : "Répétez le mot de passe de la clé de récupération", - "Enabled" : "Activer", - "Disabled" : "Désactiver", + "Enabled" : "Activé", + "Disabled" : "Désactivé", "Change recovery key password:" : "Modifier le mot de passe de la clef de récupération :", "Old Recovery key password" : "Ancien mot de passe de la clef de récupération", "New Recovery key password" : "Nouveau mot de passe de la clef de récupération", diff --git a/apps/files_encryption/l10n/gl.js b/apps/files_encryption/l10n/gl.js index c04a1c1a5ea..d32e9f600fb 100644 --- a/apps/files_encryption/l10n/gl.js +++ b/apps/files_encryption/l10n/gl.js @@ -14,7 +14,6 @@ OC.L10N.register( "Password successfully changed." : "O contrasinal foi cambiado satisfactoriamente", "Could not change the password. Maybe the old password was not correct." : "Non foi posíbel cambiar o contrasinal. Probabelmente o contrasinal antigo non é o correcto.", "Private key password successfully updated." : "A chave privada foi actualizada correctamente.", - "Could not update the private key password. Maybe the old password was not correct." : "Non foi posíbel actualizar o contrasinal da chave privada. É probábel que o contrasinal antigo non sexa correcto.", "File recovery settings updated" : "Actualizouse o ficheiro de axustes de recuperación", "Could not update file recovery" : "Non foi posíbel actualizar o ficheiro de recuperación", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Non se iniciou a aplicación de cifrado! Quizais volva a activarse durante a sesión. Tente pechar a sesión e volver iniciala para que tamén se inicie a aplicación de cifrado.", diff --git a/apps/files_encryption/l10n/gl.json b/apps/files_encryption/l10n/gl.json index 4583f25da1a..8ffcafe8e88 100644 --- a/apps/files_encryption/l10n/gl.json +++ b/apps/files_encryption/l10n/gl.json @@ -12,7 +12,6 @@ "Password successfully changed." : "O contrasinal foi cambiado satisfactoriamente", "Could not change the password. Maybe the old password was not correct." : "Non foi posíbel cambiar o contrasinal. Probabelmente o contrasinal antigo non é o correcto.", "Private key password successfully updated." : "A chave privada foi actualizada correctamente.", - "Could not update the private key password. Maybe the old password was not correct." : "Non foi posíbel actualizar o contrasinal da chave privada. É probábel que o contrasinal antigo non sexa correcto.", "File recovery settings updated" : "Actualizouse o ficheiro de axustes de recuperación", "Could not update file recovery" : "Non foi posíbel actualizar o ficheiro de recuperación", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Non se iniciou a aplicación de cifrado! Quizais volva a activarse durante a sesión. Tente pechar a sesión e volver iniciala para que tamén se inicie a aplicación de cifrado.", diff --git a/apps/files_encryption/l10n/hr.js b/apps/files_encryption/l10n/hr.js index 7160e72ac23..f20ce757c05 100644 --- a/apps/files_encryption/l10n/hr.js +++ b/apps/files_encryption/l10n/hr.js @@ -8,7 +8,6 @@ OC.L10N.register( "Password successfully changed." : "Lozinka uspješno promijenjena.", "Could not change the password. Maybe the old password was not correct." : "Lozinku nije moguće promijeniti. Možda je stara lozinka bila neispravna.", "Private key password successfully updated." : "Lozinka privatnog ključa uspješno ažurirana.", - "Could not update the private key password. Maybe the old password was not correct." : "Lozinku privatnog ključa nije moguće promijeniti. Možda stara je stara lozinka bila neispravna.", "File recovery settings updated" : "Ažurirane postavke za oporavak datoteke", "Could not update file recovery" : "Oporavak datoteke nije moguće ažurirati", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Aplikacija šifriranja nije inicijalizirana! Možda je aplikacija šifriranja bila reaktivirana tijekom vaše sesije.Da biste inicijalizirali aplikaciju šifriranja, molimo, pokušajte se odjaviti i ponovno prijaviti.", diff --git a/apps/files_encryption/l10n/hr.json b/apps/files_encryption/l10n/hr.json index e375f3f6314..04e664336d3 100644 --- a/apps/files_encryption/l10n/hr.json +++ b/apps/files_encryption/l10n/hr.json @@ -6,7 +6,6 @@ "Password successfully changed." : "Lozinka uspješno promijenjena.", "Could not change the password. Maybe the old password was not correct." : "Lozinku nije moguće promijeniti. Možda je stara lozinka bila neispravna.", "Private key password successfully updated." : "Lozinka privatnog ključa uspješno ažurirana.", - "Could not update the private key password. Maybe the old password was not correct." : "Lozinku privatnog ključa nije moguće promijeniti. Možda stara je stara lozinka bila neispravna.", "File recovery settings updated" : "Ažurirane postavke za oporavak datoteke", "Could not update file recovery" : "Oporavak datoteke nije moguće ažurirati", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Aplikacija šifriranja nije inicijalizirana! Možda je aplikacija šifriranja bila reaktivirana tijekom vaše sesije.Da biste inicijalizirali aplikaciju šifriranja, molimo, pokušajte se odjaviti i ponovno prijaviti.", diff --git a/apps/files_encryption/l10n/hu_HU.js b/apps/files_encryption/l10n/hu_HU.js index 349d7cf6e3e..f30194e0578 100644 --- a/apps/files_encryption/l10n/hu_HU.js +++ b/apps/files_encryption/l10n/hu_HU.js @@ -8,7 +8,6 @@ OC.L10N.register( "Password successfully changed." : "A jelszót sikeresen megváltoztattuk.", "Could not change the password. Maybe the old password was not correct." : "A jelszót nem lehet megváltoztatni! Lehet, hogy hibás volt a régi jelszó.", "Private key password successfully updated." : "A személyes kulcsának jelszava frissítésre került.", - "Could not update the private key password. Maybe the old password was not correct." : "A személyes kulcsa jelszavát nem lehetett frissíteni. Lehet, hogy hibás volt a régi jelszó.", "File recovery settings updated" : "A fájlhelyreállítási beállítások frissültek", "Could not update file recovery" : "A fájlhelyreállítás nem frissíthető", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "A titkosítási modul nincs elindítva! Talán a munkafolyamat közben került engedélyezésre. Kérjük jelentkezzen ki majd ismét jelentkezzen be, hogy a titkosítási modul megfelelően elinduljon!", diff --git a/apps/files_encryption/l10n/hu_HU.json b/apps/files_encryption/l10n/hu_HU.json index e94c192180a..510bf199284 100644 --- a/apps/files_encryption/l10n/hu_HU.json +++ b/apps/files_encryption/l10n/hu_HU.json @@ -6,7 +6,6 @@ "Password successfully changed." : "A jelszót sikeresen megváltoztattuk.", "Could not change the password. Maybe the old password was not correct." : "A jelszót nem lehet megváltoztatni! Lehet, hogy hibás volt a régi jelszó.", "Private key password successfully updated." : "A személyes kulcsának jelszava frissítésre került.", - "Could not update the private key password. Maybe the old password was not correct." : "A személyes kulcsa jelszavát nem lehetett frissíteni. Lehet, hogy hibás volt a régi jelszó.", "File recovery settings updated" : "A fájlhelyreállítási beállítások frissültek", "Could not update file recovery" : "A fájlhelyreállítás nem frissíthető", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "A titkosítási modul nincs elindítva! Talán a munkafolyamat közben került engedélyezésre. Kérjük jelentkezzen ki majd ismét jelentkezzen be, hogy a titkosítási modul megfelelően elinduljon!", diff --git a/apps/files_encryption/l10n/id.js b/apps/files_encryption/l10n/id.js index 7137d13cb9f..805d7878436 100644 --- a/apps/files_encryption/l10n/id.js +++ b/apps/files_encryption/l10n/id.js @@ -14,7 +14,6 @@ OC.L10N.register( "Password successfully changed." : "Sandi berhasil diubah", "Could not change the password. Maybe the old password was not correct." : "Tidak dapat mengubah sandi. Kemungkinan sandi lama yang dimasukkan salah.", "Private key password successfully updated." : "Sandi kunci privat berhasil diperbarui.", - "Could not update the private key password. Maybe the old password was not correct." : "Tidak dapat memperbarui sandi kunci privat. Kemungkinan sandi lama yang Anda masukkan salah.", "File recovery settings updated" : "Pengaturan pemulihan berkas diperbarui", "Could not update file recovery" : "Tidak dapat memperbarui pemulihan berkas", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Aplikasi enkripsi tidak dimulai! Kemungkinan aplikasi enkripsi telah diaktifkan ulang saat sesi Anda. Silakan coba untuk keluar dan kembali lagi untuk memulai aplikasi enkripsi.", diff --git a/apps/files_encryption/l10n/id.json b/apps/files_encryption/l10n/id.json index eb5361d4b66..826ebdba373 100644 --- a/apps/files_encryption/l10n/id.json +++ b/apps/files_encryption/l10n/id.json @@ -12,7 +12,6 @@ "Password successfully changed." : "Sandi berhasil diubah", "Could not change the password. Maybe the old password was not correct." : "Tidak dapat mengubah sandi. Kemungkinan sandi lama yang dimasukkan salah.", "Private key password successfully updated." : "Sandi kunci privat berhasil diperbarui.", - "Could not update the private key password. Maybe the old password was not correct." : "Tidak dapat memperbarui sandi kunci privat. Kemungkinan sandi lama yang Anda masukkan salah.", "File recovery settings updated" : "Pengaturan pemulihan berkas diperbarui", "Could not update file recovery" : "Tidak dapat memperbarui pemulihan berkas", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Aplikasi enkripsi tidak dimulai! Kemungkinan aplikasi enkripsi telah diaktifkan ulang saat sesi Anda. Silakan coba untuk keluar dan kembali lagi untuk memulai aplikasi enkripsi.", diff --git a/apps/files_encryption/l10n/it.js b/apps/files_encryption/l10n/it.js index e71abc94675..d253dae8f68 100644 --- a/apps/files_encryption/l10n/it.js +++ b/apps/files_encryption/l10n/it.js @@ -13,8 +13,10 @@ OC.L10N.register( "Please repeat the new recovery password" : "Ripeti la nuova password di recupero", "Password successfully changed." : "Password modificata correttamente.", "Could not change the password. Maybe the old password was not correct." : "Impossibile cambiare la password. Forse la vecchia password non era corretta.", + "Could not update the private key password." : "Impossibile aggiornare la password della chiave privata.", + "The old password was not correct, please try again." : "La vecchia password non era corretta, prova di nuovo.", + "The current log-in password was not correct, please try again." : "La password di accesso attuale non era corretta, prova ancora.", "Private key password successfully updated." : "Password della chiave privata aggiornata correttamente.", - "Could not update the private key password. Maybe the old password was not correct." : "Impossibile aggiornare la password della chiave privata. Forse la vecchia password non era corretta.", "File recovery settings updated" : "Impostazioni di ripristino dei file aggiornate", "Could not update file recovery" : "Impossibile aggiornare il ripristino dei file", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Applicazione di cifratura non inizializzata. Forse l'applicazione è stata riabilitata durante la tua sessione. Prova a disconnetterti e ad effettuare nuovamente l'accesso per inizializzarla.", diff --git a/apps/files_encryption/l10n/it.json b/apps/files_encryption/l10n/it.json index d051a2cfc98..d5257715faa 100644 --- a/apps/files_encryption/l10n/it.json +++ b/apps/files_encryption/l10n/it.json @@ -11,8 +11,10 @@ "Please repeat the new recovery password" : "Ripeti la nuova password di recupero", "Password successfully changed." : "Password modificata correttamente.", "Could not change the password. Maybe the old password was not correct." : "Impossibile cambiare la password. Forse la vecchia password non era corretta.", + "Could not update the private key password." : "Impossibile aggiornare la password della chiave privata.", + "The old password was not correct, please try again." : "La vecchia password non era corretta, prova di nuovo.", + "The current log-in password was not correct, please try again." : "La password di accesso attuale non era corretta, prova ancora.", "Private key password successfully updated." : "Password della chiave privata aggiornata correttamente.", - "Could not update the private key password. Maybe the old password was not correct." : "Impossibile aggiornare la password della chiave privata. Forse la vecchia password non era corretta.", "File recovery settings updated" : "Impostazioni di ripristino dei file aggiornate", "Could not update file recovery" : "Impossibile aggiornare il ripristino dei file", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Applicazione di cifratura non inizializzata. Forse l'applicazione è stata riabilitata durante la tua sessione. Prova a disconnetterti e ad effettuare nuovamente l'accesso per inizializzarla.", diff --git a/apps/files_encryption/l10n/ja.js b/apps/files_encryption/l10n/ja.js index e4ca38f822b..a21870de7c2 100644 --- a/apps/files_encryption/l10n/ja.js +++ b/apps/files_encryption/l10n/ja.js @@ -13,8 +13,10 @@ OC.L10N.register( "Please repeat the new recovery password" : "新しい復旧キーのパスワードをもう一度入力", "Password successfully changed." : "パスワードを変更できました。", "Could not change the password. Maybe the old password was not correct." : "パスワードを変更できませんでした。古いパスワードが間違っているかもしれません。", + "Could not update the private key password." : "秘密鍵のパスワードを更新できませんでした。", + "The old password was not correct, please try again." : "古いパスワードが一致しませんでした。もう一度入力してください。", + "The current log-in password was not correct, please try again." : "ログインパスワードが一致しませんでした。もう一度入力してください。", "Private key password successfully updated." : "秘密鍵のパスワードが正常に更新されました。", - "Could not update the private key password. Maybe the old password was not correct." : "秘密鍵のパスワードを更新できませんでした。古いパスワードが正確でない場合があります。", "File recovery settings updated" : "ファイルリカバリ設定を更新しました", "Could not update file recovery" : "ファイルリカバリを更新できませんでした", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "セッション中に暗号化アプリを再度有効にされたため、暗号化アプリが初期化されていません。暗号化アプリを初期化するため、ログアウトしてログインしなおしてください。", diff --git a/apps/files_encryption/l10n/ja.json b/apps/files_encryption/l10n/ja.json index 471bf314442..d689ca954d0 100644 --- a/apps/files_encryption/l10n/ja.json +++ b/apps/files_encryption/l10n/ja.json @@ -11,8 +11,10 @@ "Please repeat the new recovery password" : "新しい復旧キーのパスワードをもう一度入力", "Password successfully changed." : "パスワードを変更できました。", "Could not change the password. Maybe the old password was not correct." : "パスワードを変更できませんでした。古いパスワードが間違っているかもしれません。", + "Could not update the private key password." : "秘密鍵のパスワードを更新できませんでした。", + "The old password was not correct, please try again." : "古いパスワードが一致しませんでした。もう一度入力してください。", + "The current log-in password was not correct, please try again." : "ログインパスワードが一致しませんでした。もう一度入力してください。", "Private key password successfully updated." : "秘密鍵のパスワードが正常に更新されました。", - "Could not update the private key password. Maybe the old password was not correct." : "秘密鍵のパスワードを更新できませんでした。古いパスワードが正確でない場合があります。", "File recovery settings updated" : "ファイルリカバリ設定を更新しました", "Could not update file recovery" : "ファイルリカバリを更新できませんでした", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "セッション中に暗号化アプリを再度有効にされたため、暗号化アプリが初期化されていません。暗号化アプリを初期化するため、ログアウトしてログインしなおしてください。", diff --git a/apps/files_encryption/l10n/ko.js b/apps/files_encryption/l10n/ko.js index a994dc7d339..223fe99f990 100644 --- a/apps/files_encryption/l10n/ko.js +++ b/apps/files_encryption/l10n/ko.js @@ -8,7 +8,6 @@ OC.L10N.register( "Password successfully changed." : "암호가 성공적으로 변경되었습니다", "Could not change the password. Maybe the old password was not correct." : "암호를 변경할 수 없습니다. 예전 암호가 정확하지 않은 것 같습니다.", "Private key password successfully updated." : "개인 키 암호가 성공적으로 업데이트 됨.", - "Could not update the private key password. Maybe the old password was not correct." : "개인 키 암호를 업데이트할 수 없습니다. 이전 암호가 올바르지 않은 것 같습니다.", "File recovery settings updated" : "파일 복구 설정 업데이트됨", "Could not update file recovery" : "파일 복구를 업데이트할 수 없습니다", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "암호화 앱이 초기화되지 않았습니다! 암호화 앱이 다시 활성화된 것 같습니다. 암호화 앱을 초기화하려면 로그아웃했다 다시 로그인하십시오.", diff --git a/apps/files_encryption/l10n/ko.json b/apps/files_encryption/l10n/ko.json index 3cc8ec06b06..bb5ff7df70c 100644 --- a/apps/files_encryption/l10n/ko.json +++ b/apps/files_encryption/l10n/ko.json @@ -6,7 +6,6 @@ "Password successfully changed." : "암호가 성공적으로 변경되었습니다", "Could not change the password. Maybe the old password was not correct." : "암호를 변경할 수 없습니다. 예전 암호가 정확하지 않은 것 같습니다.", "Private key password successfully updated." : "개인 키 암호가 성공적으로 업데이트 됨.", - "Could not update the private key password. Maybe the old password was not correct." : "개인 키 암호를 업데이트할 수 없습니다. 이전 암호가 올바르지 않은 것 같습니다.", "File recovery settings updated" : "파일 복구 설정 업데이트됨", "Could not update file recovery" : "파일 복구를 업데이트할 수 없습니다", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "암호화 앱이 초기화되지 않았습니다! 암호화 앱이 다시 활성화된 것 같습니다. 암호화 앱을 초기화하려면 로그아웃했다 다시 로그인하십시오.", diff --git a/apps/files_encryption/l10n/lt_LT.js b/apps/files_encryption/l10n/lt_LT.js index eebfcedaf0b..afcc478e34c 100644 --- a/apps/files_encryption/l10n/lt_LT.js +++ b/apps/files_encryption/l10n/lt_LT.js @@ -8,7 +8,6 @@ OC.L10N.register( "Password successfully changed." : "Slaptažodis sėkmingai pakeistas", "Could not change the password. Maybe the old password was not correct." : "Slaptažodis nebuvo pakeistas. Gali būti, kad buvo neteisingai suvestas senasis.", "Private key password successfully updated." : "Privataus rakto slaptažodis buvo sėkmingai atnaujintas.", - "Could not update the private key password. Maybe the old password was not correct." : "Nepavyko atnaujinti privataus rakto slaptažodžio. Gali būti, kad buvo neteisingai suvestas senasis.", "File recovery settings updated" : "Failų atkūrimo nustatymai pakeisti", "Could not update file recovery" : "Neišėjo atnaujinti failų atkūrimo", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Šifravimo programa nepaleista! Galbūt šifravimo programa buvo įjungta dar kartą Jūsų sesijos metu. Prašome atsijungti ir vėl prisijungti, kad paleisti šifravimo programą.", diff --git a/apps/files_encryption/l10n/lt_LT.json b/apps/files_encryption/l10n/lt_LT.json index c642bfd7528..c2ffc891638 100644 --- a/apps/files_encryption/l10n/lt_LT.json +++ b/apps/files_encryption/l10n/lt_LT.json @@ -6,7 +6,6 @@ "Password successfully changed." : "Slaptažodis sėkmingai pakeistas", "Could not change the password. Maybe the old password was not correct." : "Slaptažodis nebuvo pakeistas. Gali būti, kad buvo neteisingai suvestas senasis.", "Private key password successfully updated." : "Privataus rakto slaptažodis buvo sėkmingai atnaujintas.", - "Could not update the private key password. Maybe the old password was not correct." : "Nepavyko atnaujinti privataus rakto slaptažodžio. Gali būti, kad buvo neteisingai suvestas senasis.", "File recovery settings updated" : "Failų atkūrimo nustatymai pakeisti", "Could not update file recovery" : "Neišėjo atnaujinti failų atkūrimo", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Šifravimo programa nepaleista! Galbūt šifravimo programa buvo įjungta dar kartą Jūsų sesijos metu. Prašome atsijungti ir vėl prisijungti, kad paleisti šifravimo programą.", diff --git a/apps/files_encryption/l10n/nb_NO.js b/apps/files_encryption/l10n/nb_NO.js index 3e018cd76f2..f690a78e5f8 100644 --- a/apps/files_encryption/l10n/nb_NO.js +++ b/apps/files_encryption/l10n/nb_NO.js @@ -8,7 +8,6 @@ OC.L10N.register( "Password successfully changed." : "Passordet ble endret.", "Could not change the password. Maybe the old password was not correct." : "Klarte ikke å endre passordet. Kanskje gammelt passord ikke var korrekt.", "Private key password successfully updated." : "Passord for privat nøkkel ble oppdatert.", - "Could not update the private key password. Maybe the old password was not correct." : "Klarte ikke å oppdatere passord for privat nøkkel. Kanskje gammelt passord ikke var korrekt.", "File recovery settings updated" : "Innstillinger for gjenoppretting av filer ble oppdatert", "Could not update file recovery" : "Klarte ikke å oppdatere gjenoppretting av filer", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Krypterings-app ikke initialisert! Kanskje krypterings-appen ble aktivert på nytt i løpet av økten din. Prøv å logge ut og logge inn igjen for å initialisere krypterings-appen.", diff --git a/apps/files_encryption/l10n/nb_NO.json b/apps/files_encryption/l10n/nb_NO.json index ba3e2210a96..f525462cd74 100644 --- a/apps/files_encryption/l10n/nb_NO.json +++ b/apps/files_encryption/l10n/nb_NO.json @@ -6,7 +6,6 @@ "Password successfully changed." : "Passordet ble endret.", "Could not change the password. Maybe the old password was not correct." : "Klarte ikke å endre passordet. Kanskje gammelt passord ikke var korrekt.", "Private key password successfully updated." : "Passord for privat nøkkel ble oppdatert.", - "Could not update the private key password. Maybe the old password was not correct." : "Klarte ikke å oppdatere passord for privat nøkkel. Kanskje gammelt passord ikke var korrekt.", "File recovery settings updated" : "Innstillinger for gjenoppretting av filer ble oppdatert", "Could not update file recovery" : "Klarte ikke å oppdatere gjenoppretting av filer", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Krypterings-app ikke initialisert! Kanskje krypterings-appen ble aktivert på nytt i løpet av økten din. Prøv å logge ut og logge inn igjen for å initialisere krypterings-appen.", diff --git a/apps/files_encryption/l10n/nl.js b/apps/files_encryption/l10n/nl.js index 04b2c9e8175..4587f707f0a 100644 --- a/apps/files_encryption/l10n/nl.js +++ b/apps/files_encryption/l10n/nl.js @@ -13,8 +13,10 @@ OC.L10N.register( "Please repeat the new recovery password" : "Herhaal het nieuwe herstelwachtwoord", "Password successfully changed." : "Wachtwoord succesvol gewijzigd.", "Could not change the password. Maybe the old password was not correct." : "Kon wachtwoord niet wijzigen. Wellicht oude wachtwoord niet juist ingevoerd.", + "Could not update the private key password." : "Kon het wachtwoord van de privésleutel niet bijwerken.", + "The old password was not correct, please try again." : "Het oude wachtwoord was onjuist, probeer het opnieuw.", + "The current log-in password was not correct, please try again." : "Het huidige inlogwachtwoord was niet juist, probeer het opnieuw.", "Private key password successfully updated." : "Privésleutel succesvol bijgewerkt.", - "Could not update the private key password. Maybe the old password was not correct." : "Kon het wachtwoord van de privésleutel niet wijzigen. Misschien was het oude wachtwoord onjuist.", "File recovery settings updated" : "Bestandsherstel instellingen bijgewerkt", "Could not update file recovery" : "Kon bestandsherstel niet bijwerken", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Crypto app niet geïnitialiseerd. Misschien werd de crypto app geheractiveerd tijdens de sessie. Log uit en log daarna opnieuw in om de crypto app te initialiseren.", diff --git a/apps/files_encryption/l10n/nl.json b/apps/files_encryption/l10n/nl.json index 67f0d2e4c89..cd456faa614 100644 --- a/apps/files_encryption/l10n/nl.json +++ b/apps/files_encryption/l10n/nl.json @@ -11,8 +11,10 @@ "Please repeat the new recovery password" : "Herhaal het nieuwe herstelwachtwoord", "Password successfully changed." : "Wachtwoord succesvol gewijzigd.", "Could not change the password. Maybe the old password was not correct." : "Kon wachtwoord niet wijzigen. Wellicht oude wachtwoord niet juist ingevoerd.", + "Could not update the private key password." : "Kon het wachtwoord van de privésleutel niet bijwerken.", + "The old password was not correct, please try again." : "Het oude wachtwoord was onjuist, probeer het opnieuw.", + "The current log-in password was not correct, please try again." : "Het huidige inlogwachtwoord was niet juist, probeer het opnieuw.", "Private key password successfully updated." : "Privésleutel succesvol bijgewerkt.", - "Could not update the private key password. Maybe the old password was not correct." : "Kon het wachtwoord van de privésleutel niet wijzigen. Misschien was het oude wachtwoord onjuist.", "File recovery settings updated" : "Bestandsherstel instellingen bijgewerkt", "Could not update file recovery" : "Kon bestandsherstel niet bijwerken", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Crypto app niet geïnitialiseerd. Misschien werd de crypto app geheractiveerd tijdens de sessie. Log uit en log daarna opnieuw in om de crypto app te initialiseren.", diff --git a/apps/files_encryption/l10n/pl.js b/apps/files_encryption/l10n/pl.js index a0bccc8c9f2..29b67619139 100644 --- a/apps/files_encryption/l10n/pl.js +++ b/apps/files_encryption/l10n/pl.js @@ -2,14 +2,21 @@ OC.L10N.register( "files_encryption", { "Unknown error" : "Nieznany błąd", + "Missing recovery key password" : "Brakujące hasło klucza odzyskiwania", "Please repeat the recovery key password" : "Proszę powtórz nowe hasło klucza odzyskiwania", + "Repeated recovery key password does not match the provided recovery key password" : "Hasła klucza odzyskiwania nie zgadzają się", "Recovery key successfully enabled" : "Klucz odzyskiwania włączony", "Could not disable recovery key. Please check your recovery key password!" : "Nie można wyłączyć klucza odzyskiwania. Proszę sprawdzić swoje hasło odzyskiwania!", "Recovery key successfully disabled" : "Klucz odzyskiwania wyłączony", + "Please provide the old recovery password" : "Podaj stare hasło odzyskiwania", + "Please provide a new recovery password" : "Podaj nowe hasło odzyskiwania", + "Please repeat the new recovery password" : "Proszę powtórz nowe hasło odzyskiwania", "Password successfully changed." : "Zmiana hasła udana.", "Could not change the password. Maybe the old password was not correct." : "Nie można zmienić hasła. Może stare hasło nie było poprawne.", + "Could not update the private key password." : "Nie można zmienić hasła klucza prywatnego.", + "The old password was not correct, please try again." : "Stare hasło nie było poprawne. Spróbuj jeszcze raz.", + "The current log-in password was not correct, please try again." : "Obecne hasło logowania nie było poprawne. Spróbuj ponownie.", "Private key password successfully updated." : "Pomyślnie zaktualizowano hasło klucza prywatnego.", - "Could not update the private key password. Maybe the old password was not correct." : "Nie można zmienić prywatnego hasła. Może stare hasło nie było poprawne.", "File recovery settings updated" : "Ustawienia odzyskiwania plików zmienione", "Could not update file recovery" : "Nie można zmienić pliku odzyskiwania", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Szyfrowanie aplikacja nie została zainicjowane! Może szyfrowanie aplikacji zostało ponownie włączone podczas tej sesji. Spróbuj się wylogować i zalogować ponownie aby zainicjować szyfrowanie aplikacji.", diff --git a/apps/files_encryption/l10n/pl.json b/apps/files_encryption/l10n/pl.json index dd817a40542..8d70e50340e 100644 --- a/apps/files_encryption/l10n/pl.json +++ b/apps/files_encryption/l10n/pl.json @@ -1,13 +1,20 @@ { "translations": { "Unknown error" : "Nieznany błąd", + "Missing recovery key password" : "Brakujące hasło klucza odzyskiwania", "Please repeat the recovery key password" : "Proszę powtórz nowe hasło klucza odzyskiwania", + "Repeated recovery key password does not match the provided recovery key password" : "Hasła klucza odzyskiwania nie zgadzają się", "Recovery key successfully enabled" : "Klucz odzyskiwania włączony", "Could not disable recovery key. Please check your recovery key password!" : "Nie można wyłączyć klucza odzyskiwania. Proszę sprawdzić swoje hasło odzyskiwania!", "Recovery key successfully disabled" : "Klucz odzyskiwania wyłączony", + "Please provide the old recovery password" : "Podaj stare hasło odzyskiwania", + "Please provide a new recovery password" : "Podaj nowe hasło odzyskiwania", + "Please repeat the new recovery password" : "Proszę powtórz nowe hasło odzyskiwania", "Password successfully changed." : "Zmiana hasła udana.", "Could not change the password. Maybe the old password was not correct." : "Nie można zmienić hasła. Może stare hasło nie było poprawne.", + "Could not update the private key password." : "Nie można zmienić hasła klucza prywatnego.", + "The old password was not correct, please try again." : "Stare hasło nie było poprawne. Spróbuj jeszcze raz.", + "The current log-in password was not correct, please try again." : "Obecne hasło logowania nie było poprawne. Spróbuj ponownie.", "Private key password successfully updated." : "Pomyślnie zaktualizowano hasło klucza prywatnego.", - "Could not update the private key password. Maybe the old password was not correct." : "Nie można zmienić prywatnego hasła. Może stare hasło nie było poprawne.", "File recovery settings updated" : "Ustawienia odzyskiwania plików zmienione", "Could not update file recovery" : "Nie można zmienić pliku odzyskiwania", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Szyfrowanie aplikacja nie została zainicjowane! Może szyfrowanie aplikacji zostało ponownie włączone podczas tej sesji. Spróbuj się wylogować i zalogować ponownie aby zainicjować szyfrowanie aplikacji.", diff --git a/apps/files_encryption/l10n/pt_BR.js b/apps/files_encryption/l10n/pt_BR.js index 3849876d602..bd0c47ce98e 100644 --- a/apps/files_encryption/l10n/pt_BR.js +++ b/apps/files_encryption/l10n/pt_BR.js @@ -13,8 +13,10 @@ OC.L10N.register( "Please repeat the new recovery password" : "Por favor, repita a nova senha de recuperação", "Password successfully changed." : "Senha alterada com sucesso.", "Could not change the password. Maybe the old password was not correct." : "Não foi possível alterar a senha. Talvez a senha antiga não estava correta.", + "Could not update the private key password." : "Não foi possível atualizar a senha da chave privada.", + "The old password was not correct, please try again." : "A senha antiga não estava correta, por favor, tente novamente.", + "The current log-in password was not correct, please try again." : "A senha atual do log-in não estava correta, por favor, tente novamente.", "Private key password successfully updated." : "Senha de chave privada atualizada com sucesso.", - "Could not update the private key password. Maybe the old password was not correct." : "Não foi possível atualizar a senha de chave privada. Talvez a senha antiga esteja incorreta.", "File recovery settings updated" : "Configurações de recuperação de arquivo atualizado", "Could not update file recovery" : "Não foi possível atualizar a recuperação de arquivos", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Aplicativo de criptografia não foi inicializado! Talvez o aplicativo de criptografia tenha sido reativado durante essa sessão. Por favor, tente fazer logoff e login novamente para inicializar o aplicativo de criptografia.", diff --git a/apps/files_encryption/l10n/pt_BR.json b/apps/files_encryption/l10n/pt_BR.json index 6627951f8f0..aa9404beb68 100644 --- a/apps/files_encryption/l10n/pt_BR.json +++ b/apps/files_encryption/l10n/pt_BR.json @@ -11,8 +11,10 @@ "Please repeat the new recovery password" : "Por favor, repita a nova senha de recuperação", "Password successfully changed." : "Senha alterada com sucesso.", "Could not change the password. Maybe the old password was not correct." : "Não foi possível alterar a senha. Talvez a senha antiga não estava correta.", + "Could not update the private key password." : "Não foi possível atualizar a senha da chave privada.", + "The old password was not correct, please try again." : "A senha antiga não estava correta, por favor, tente novamente.", + "The current log-in password was not correct, please try again." : "A senha atual do log-in não estava correta, por favor, tente novamente.", "Private key password successfully updated." : "Senha de chave privada atualizada com sucesso.", - "Could not update the private key password. Maybe the old password was not correct." : "Não foi possível atualizar a senha de chave privada. Talvez a senha antiga esteja incorreta.", "File recovery settings updated" : "Configurações de recuperação de arquivo atualizado", "Could not update file recovery" : "Não foi possível atualizar a recuperação de arquivos", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Aplicativo de criptografia não foi inicializado! Talvez o aplicativo de criptografia tenha sido reativado durante essa sessão. Por favor, tente fazer logoff e login novamente para inicializar o aplicativo de criptografia.", diff --git a/apps/files_encryption/l10n/pt_PT.js b/apps/files_encryption/l10n/pt_PT.js index 3f785d9d29e..3a642a27cc4 100644 --- a/apps/files_encryption/l10n/pt_PT.js +++ b/apps/files_encryption/l10n/pt_PT.js @@ -1,9 +1,9 @@ OC.L10N.register( "files_encryption", { - "Unknown error" : "Erro Desconhecido", - "Missing recovery key password" : "Palavra-passe de recuperação em falta", - "Please repeat the recovery key password" : "Repita a palavra-passe de recuperação", + "Unknown error" : "Erro desconhecido", + "Missing recovery key password" : "Senha da chave de recuperação em falta", + "Please repeat the recovery key password" : "Por favor, insira a contrassenha da chave de recuperação", "Repeated recovery key password does not match the provided recovery key password" : "A palavra-passe de recuperação repetida não corresponde à palavra-passe fornecida", "Recovery key successfully enabled" : "A chave de recuperação foi ativada com sucesso", "Could not disable recovery key. Please check your recovery key password!" : "Não foi possível desativar a chave de recuperação. Por favor, verifique a senha da chave de recuperação.", @@ -13,8 +13,10 @@ OC.L10N.register( "Please repeat the new recovery password" : "Escreva de novo a nova palavra-passe de recuperação", "Password successfully changed." : "Senha alterada com sucesso.", "Could not change the password. Maybe the old password was not correct." : "Não foi possível alterar a senha. Possivelmente a senha antiga não está correta.", + "Could not update the private key password." : "Não foi possível atualizar a senha da chave privada.", + "The old password was not correct, please try again." : "A senha antiga não estava correta, por favor, tente de novo.", + "The current log-in password was not correct, please try again." : "A senha de iniciar a sessão atual não estava correta, por favor, tente de novo.", "Private key password successfully updated." : "A senha da chave privada foi atualizada com sucesso. ", - "Could not update the private key password. Maybe the old password was not correct." : "Não foi possível atualizar a senha da chave privada. A senha antiga poderia não estar correta.", "File recovery settings updated" : "As definições da recuperação de ficheiro foram atualizadas", "Could not update file recovery" : "Não foi possível atualizar a recuperação de ficheiro", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "A app de encriptação não foi inicializada! A app de encriptação poderá ter sido reativada durante a sua sessão. Por favor, tente terminar a sessão e iniciá-la de seguida para inicializar a app de encriptação.", diff --git a/apps/files_encryption/l10n/pt_PT.json b/apps/files_encryption/l10n/pt_PT.json index 40af81afcb4..f90e10625cc 100644 --- a/apps/files_encryption/l10n/pt_PT.json +++ b/apps/files_encryption/l10n/pt_PT.json @@ -1,7 +1,7 @@ { "translations": { - "Unknown error" : "Erro Desconhecido", - "Missing recovery key password" : "Palavra-passe de recuperação em falta", - "Please repeat the recovery key password" : "Repita a palavra-passe de recuperação", + "Unknown error" : "Erro desconhecido", + "Missing recovery key password" : "Senha da chave de recuperação em falta", + "Please repeat the recovery key password" : "Por favor, insira a contrassenha da chave de recuperação", "Repeated recovery key password does not match the provided recovery key password" : "A palavra-passe de recuperação repetida não corresponde à palavra-passe fornecida", "Recovery key successfully enabled" : "A chave de recuperação foi ativada com sucesso", "Could not disable recovery key. Please check your recovery key password!" : "Não foi possível desativar a chave de recuperação. Por favor, verifique a senha da chave de recuperação.", @@ -11,8 +11,10 @@ "Please repeat the new recovery password" : "Escreva de novo a nova palavra-passe de recuperação", "Password successfully changed." : "Senha alterada com sucesso.", "Could not change the password. Maybe the old password was not correct." : "Não foi possível alterar a senha. Possivelmente a senha antiga não está correta.", + "Could not update the private key password." : "Não foi possível atualizar a senha da chave privada.", + "The old password was not correct, please try again." : "A senha antiga não estava correta, por favor, tente de novo.", + "The current log-in password was not correct, please try again." : "A senha de iniciar a sessão atual não estava correta, por favor, tente de novo.", "Private key password successfully updated." : "A senha da chave privada foi atualizada com sucesso. ", - "Could not update the private key password. Maybe the old password was not correct." : "Não foi possível atualizar a senha da chave privada. A senha antiga poderia não estar correta.", "File recovery settings updated" : "As definições da recuperação de ficheiro foram atualizadas", "Could not update file recovery" : "Não foi possível atualizar a recuperação de ficheiro", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "A app de encriptação não foi inicializada! A app de encriptação poderá ter sido reativada durante a sua sessão. Por favor, tente terminar a sessão e iniciá-la de seguida para inicializar a app de encriptação.", diff --git a/apps/files_encryption/l10n/ro.js b/apps/files_encryption/l10n/ro.js index 822cc4be58d..91f657d18f0 100644 --- a/apps/files_encryption/l10n/ro.js +++ b/apps/files_encryption/l10n/ro.js @@ -8,7 +8,6 @@ OC.L10N.register( "Password successfully changed." : "Parola a fost modificată cu succes.", "Could not change the password. Maybe the old password was not correct." : "Parola nu a putut fi schimbata. Poate ca parola veche este incorecta.", "Private key password successfully updated." : "Cheia privata a fost actualizata cu succes", - "Could not update the private key password. Maybe the old password was not correct." : "Nu am putut actualiza parola pentru cheia privata. Poate ca parola veche este incorecta.", "File recovery settings updated" : "Setarile pentru recuperarea fisierelor au fost actualizate", "Could not update file recovery" : "Nu am putut actualiza recuperarea de fisiere", "Encryption" : "Încriptare", diff --git a/apps/files_encryption/l10n/ro.json b/apps/files_encryption/l10n/ro.json index 3ac528a60ce..3c32f040aec 100644 --- a/apps/files_encryption/l10n/ro.json +++ b/apps/files_encryption/l10n/ro.json @@ -6,7 +6,6 @@ "Password successfully changed." : "Parola a fost modificată cu succes.", "Could not change the password. Maybe the old password was not correct." : "Parola nu a putut fi schimbata. Poate ca parola veche este incorecta.", "Private key password successfully updated." : "Cheia privata a fost actualizata cu succes", - "Could not update the private key password. Maybe the old password was not correct." : "Nu am putut actualiza parola pentru cheia privata. Poate ca parola veche este incorecta.", "File recovery settings updated" : "Setarile pentru recuperarea fisierelor au fost actualizate", "Could not update file recovery" : "Nu am putut actualiza recuperarea de fisiere", "Encryption" : "Încriptare", diff --git a/apps/files_encryption/l10n/ru.js b/apps/files_encryption/l10n/ru.js index 2d035d75f5e..965f383691f 100644 --- a/apps/files_encryption/l10n/ru.js +++ b/apps/files_encryption/l10n/ru.js @@ -13,12 +13,14 @@ OC.L10N.register( "Please repeat the new recovery password" : "Пожалуйста, повторите новый пароль для восстановления", "Password successfully changed." : "Пароль изменен удачно.", "Could not change the password. Maybe the old password was not correct." : "Невозможно изменить пароль. Возможно старый пароль не был верен.", - "Private key password successfully updated." : "Пароль секретного ключа успешно обновлён.", - "Could not update the private key password. Maybe the old password was not correct." : "Невозможно обновить пароль от секретного ключа. Возможно, старый пароль указан неверно.", + "Could not update the private key password." : "Невозможно обновить пароль для закрытого ключа.", + "The old password was not correct, please try again." : "Старый пароль введён неверно. Пожалуйста повторите попытку.", + "The current log-in password was not correct, please try again." : "Текущий пароль для учётной записи введён неверно, пожалуйста повторите попытку.", + "Private key password successfully updated." : "Пароль закрытого ключа успешно обновлён.", "File recovery settings updated" : "Настройки файла восстановления обновлены", "Could not update file recovery" : "Невозможно обновить файл восстановления", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Приложение шифрации не инициализированно! Возможно приложение шифрации было реактивировано во время вашей сессии. Пожалуйста, попробуйте выйти и войти снова чтобы проинициализировать приложение шифрации.", - "Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "Ваш секретный ключ не действителен! Вероятно, ваш пароль был изменен вне %s (например, корпоративный каталог). Вы можете обновить секретный ключ в личных настройках на странице восстановления доступа к зашифрованным файлам. ", + "Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "Ваш закрытый ключ недействителен! Вероятно, ваш пароль был изменен вне %s (например, корпоративный каталог). Вы можете обновить закрытый ключ в личных настройках на странице восстановления доступа к зашифрованным файлам. ", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Не могу расшифровать файл, возможно это опубликованный файл. Пожалуйста, попросите владельца файла поделиться им с вами еще раз.", "Unknown error. Please check your system settings or contact your administrator" : "Неизвестная ошибка. Пожалуйста, проверьте системные настройки или свяжитесь с администратором", "Missing requirements." : "Требования отсутствуют.", @@ -39,12 +41,12 @@ OC.L10N.register( "New Recovery key password" : "Новый пароль для ключа восстановления", "Repeat New Recovery key password" : "Повторите новый пароль восстановления ключа", "Change Password" : "Изменить пароль", - "Your private key password no longer matches your log-in password." : "Пароль от Вашего закрытого ключа больше не соответствует паролю от вашей учетной записи.", - "Set your old private key password to your current log-in password:" : "Замените старый пароль от закрытого ключа на новый пароль входа.", + "Your private key password no longer matches your log-in password." : "Пароль для Вашего закрытого ключа больше не соответствует паролю вашей учетной записи.", + "Set your old private key password to your current log-in password:" : "Замените старый пароль для закрытого ключа на текущий пароль учётной записи.", " If you don't remember your old password you can ask your administrator to recover your files." : "Если вы не помните свой старый пароль, вы можете попросить своего администратора восстановить ваши файлы", - "Old log-in password" : "Старый пароль для входа", - "Current log-in password" : "Текущйи пароль для входа", - "Update Private Key Password" : "Обновить пароль от секретного ключа", + "Old log-in password" : "Старый пароль для учётной записи", + "Current log-in password" : "Текущий пароль для учётной записи", + "Update Private Key Password" : "Обновить пароль для закрытого ключа", "Enable password recovery:" : "Включить восстановление пароля:", "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Включение этой опции позволит вам получить доступ к своим зашифрованным файлам в случае утери пароля" }, diff --git a/apps/files_encryption/l10n/ru.json b/apps/files_encryption/l10n/ru.json index ce66622d6be..7548e510c43 100644 --- a/apps/files_encryption/l10n/ru.json +++ b/apps/files_encryption/l10n/ru.json @@ -11,12 +11,14 @@ "Please repeat the new recovery password" : "Пожалуйста, повторите новый пароль для восстановления", "Password successfully changed." : "Пароль изменен удачно.", "Could not change the password. Maybe the old password was not correct." : "Невозможно изменить пароль. Возможно старый пароль не был верен.", - "Private key password successfully updated." : "Пароль секретного ключа успешно обновлён.", - "Could not update the private key password. Maybe the old password was not correct." : "Невозможно обновить пароль от секретного ключа. Возможно, старый пароль указан неверно.", + "Could not update the private key password." : "Невозможно обновить пароль для закрытого ключа.", + "The old password was not correct, please try again." : "Старый пароль введён неверно. Пожалуйста повторите попытку.", + "The current log-in password was not correct, please try again." : "Текущий пароль для учётной записи введён неверно, пожалуйста повторите попытку.", + "Private key password successfully updated." : "Пароль закрытого ключа успешно обновлён.", "File recovery settings updated" : "Настройки файла восстановления обновлены", "Could not update file recovery" : "Невозможно обновить файл восстановления", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Приложение шифрации не инициализированно! Возможно приложение шифрации было реактивировано во время вашей сессии. Пожалуйста, попробуйте выйти и войти снова чтобы проинициализировать приложение шифрации.", - "Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "Ваш секретный ключ не действителен! Вероятно, ваш пароль был изменен вне %s (например, корпоративный каталог). Вы можете обновить секретный ключ в личных настройках на странице восстановления доступа к зашифрованным файлам. ", + "Your private key is not valid! Likely your password was changed outside of %s (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." : "Ваш закрытый ключ недействителен! Вероятно, ваш пароль был изменен вне %s (например, корпоративный каталог). Вы можете обновить закрытый ключ в личных настройках на странице восстановления доступа к зашифрованным файлам. ", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Не могу расшифровать файл, возможно это опубликованный файл. Пожалуйста, попросите владельца файла поделиться им с вами еще раз.", "Unknown error. Please check your system settings or contact your administrator" : "Неизвестная ошибка. Пожалуйста, проверьте системные настройки или свяжитесь с администратором", "Missing requirements." : "Требования отсутствуют.", @@ -37,12 +39,12 @@ "New Recovery key password" : "Новый пароль для ключа восстановления", "Repeat New Recovery key password" : "Повторите новый пароль восстановления ключа", "Change Password" : "Изменить пароль", - "Your private key password no longer matches your log-in password." : "Пароль от Вашего закрытого ключа больше не соответствует паролю от вашей учетной записи.", - "Set your old private key password to your current log-in password:" : "Замените старый пароль от закрытого ключа на новый пароль входа.", + "Your private key password no longer matches your log-in password." : "Пароль для Вашего закрытого ключа больше не соответствует паролю вашей учетной записи.", + "Set your old private key password to your current log-in password:" : "Замените старый пароль для закрытого ключа на текущий пароль учётной записи.", " If you don't remember your old password you can ask your administrator to recover your files." : "Если вы не помните свой старый пароль, вы можете попросить своего администратора восстановить ваши файлы", - "Old log-in password" : "Старый пароль для входа", - "Current log-in password" : "Текущйи пароль для входа", - "Update Private Key Password" : "Обновить пароль от секретного ключа", + "Old log-in password" : "Старый пароль для учётной записи", + "Current log-in password" : "Текущий пароль для учётной записи", + "Update Private Key Password" : "Обновить пароль для закрытого ключа", "Enable password recovery:" : "Включить восстановление пароля:", "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Включение этой опции позволит вам получить доступ к своим зашифрованным файлам в случае утери пароля" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" diff --git a/apps/files_encryption/l10n/sk_SK.js b/apps/files_encryption/l10n/sk_SK.js index ac61753f09d..cf7606bb1ad 100644 --- a/apps/files_encryption/l10n/sk_SK.js +++ b/apps/files_encryption/l10n/sk_SK.js @@ -8,7 +8,6 @@ OC.L10N.register( "Password successfully changed." : "Heslo úspešne zmenené.", "Could not change the password. Maybe the old password was not correct." : "Nemožno zmeniť heslo. Pravdepodobne nebolo staré heslo zadané správne.", "Private key password successfully updated." : "Heslo súkromného kľúča je úspešne aktualizované.", - "Could not update the private key password. Maybe the old password was not correct." : "Nemožno aktualizovať heslo súkromného kľúča. Možno nebolo staré heslo správne.", "File recovery settings updated" : "Nastavenie obnovy súborov aktualizované", "Could not update file recovery" : "Nemožno aktualizovať obnovenie súborov", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Šifrovacia aplikácia nie je inicializovaná. Je možné, že aplikácia bola znova aktivovaná počas vášho prihlasovania. Pokúste sa odhlásiť a znova prihlásiť pre inicializáciu šifrovania.", diff --git a/apps/files_encryption/l10n/sk_SK.json b/apps/files_encryption/l10n/sk_SK.json index e1887527634..6229150b737 100644 --- a/apps/files_encryption/l10n/sk_SK.json +++ b/apps/files_encryption/l10n/sk_SK.json @@ -6,7 +6,6 @@ "Password successfully changed." : "Heslo úspešne zmenené.", "Could not change the password. Maybe the old password was not correct." : "Nemožno zmeniť heslo. Pravdepodobne nebolo staré heslo zadané správne.", "Private key password successfully updated." : "Heslo súkromného kľúča je úspešne aktualizované.", - "Could not update the private key password. Maybe the old password was not correct." : "Nemožno aktualizovať heslo súkromného kľúča. Možno nebolo staré heslo správne.", "File recovery settings updated" : "Nastavenie obnovy súborov aktualizované", "Could not update file recovery" : "Nemožno aktualizovať obnovenie súborov", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Šifrovacia aplikácia nie je inicializovaná. Je možné, že aplikácia bola znova aktivovaná počas vášho prihlasovania. Pokúste sa odhlásiť a znova prihlásiť pre inicializáciu šifrovania.", diff --git a/apps/files_encryption/l10n/sl.js b/apps/files_encryption/l10n/sl.js index f0623de697f..3bb41a62f22 100644 --- a/apps/files_encryption/l10n/sl.js +++ b/apps/files_encryption/l10n/sl.js @@ -13,8 +13,10 @@ OC.L10N.register( "Please repeat the new recovery password" : "Ponovno vpišite nov ključ za obnovitev", "Password successfully changed." : "Geslo je uspešno spremenjeno.", "Could not change the password. Maybe the old password was not correct." : "Gesla ni mogoče spremeniti. Morda vnos starega gesla ni pravilen.", + "Could not update the private key password." : "Ni mogoče posodobiti gesla zasebnega ključa.", + "The old password was not correct, please try again." : "Staro geslo ni vpisana pravilno. Poskusite znova.", + "The current log-in password was not correct, please try again." : "Trenutno geslo za prijavo ni vpisano pravilno. Poskusite znova.", "Private key password successfully updated." : "Zasebni ključ za geslo je uspešno posodobljen.", - "Could not update the private key password. Maybe the old password was not correct." : "Zasebnega ključa za geslo ni mogoče posodobiti. Morda vnos starega gesla ni bil pravilen.", "File recovery settings updated" : "Nastavitve obnavljanja dokumentov so posodobljene", "Could not update file recovery" : "Nastavitev za obnavljanje dokumentov ni mogoče posodobiti", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Program za šifriranje ni začet. Morda je bil program ponovno omogočen šele med zagonom trenutne seje. Odjavite se in se nato prijavite nazaj. S tem morda razrešite napako.", diff --git a/apps/files_encryption/l10n/sl.json b/apps/files_encryption/l10n/sl.json index 4a692bfebae..a9909c6551a 100644 --- a/apps/files_encryption/l10n/sl.json +++ b/apps/files_encryption/l10n/sl.json @@ -11,8 +11,10 @@ "Please repeat the new recovery password" : "Ponovno vpišite nov ključ za obnovitev", "Password successfully changed." : "Geslo je uspešno spremenjeno.", "Could not change the password. Maybe the old password was not correct." : "Gesla ni mogoče spremeniti. Morda vnos starega gesla ni pravilen.", + "Could not update the private key password." : "Ni mogoče posodobiti gesla zasebnega ključa.", + "The old password was not correct, please try again." : "Staro geslo ni vpisana pravilno. Poskusite znova.", + "The current log-in password was not correct, please try again." : "Trenutno geslo za prijavo ni vpisano pravilno. Poskusite znova.", "Private key password successfully updated." : "Zasebni ključ za geslo je uspešno posodobljen.", - "Could not update the private key password. Maybe the old password was not correct." : "Zasebnega ključa za geslo ni mogoče posodobiti. Morda vnos starega gesla ni bil pravilen.", "File recovery settings updated" : "Nastavitve obnavljanja dokumentov so posodobljene", "Could not update file recovery" : "Nastavitev za obnavljanje dokumentov ni mogoče posodobiti", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Program za šifriranje ni začet. Morda je bil program ponovno omogočen šele med zagonom trenutne seje. Odjavite se in se nato prijavite nazaj. S tem morda razrešite napako.", diff --git a/apps/files_encryption/l10n/sq.js b/apps/files_encryption/l10n/sq.js index f3c5d10cf0a..ffab720cfda 100644 --- a/apps/files_encryption/l10n/sq.js +++ b/apps/files_encryption/l10n/sq.js @@ -2,6 +2,7 @@ OC.L10N.register( "files_encryption", { "Unknown error" : "Gabim panjohur", - "Encryption" : "Kodifikimi" + "Encryption" : "Kodifikimi", + "Enabled" : "Aktivizuar" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_encryption/l10n/sq.json b/apps/files_encryption/l10n/sq.json index b4fe571e7e0..dee4c42e547 100644 --- a/apps/files_encryption/l10n/sq.json +++ b/apps/files_encryption/l10n/sq.json @@ -1,5 +1,6 @@ { "translations": { "Unknown error" : "Gabim panjohur", - "Encryption" : "Kodifikimi" + "Encryption" : "Kodifikimi", + "Enabled" : "Aktivizuar" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_encryption/l10n/sv.js b/apps/files_encryption/l10n/sv.js index f8ef7040926..44d58564ba7 100644 --- a/apps/files_encryption/l10n/sv.js +++ b/apps/files_encryption/l10n/sv.js @@ -8,7 +8,6 @@ OC.L10N.register( "Password successfully changed." : "Ändringen av lösenordet lyckades.", "Could not change the password. Maybe the old password was not correct." : "Kunde inte ändra lösenordet. Kanske det gamla lösenordet inte var rätt.", "Private key password successfully updated." : "Den privata nyckelns lösenord uppdaterades utan problem.", - "Could not update the private key password. Maybe the old password was not correct." : "Kunde inte uppdatera lösenordet för den privata nyckeln. Kanske var det gamla lösenordet fel.", "File recovery settings updated" : "Inställningarna för filåterställning har uppdaterats", "Could not update file recovery" : "Kunde inte uppdatera filåterställning", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Krypteringsprogrammet kunde inte initieras! Möjligen blev krypteringsprogrammet återaktiverad under din session. Försök med att logga ut och in igen för att initiera krypteringsprogrammet.", diff --git a/apps/files_encryption/l10n/sv.json b/apps/files_encryption/l10n/sv.json index f94da503843..5ee6606b665 100644 --- a/apps/files_encryption/l10n/sv.json +++ b/apps/files_encryption/l10n/sv.json @@ -6,7 +6,6 @@ "Password successfully changed." : "Ändringen av lösenordet lyckades.", "Could not change the password. Maybe the old password was not correct." : "Kunde inte ändra lösenordet. Kanske det gamla lösenordet inte var rätt.", "Private key password successfully updated." : "Den privata nyckelns lösenord uppdaterades utan problem.", - "Could not update the private key password. Maybe the old password was not correct." : "Kunde inte uppdatera lösenordet för den privata nyckeln. Kanske var det gamla lösenordet fel.", "File recovery settings updated" : "Inställningarna för filåterställning har uppdaterats", "Could not update file recovery" : "Kunde inte uppdatera filåterställning", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Krypteringsprogrammet kunde inte initieras! Möjligen blev krypteringsprogrammet återaktiverad under din session. Försök med att logga ut och in igen för att initiera krypteringsprogrammet.", diff --git a/apps/files_encryption/l10n/tr.js b/apps/files_encryption/l10n/tr.js index 3a50eeb2081..41240bf5ed6 100644 --- a/apps/files_encryption/l10n/tr.js +++ b/apps/files_encryption/l10n/tr.js @@ -13,8 +13,10 @@ OC.L10N.register( "Please repeat the new recovery password" : "Lütfen yeni kurtarma parolasını yenileyin", "Password successfully changed." : "Parola başarıyla değiştirildi.", "Could not change the password. Maybe the old password was not correct." : "Parola değiştirilemedi. Eski parolanız doğru olmayabilir.", + "Could not update the private key password." : "Özel anahtar parolası güncellenemedi", + "The old password was not correct, please try again." : "Eski parola doğru değil, lütfen yeniden deneyin.", + "The current log-in password was not correct, please try again." : "Geçerli oturum parolası doğru değil, lütfen yeniden deneyin.", "Private key password successfully updated." : "Özel anahtar parolası başarıyla güncellendi.", - "Could not update the private key password. Maybe the old password was not correct." : "Özel anahtar parolası güncellenemedi. Eski parola hatalı olabilir.", "File recovery settings updated" : "Dosya kurtarma ayarları güncellendi", "Could not update file recovery" : "Dosya kurtarma güncellenemedi", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Şifreleme uygulaması başlatılamadı! Oturumunuz sırasında şifreleme uygulaması tekrar etkinleştirilmiş olabilir. Lütfen şifreleme uygulamasını başlatmak için oturumu kapatıp yeniden oturum açmayı deneyin.", diff --git a/apps/files_encryption/l10n/tr.json b/apps/files_encryption/l10n/tr.json index 4998865f3bd..d951321dd82 100644 --- a/apps/files_encryption/l10n/tr.json +++ b/apps/files_encryption/l10n/tr.json @@ -11,8 +11,10 @@ "Please repeat the new recovery password" : "Lütfen yeni kurtarma parolasını yenileyin", "Password successfully changed." : "Parola başarıyla değiştirildi.", "Could not change the password. Maybe the old password was not correct." : "Parola değiştirilemedi. Eski parolanız doğru olmayabilir.", + "Could not update the private key password." : "Özel anahtar parolası güncellenemedi", + "The old password was not correct, please try again." : "Eski parola doğru değil, lütfen yeniden deneyin.", + "The current log-in password was not correct, please try again." : "Geçerli oturum parolası doğru değil, lütfen yeniden deneyin.", "Private key password successfully updated." : "Özel anahtar parolası başarıyla güncellendi.", - "Could not update the private key password. Maybe the old password was not correct." : "Özel anahtar parolası güncellenemedi. Eski parola hatalı olabilir.", "File recovery settings updated" : "Dosya kurtarma ayarları güncellendi", "Could not update file recovery" : "Dosya kurtarma güncellenemedi", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Şifreleme uygulaması başlatılamadı! Oturumunuz sırasında şifreleme uygulaması tekrar etkinleştirilmiş olabilir. Lütfen şifreleme uygulamasını başlatmak için oturumu kapatıp yeniden oturum açmayı deneyin.", diff --git a/apps/files_encryption/l10n/uk.js b/apps/files_encryption/l10n/uk.js index 169f6c3f92e..db740bc45e6 100644 --- a/apps/files_encryption/l10n/uk.js +++ b/apps/files_encryption/l10n/uk.js @@ -13,8 +13,10 @@ OC.L10N.register( "Please repeat the new recovery password" : "Будь ласка, введіть новий пароль відновлення ще раз", "Password successfully changed." : "Пароль змінено.", "Could not change the password. Maybe the old password was not correct." : "Не вдалося змінити пароль. Можливо ви неправильно ввели старий пароль.", + "Could not update the private key password." : "Не вдалося оновити пароль секретного ключа.", + "The old password was not correct, please try again." : "Старий пароль введено не вірно, спробуйте ще раз.", + "The current log-in password was not correct, please try again." : "Невірний пароль входу, будь ласка, спробуйте ще раз.", "Private key password successfully updated." : "Пароль секретного ключа оновлено.", - "Could not update the private key password. Maybe the old password was not correct." : "Не вдалося оновити пароль секретного ключа. Можливо ви не правильно ввели старий пароль.", "File recovery settings updated" : "Налаштування файла відновлення оновлено", "Could not update file recovery" : "Не вдалося оновити файл відновлення ", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Додаток шифрувння не ініціалізовано! Можливо цей додаток редагувався під час вашої сесії. Будь ласка, спробуйте вийти і зайти знову щоб проініціалізувати додаток шифрування.", diff --git a/apps/files_encryption/l10n/uk.json b/apps/files_encryption/l10n/uk.json index 454de34d9c0..b2953e5e53c 100644 --- a/apps/files_encryption/l10n/uk.json +++ b/apps/files_encryption/l10n/uk.json @@ -11,8 +11,10 @@ "Please repeat the new recovery password" : "Будь ласка, введіть новий пароль відновлення ще раз", "Password successfully changed." : "Пароль змінено.", "Could not change the password. Maybe the old password was not correct." : "Не вдалося змінити пароль. Можливо ви неправильно ввели старий пароль.", + "Could not update the private key password." : "Не вдалося оновити пароль секретного ключа.", + "The old password was not correct, please try again." : "Старий пароль введено не вірно, спробуйте ще раз.", + "The current log-in password was not correct, please try again." : "Невірний пароль входу, будь ласка, спробуйте ще раз.", "Private key password successfully updated." : "Пароль секретного ключа оновлено.", - "Could not update the private key password. Maybe the old password was not correct." : "Не вдалося оновити пароль секретного ключа. Можливо ви не правильно ввели старий пароль.", "File recovery settings updated" : "Налаштування файла відновлення оновлено", "Could not update file recovery" : "Не вдалося оновити файл відновлення ", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "Додаток шифрувння не ініціалізовано! Можливо цей додаток редагувався під час вашої сесії. Будь ласка, спробуйте вийти і зайти знову щоб проініціалізувати додаток шифрування.", diff --git a/apps/files_encryption/l10n/vi.js b/apps/files_encryption/l10n/vi.js index 8fc542510da..b853fb76162 100644 --- a/apps/files_encryption/l10n/vi.js +++ b/apps/files_encryption/l10n/vi.js @@ -8,7 +8,6 @@ OC.L10N.register( "Password successfully changed." : "Đã đổi mật khẩu.", "Could not change the password. Maybe the old password was not correct." : "Không thể đổi mật khẩu. Có lẽ do mật khẩu cũ không đúng.", "Private key password successfully updated." : "Cập nhật thành công mật khẩu khóa cá nhân", - "Could not update the private key password. Maybe the old password was not correct." : "Không thể cập nhật mật khẩu khóa cá nhân. Có thể mật khẩu cũ không đúng", "File recovery settings updated" : "Đã cập nhật thiết lập khôi phục tập tin ", "Could not update file recovery" : "Không thể cập nhật khôi phục tập tin", "Encryption" : "Mã hóa", diff --git a/apps/files_encryption/l10n/vi.json b/apps/files_encryption/l10n/vi.json index f1a1ff4c6da..4800a4bc21f 100644 --- a/apps/files_encryption/l10n/vi.json +++ b/apps/files_encryption/l10n/vi.json @@ -6,7 +6,6 @@ "Password successfully changed." : "Đã đổi mật khẩu.", "Could not change the password. Maybe the old password was not correct." : "Không thể đổi mật khẩu. Có lẽ do mật khẩu cũ không đúng.", "Private key password successfully updated." : "Cập nhật thành công mật khẩu khóa cá nhân", - "Could not update the private key password. Maybe the old password was not correct." : "Không thể cập nhật mật khẩu khóa cá nhân. Có thể mật khẩu cũ không đúng", "File recovery settings updated" : "Đã cập nhật thiết lập khôi phục tập tin ", "Could not update file recovery" : "Không thể cập nhật khôi phục tập tin", "Encryption" : "Mã hóa", diff --git a/apps/files_encryption/l10n/zh_CN.js b/apps/files_encryption/l10n/zh_CN.js index 82051423baf..17995f4597e 100644 --- a/apps/files_encryption/l10n/zh_CN.js +++ b/apps/files_encryption/l10n/zh_CN.js @@ -8,7 +8,6 @@ OC.L10N.register( "Password successfully changed." : "密码修改成功。", "Could not change the password. Maybe the old password was not correct." : "不能修改密码。旧密码可能不正确。", "Private key password successfully updated." : "私钥密码成功更新。", - "Could not update the private key password. Maybe the old password was not correct." : "无法更新私钥密码。可能旧密码不正确。", "File recovery settings updated" : "文件恢复设置已更新", "Could not update file recovery" : "不能更新文件恢复", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "加密应用还没有初始化!可能加密应用在你会话期间已被重新启用。请注销并重新登录,以初始化加密应用。", diff --git a/apps/files_encryption/l10n/zh_CN.json b/apps/files_encryption/l10n/zh_CN.json index 9c9a6adc7cb..fa6de35d12a 100644 --- a/apps/files_encryption/l10n/zh_CN.json +++ b/apps/files_encryption/l10n/zh_CN.json @@ -6,7 +6,6 @@ "Password successfully changed." : "密码修改成功。", "Could not change the password. Maybe the old password was not correct." : "不能修改密码。旧密码可能不正确。", "Private key password successfully updated." : "私钥密码成功更新。", - "Could not update the private key password. Maybe the old password was not correct." : "无法更新私钥密码。可能旧密码不正确。", "File recovery settings updated" : "文件恢复设置已更新", "Could not update file recovery" : "不能更新文件恢复", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "加密应用还没有初始化!可能加密应用在你会话期间已被重新启用。请注销并重新登录,以初始化加密应用。", diff --git a/apps/files_encryption/l10n/zh_TW.js b/apps/files_encryption/l10n/zh_TW.js index c68028a7aad..e344178a333 100644 --- a/apps/files_encryption/l10n/zh_TW.js +++ b/apps/files_encryption/l10n/zh_TW.js @@ -8,7 +8,6 @@ OC.L10N.register( "Password successfully changed." : "成功變更密碼。", "Could not change the password. Maybe the old password was not correct." : "無法變更密碼,或許是輸入的舊密碼不正確。", "Private key password successfully updated." : "私人金鑰密碼已成功更新。", - "Could not update the private key password. Maybe the old password was not correct." : "無法更新私人金鑰密碼。可能舊的密碼不正確。", "File recovery settings updated" : "檔案還原設定已更新", "Could not update file recovery" : "無法更新檔案還原設定", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "加密功能未初始化!可能加密功能需要重新啟用在現在的連線上。請試著登出再登入來初始化加密功能。", diff --git a/apps/files_encryption/l10n/zh_TW.json b/apps/files_encryption/l10n/zh_TW.json index c6560dc3738..44b48c9ccc3 100644 --- a/apps/files_encryption/l10n/zh_TW.json +++ b/apps/files_encryption/l10n/zh_TW.json @@ -6,7 +6,6 @@ "Password successfully changed." : "成功變更密碼。", "Could not change the password. Maybe the old password was not correct." : "無法變更密碼,或許是輸入的舊密碼不正確。", "Private key password successfully updated." : "私人金鑰密碼已成功更新。", - "Could not update the private key password. Maybe the old password was not correct." : "無法更新私人金鑰密碼。可能舊的密碼不正確。", "File recovery settings updated" : "檔案還原設定已更新", "Could not update file recovery" : "無法更新檔案還原設定", "Encryption app not initialized! Maybe the encryption app was re-enabled during your session. Please try to log out and log back in to initialize the encryption app." : "加密功能未初始化!可能加密功能需要重新啟用在現在的連線上。請試著登出再登入來初始化加密功能。", diff --git a/apps/files_encryption/lib/crypt.php b/apps/files_encryption/lib/crypt.php index 59b191097af..cf915ae27b2 100644 --- a/apps/files_encryption/lib/crypt.php +++ b/apps/files_encryption/lib/crypt.php @@ -3,10 +3,12 @@ /**
* ownCloud
*
- * @author Sam Tuke, Frank Karlitschek, Robin Appelman
- * @copyright 2012 Sam Tuke samtuke@owncloud.com,
- * Robin Appelman icewind@owncloud.com, Frank Karlitschek
- * frank@owncloud.org
+ * @copyright (C) 2014 ownCloud, Inc.
+ *
+ * @author Bjoern Schiessle <schiessle@owncloud.com>
+ * @author Sam Tuke <samtuke@owncloud.com>
+ * @author Frank Karlitschek <frank@owncloud.com>
+ * @author Robin Appelman <icewind@owncloud.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
@@ -24,7 +26,6 @@ */
namespace OCA\Encryption;
-use OCA\Encryption\Exceptions\EncryptionException;
/**
* Class for common cryptography functionality
@@ -189,7 +190,7 @@ class Crypt { * @param string $passphrase
* @param string $cypher used for encryption, currently we support AES-128-CFB and AES-256-CFB
* @return string encrypted file content
- * @throws \OCA\Encryption\Exceptions\EncryptionException
+ * @throws \OCA\Encryption\Exception\EncryptionException
*/
private static function encrypt($plainContent, $iv, $passphrase = '', $cipher = Crypt::DEFAULT_CIPHER) {
@@ -198,7 +199,7 @@ class Crypt { if (!$encryptedContent) {
$error = "Encryption (symmetric) of content failed: " . openssl_error_string();
\OCP\Util::writeLog('Encryption library', $error, \OCP\Util::ERROR);
- throw new Exceptions\EncryptionException($error, 50);
+ throw new Exception\EncryptionException($error, Exception\EncryptionException::ENCRYPTION_FAILED);
}
return $encryptedContent;
@@ -290,7 +291,7 @@ class Crypt { $padded = self::addPadding($catfile);
return $padded;
- } catch (EncryptionException $e) {
+ } catch (Exception\EncryptionException $e) {
$message = 'Could not encrypt file content (code: ' . $e->getCode() . '): ';
\OCP\Util::writeLog('files_encryption', $message . $e->getMessage(), \OCP\Util::ERROR);
return false;
@@ -378,7 +379,7 @@ class Crypt { * @param string $plainContent content to be encrypted
* @param array $publicKeys array keys must be the userId of corresponding user
* @return array keys: keys (array, key = userId), data
- * @throws \OCA\Encryption\Exceptions\\MultiKeyEncryptException if encryption failed
+ * @throws \OCA\Encryption\Exception\MultiKeyEncryptException if encryption failed
* @note symmetricDecryptFileContent() can decrypt files created using this method
*/
public static function multiKeyEncrypt($plainContent, array $publicKeys) {
@@ -386,7 +387,7 @@ class Crypt { // openssl_seal returns false without errors if $plainContent
// is empty, so trigger our own error
if (empty($plainContent)) {
- throw new Exceptions\MultiKeyEncryptException('Cannot multiKeyEncrypt empty plain content', 10);
+ throw new Exception\MultiKeyEncryptException('Cannot multiKeyEncrypt empty plain content', Exception\MultiKeyEncryptException::EMPTY_DATA);
}
// Set empty vars to be set by openssl by reference
@@ -413,7 +414,8 @@ class Crypt { );
} else {
- throw new Exceptions\MultiKeyEncryptException('multi key encryption failed: ' . openssl_error_string(), 20);
+ throw new Exception\MultiKeyEncryptException('multi key encryption failed: ' . openssl_error_string(),
+ Exception\MultiKeyEncryptException::OPENSSL_SEAL_FAILED);
}
}
@@ -423,7 +425,7 @@ class Crypt { * @param string $encryptedContent
* @param string $shareKey
* @param mixed $privateKey
- * @throws \OCA\Encryption\Exceptions\\MultiKeyDecryptException if decryption failed
+ * @throws \OCA\Encryption\Exception\MultiKeyDecryptException if decryption failed
* @internal param string $plainContent contains decrypted content
* @return string $plainContent decrypted string
* @note symmetricDecryptFileContent() can be used to decrypt files created using this method
@@ -433,7 +435,8 @@ class Crypt { public static function multiKeyDecrypt($encryptedContent, $shareKey, $privateKey) {
if (!$encryptedContent) {
- throw new Exceptions\MultiKeyDecryptException('Cannot mutliKeyDecrypt empty plain content', 10);
+ throw new Exception\MultiKeyDecryptException('Cannot mutliKeyDecrypt empty plain content',
+ Exception\MultiKeyDecryptException::EMPTY_DATA);
}
if (openssl_open($encryptedContent, $plainContent, $shareKey, $privateKey)) {
@@ -441,7 +444,8 @@ class Crypt { return $plainContent;
} else {
- throw new Exceptions\MultiKeyDecryptException('multiKeyDecrypt with share-key' . $shareKey . 'failed: ' . openssl_error_string(), 20);
+ throw new Exception\MultiKeyDecryptException('multiKeyDecrypt with share-key' . $shareKey . 'failed: ' . openssl_error_string(),
+ Exception\MultiKeyDecryptException::OPENSSL_OPEN_FAILED);
}
}
@@ -550,14 +554,15 @@ class Crypt { * get chiper from header
*
* @param array $header
- * @throws \OCA\Encryption\Exceptions\EncryptionException
+ * @throws \OCA\Encryption\Exception\EncryptionException
*/
public static function getCipher($header) {
$cipher = isset($header['cipher']) ? $header['cipher'] : 'AES-128-CFB';
if ($cipher !== 'AES-256-CFB' && $cipher !== 'AES-128-CFB') {
- throw new \OCA\Encryption\Exceptions\EncryptionException('file header broken, no supported cipher defined', 40);
+ throw new Exception\EncryptionException('file header broken, no supported cipher defined',
+ Exception\EncryptionException::UNKNOWN_CIPHER);
}
return $cipher;
diff --git a/apps/files_encryption/lib/helper.php b/apps/files_encryption/lib/helper.php index 53c380ab2b3..7a50ade82f3 100644 --- a/apps/files_encryption/lib/helper.php +++ b/apps/files_encryption/lib/helper.php @@ -70,6 +70,7 @@ class Helper { \OCP\Util::connectHook('OC_Filesystem', 'delete', 'OCA\Encryption\Hooks', 'preDelete'); \OCP\Util::connectHook('OC_Filesystem', 'post_umount', 'OCA\Encryption\Hooks', 'postUmount'); \OCP\Util::connectHook('OC_Filesystem', 'umount', 'OCA\Encryption\Hooks', 'preUmount'); + \OCP\Util::connectHook('\OC\Core\LostPassword\Controller\LostController', 'post_passwordReset', 'OCA\Encryption\Hooks', 'postPasswordReset'); } /** diff --git a/apps/files_encryption/lib/proxy.php b/apps/files_encryption/lib/proxy.php index 3b9dcbe7767..a358a46a6e7 100644 --- a/apps/files_encryption/lib/proxy.php +++ b/apps/files_encryption/lib/proxy.php @@ -91,12 +91,10 @@ class Proxy extends \OC_FileProxy { private function shouldEncrypt($path, $mode = 'w') { $userId = Helper::getUser($path); - $session = new Session(new \OC\Files\View()); // don't call the crypt stream wrapper, if... if ( - $session->getInitialized() !== Session::INIT_SUCCESSFUL // encryption successful initialized - || Crypt::mode() !== 'server' // we are not in server-side-encryption mode + Crypt::mode() !== 'server' // we are not in server-side-encryption mode || $this->isExcludedPath($path, $userId) // if path is excluded from encryption || substr($path, 0, 8) === 'crypt://' // we are already in crypt mode ) { @@ -346,8 +344,8 @@ class Proxy extends \OC_FileProxy { return $size; } - // get file info from database/cache if not .part file - if (empty($fileInfo) && !Helper::isPartialFilePath($path)) { + // get file info from database/cache + if (empty($fileInfo)) { $proxyState = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; $fileInfo = $view->getFileInfo($path); diff --git a/apps/files_encryption/lib/session.php b/apps/files_encryption/lib/session.php index 7bd4fd02421..132748b6ea5 100644 --- a/apps/files_encryption/lib/session.php +++ b/apps/files_encryption/lib/session.php @@ -29,6 +29,7 @@ namespace OCA\Encryption; class Session { private $view; + private static $publicShareKey = false; const NOT_INITIALIZED = '0'; const INIT_EXECUTED = '1'; @@ -92,7 +93,7 @@ class Session { } - if (\OCA\Encryption\Helper::isPublicAccess()) { + if (\OCA\Encryption\Helper::isPublicAccess() && !self::getPublicSharePrivateKey()) { // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; \OC_FileProxy::$enabled = false; @@ -100,9 +101,7 @@ class Session { $encryptedKey = $this->view->file_get_contents( '/owncloud_private_key/' . $publicShareKeyId . '.private.key'); $privateKey = Crypt::decryptPrivateKey($encryptedKey, ''); - $this->setPublicSharePrivateKey($privateKey); - - $this->setInitialized(\OCA\Encryption\Session::INIT_SUCCESSFUL); + self::setPublicSharePrivateKey($privateKey); \OC_FileProxy::$enabled = $proxyStatus; } @@ -127,8 +126,8 @@ class Session { * remove keys from session */ public function removeKeys() { - \OC::$session->remove('publicSharePrivateKey'); - \OC::$session->remove('privateKey'); + \OC::$server->getSession()->remove('publicSharePrivateKey'); + \OC::$server->getSession()->remove('privateKey'); } /** @@ -164,6 +163,8 @@ class Session { public function getInitialized() { if (!is_null(\OC::$server->getSession()->get('encryptionInitialized'))) { return \OC::$server->getSession()->get('encryptionInitialized'); + } else if (\OCA\Encryption\Helper::isPublicAccess() && self::getPublicSharePrivateKey()) { + return self::INIT_SUCCESSFUL; } else { return self::NOT_INITIALIZED; } @@ -177,7 +178,7 @@ class Session { public function getPrivateKey() { // return the public share private key if this is a public access if (\OCA\Encryption\Helper::isPublicAccess()) { - return $this->getPublicSharePrivateKey(); + return self::getPublicSharePrivateKey(); } else { if (!is_null(\OC::$server->getSession()->get('privateKey'))) { return \OC::$server->getSession()->get('privateKey'); @@ -192,12 +193,9 @@ class Session { * @param string $privateKey * @return bool */ - public function setPublicSharePrivateKey($privateKey) { - - \OC::$server->getSession()->set('publicSharePrivateKey', $privateKey); - + private static function setPublicSharePrivateKey($privateKey) { + self::$publicShareKey = $privateKey; return true; - } /** @@ -205,13 +203,8 @@ class Session { * @return string $privateKey * */ - public function getPublicSharePrivateKey() { - - if (!is_null(\OC::$server->getSession()->get('publicSharePrivateKey'))) { - return \OC::$server->getSession()->get('publicSharePrivateKey'); - } else { - return false; - } + private static function getPublicSharePrivateKey() { + return self::$publicShareKey; } } diff --git a/apps/files_encryption/lib/stream.php b/apps/files_encryption/lib/stream.php index f74812a7253..4038e641343 100644 --- a/apps/files_encryption/lib/stream.php +++ b/apps/files_encryption/lib/stream.php @@ -2,10 +2,11 @@ /** * ownCloud * - * @author Bjoern Schiessle, Robin Appelman - * @copyright 2014 Bjoern Schiessle <schiessle@owncloud.com> - * 2012 Sam Tuke <samtuke@owncloud.com>, - * 2011 Robin Appelman <icewind1991@gmail.com> + * @copyright (C) 2014 ownCloud, Inc. + * + * @author Bjoern Schiessle <schiessle@owncloud.com> + * @author Robin Appelman <icewind@owncloud.com> + * @author Sam Tuke <samtuke@owncloud.com> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE @@ -30,6 +31,7 @@ */ namespace OCA\Encryption; +use OCA\Encryption\Exception\EncryptionException; /** * Provides 'crypt://' stream wrapper protocol. @@ -90,6 +92,7 @@ class Stream { * @param int $options * @param string $opened_path * @return bool + * @throw \OCA\Encryption\Exception\EncryptionException */ public function stream_open($path, $mode, $options, &$opened_path) { @@ -106,6 +109,10 @@ class Stream { $this->session = new \OCA\Encryption\Session($this->rootView); $this->privateKey = $this->session->getPrivateKey(); + if ($this->privateKey === false) { + throw new EncryptionException('Session does not contain a private key, maybe your login password changed?', + EncryptionException::PRIVATE_KEY_MISSING); + } $normalizedPath = \OC\Files\Filesystem::normalizePath(str_replace('crypt://', '', $path)); if ($originalFile = Helper::getPathFromTmpFile($normalizedPath)) { @@ -244,7 +251,7 @@ class Stream { /** * @param int $count * @return bool|string - * @throws \OCA\Encryption\Exceptions\EncryptionException + * @throws \OCA\Encryption\Exception\EncryptionException */ public function stream_read($count) { @@ -252,7 +259,7 @@ class Stream { if ($count !== Crypt::BLOCKSIZE) { \OCP\Util::writeLog('Encryption library', 'PHP "bug" 21641 no longer holds, decryption system requires refactoring', \OCP\Util::FATAL); - throw new \OCA\Encryption\Exceptions\EncryptionException('expected a blog size of 8192 byte', 20); + throw new EncryptionException('expected a blog size of 8192 byte', EncryptionException::UNEXPECTED_BLOG_SIZE); } // Get the data from the file handle @@ -360,14 +367,14 @@ class Stream { /** * write header at beginning of encrypted file * - * @throws Exceptions\EncryptionException + * @throws Exception\EncryptionException */ private function writeHeader() { $header = Crypt::generateHeader(); if (strlen($header) > Crypt::BLOCKSIZE) { - throw new Exceptions\EncryptionException('max header size exceeded', 30); + throw new EncryptionException('max header size exceeded', EncryptionException::ENCRYPTION_HEADER_TO_LARGE); } $paddedHeader = str_pad($header, Crypt::BLOCKSIZE, self::PADDING_CHAR, STR_PAD_RIGHT); @@ -573,6 +580,7 @@ class Stream { \OC_FileProxy::$enabled = false; if ($this->rootView->file_exists($this->rawPath) && $this->size === 0) { + fclose($this->handle); $this->rootView->unlink($this->rawPath); } @@ -632,13 +640,17 @@ class Stream { $path = Helper::stripPartialFileExtension($this->rawPath); $fileInfo = array( + 'mimetype' => $this->rootView->getMimeType($this->rawPath), 'encrypted' => true, - 'size' => $this->size, 'unencrypted_size' => $this->unencryptedSize, ); - // set fileinfo - $this->rootView->putFileInfo($path, $fileInfo); + // if we write a part file we also store the unencrypted size for + // the part file so that it can be re-used later + $this->rootView->putFileInfo($this->rawPath, $fileInfo); + if ($path !== $this->rawPath) { + $this->rootView->putFileInfo($path, $fileInfo); + } } diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php index ce5e8c8b54c..d214d13de69 100644 --- a/apps/files_encryption/lib/util.php +++ b/apps/files_encryption/lib/util.php @@ -125,6 +125,18 @@ class Util { } /** + * create a new public/private key pair for the user + * + * @param string $password password for the private key + */ + public function replaceUserKeys($password) { + $this->backupAllKeys('password_reset'); + $this->view->unlink($this->publicKeyPath); + $this->view->unlink($this->privateKeyPath); + $this->setupServerSide($password); + } + + /** * Sets up user folders and keys for serverside encryption * * @param string $passphrase to encrypt server-stored private key with @@ -857,6 +869,25 @@ class Util { } /** + * Returns whether the given user is ready for encryption. + * Also returns true if the given user is the public user + * or the recovery key user. + * + * @param string $user user to check + * + * @return boolean true if the user is ready, false otherwise + */ + private function isUserReady($user) { + if ($user === $this->publicShareKeyId + || $user === $this->recoveryKeyId + ) { + return true; + } + $util = new Util($this->view, $user); + return $util->ready(); + } + + /** * Filter an array of UIDs to return only ones ready for sharing * @param array $unfilteredUsers users to be checked for sharing readiness * @return array as multi-dimensional array. keys: ready, unready @@ -868,16 +899,9 @@ class Util { // Loop through users and create array of UIDs that need new keyfiles foreach ($unfilteredUsers as $user) { - - $util = new Util($this->view, $user); - // Check that the user is encryption capable, or is the - // public system user 'ownCloud' (for public shares) - if ( - $user === $this->publicShareKeyId - or $user === $this->recoveryKeyId - or $util->ready() - ) { + // public system user (for public shares) + if ($this->isUserReady($user)) { // Construct array of ready UIDs for Keymanager{} $readyIds[] = $user; @@ -960,7 +984,7 @@ class Util { $plainKeyfile = $this->decryptKeyfile($filePath, $privateKey); // Re-enc keyfile to (additional) sharekeys $multiEncKey = Crypt::multiKeyEncrypt($plainKeyfile, $userPubKeys); - } catch (Exceptions\EncryptionException $e) { + } catch (Exception\EncryptionException $e) { $msg = 'set shareFileKeyFailed (code: ' . $e->getCode() . '): ' . $e->getMessage(); \OCP\Util::writeLog('files_encryption', $msg, \OCP\Util::FATAL); return false; diff --git a/apps/files_encryption/tests/crypt.php b/apps/files_encryption/tests/crypt.php index 1b8291fea28..7369be8ff05 100755 --- a/apps/files_encryption/tests/crypt.php +++ b/apps/files_encryption/tests/crypt.php @@ -12,7 +12,7 @@ use OCA\Encryption; /** * Class Test_Encryption_Crypt */ -class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { +class Test_Encryption_Crypt extends \OCA\Files_Encryption\Tests\TestCase { const TEST_ENCRYPTION_CRYPT_USER1 = "test-crypt-user1"; @@ -31,6 +31,8 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { public $genPublicKey; public static function setUpBeforeClass() { + parent::setUpBeforeClass(); + // reset backend \OC_User::clearBackends(); \OC_User::useBackend('database'); @@ -46,12 +48,14 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { \OC_FileProxy::register(new OCA\Encryption\Proxy()); // create test user - \Test_Encryption_Util::loginHelper(\Test_Encryption_Crypt::TEST_ENCRYPTION_CRYPT_USER1, true); + self::loginHelper(\Test_Encryption_Crypt::TEST_ENCRYPTION_CRYPT_USER1, true); } - function setUp() { + protected function setUp() { + parent::setUp(); + // set user id - \Test_Encryption_Util::loginHelper(\Test_Encryption_Crypt::TEST_ENCRYPTION_CRYPT_USER1); + self::loginHelper(\Test_Encryption_Crypt::TEST_ENCRYPTION_CRYPT_USER1); $this->userId = \Test_Encryption_Crypt::TEST_ENCRYPTION_CRYPT_USER1; $this->pass = \Test_Encryption_Crypt::TEST_ENCRYPTION_CRYPT_USER1; @@ -77,7 +81,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { \OC_App::disable('files_trashbin'); } - function tearDown() { + protected function tearDown() { // reset app files_trashbin if ($this->stateFilesTrashbin) { OC_App::enable('files_trashbin'); @@ -87,6 +91,8 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { $this->assertTrue(\OC_FileProxy::$enabled); \OCP\Config::deleteSystemValue('cipher'); + + parent::tearDown(); } public static function tearDownAfterClass() { @@ -100,12 +106,14 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { $view = new \OC\Files\View('/'); $view->rmdir('public-keys'); $view->rmdir('owncloud_private_key'); + + parent::tearDownAfterClass(); } /** * @medium */ - function testGenerateKey() { + public function testGenerateKey() { # TODO: use more accurate (larger) string length for test confirmation @@ -115,7 +123,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { } - function testDecryptPrivateKey() { + public function testDecryptPrivateKey() { // test successful decrypt $crypted = Encryption\Crypt::symmetricEncryptFileContent($this->genPrivateKey, 'hat'); @@ -137,7 +145,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { /** * @medium */ - function testSymmetricEncryptFileContent() { + public function testSymmetricEncryptFileContent() { # TODO: search in keyfile for actual content as IV will ensure this test always passes @@ -155,7 +163,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { /** * @medium */ - function testSymmetricEncryptFileContentAes128() { + public function testSymmetricEncryptFileContentAes128() { # TODO: search in keyfile for actual content as IV will ensure this test always passes @@ -173,9 +181,9 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { /** * @medium */ - function testSymmetricStreamEncryptShortFileContent() { + public function testSymmetricStreamEncryptShortFileContent() { - $filename = 'tmp-' . uniqid() . '.test'; + $filename = 'tmp-' . $this->getUniqueID() . '.test'; $cryptedFile = file_put_contents('crypt:///' . $this->userId . '/files/'. $filename, $this->dataShort); @@ -210,9 +218,9 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { /** * @medium */ - function testSymmetricStreamEncryptShortFileContentAes128() { + public function testSymmetricStreamEncryptShortFileContentAes128() { - $filename = 'tmp-' . uniqid() . '.test'; + $filename = 'tmp-' . $this->getUniqueID() . '.test'; \OCP\Config::setSystemValue('cipher', 'AES-128-CFB'); @@ -255,10 +263,10 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { * @note If this test fails with truncate content, check that enough array slices are being rejoined to form $e, as the crypt.php file may have gotten longer and broken the manual * reassembly of its data */ - function testSymmetricStreamEncryptLongFileContent() { + public function testSymmetricStreamEncryptLongFileContent() { // Generate a a random filename - $filename = 'tmp-' . uniqid() . '.test'; + $filename = 'tmp-' . $this->getUniqueID() . '.test'; // Save long data as encrypted file using stream wrapper $cryptedFile = file_put_contents('crypt:///' . $this->userId . '/files/' . $filename, $this->dataLong . $this->dataLong); @@ -299,10 +307,10 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { * @note If this test fails with truncate content, check that enough array slices are being rejoined to form $e, as the crypt.php file may have gotten longer and broken the manual * reassembly of its data */ - function testSymmetricStreamEncryptLongFileContentAes128() { + public function testSymmetricStreamEncryptLongFileContentAes128() { // Generate a a random filename - $filename = 'tmp-' . uniqid() . '.test'; + $filename = 'tmp-' . $this->getUniqueID() . '.test'; \OCP\Config::setSystemValue('cipher', 'AES-128-CFB'); @@ -347,10 +355,10 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { * @note If this test fails with truncate content, check that enough array slices are being rejoined to form $e, as the crypt.php file may have gotten longer and broken the manual * reassembly of its data */ - function testStreamDecryptLongFileContentWithoutHeader() { + public function testStreamDecryptLongFileContentWithoutHeader() { // Generate a a random filename - $filename = 'tmp-' . uniqid() . '.test'; + $filename = 'tmp-' . $this->getUniqueID() . '.test'; \OCP\Config::setSystemValue('cipher', 'AES-128-CFB'); @@ -395,7 +403,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { /** * @medium */ - function testIsEncryptedContent() { + public function testIsEncryptedContent() { $this->assertFalse(Encryption\Crypt::isCatfileContent($this->dataUrl)); @@ -410,7 +418,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { /** * @large */ - function testMultiKeyEncrypt() { + public function testMultiKeyEncrypt() { # TODO: search in keyfile for actual content as IV will ensure this test always passes @@ -437,9 +445,9 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { /** * @medium */ - function testRenameFile() { + public function testRenameFile() { - $filename = 'tmp-' . uniqid(); + $filename = 'tmp-' . $this->getUniqueID(); // Save long data as encrypted file using stream wrapper $cryptedFile = file_put_contents('crypt:///' . $this->userId . '/files/' . $filename, $this->dataLong); @@ -452,7 +460,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { $this->assertEquals($this->dataLong, $decrypt); - $newFilename = 'tmp-new-' . uniqid(); + $newFilename = 'tmp-new-' . $this->getUniqueID(); $view = new \OC\Files\View('/' . $this->userId . '/files'); $view->rename($filename, $newFilename); @@ -468,9 +476,9 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { /** * @medium */ - function testMoveFileIntoFolder() { + public function testMoveFileIntoFolder() { - $filename = 'tmp-' . uniqid(); + $filename = 'tmp-' . $this->getUniqueID(); // Save long data as encrypted file using stream wrapper $cryptedFile = file_put_contents('crypt:///' . $this->userId . '/files/' . $filename, $this->dataLong); @@ -483,8 +491,8 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { $this->assertEquals($this->dataLong, $decrypt); - $newFolder = '/newfolder' . uniqid(); - $newFilename = 'tmp-new-' . uniqid(); + $newFolder = '/newfolder' . $this->getUniqueID(); + $newFilename = 'tmp-new-' . $this->getUniqueID(); $view = new \OC\Files\View('/' . $this->userId . '/files'); $view->mkdir($newFolder); $view->rename($filename, $newFolder . '/' . $newFilename); @@ -501,12 +509,12 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { /** * @medium */ - function testMoveFolder() { + public function testMoveFolder() { $view = new \OC\Files\View('/' . $this->userId . '/files'); - $filename = '/tmp-' . uniqid(); - $folder = '/folder' . uniqid(); + $filename = '/tmp-' . $this->getUniqueID(); + $folder = '/folder' . $this->getUniqueID(); $view->mkdir($folder); @@ -521,7 +529,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { $this->assertEquals($this->dataLong, $decrypt); - $newFolder = '/newfolder/subfolder' . uniqid(); + $newFolder = '/newfolder/subfolder' . $this->getUniqueID(); $view->mkdir('/newfolder'); $view->rename($folder, $newFolder); @@ -539,8 +547,8 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { /** * @medium */ - function testChangePassphrase() { - $filename = 'tmp-' . uniqid(); + public function testChangePassphrase() { + $filename = 'tmp-' . $this->getUniqueID(); // Save long data as encrypted file using stream wrapper $cryptedFile = file_put_contents('crypt:///' . $this->userId . '/files/' . $filename, $this->dataLong); @@ -576,9 +584,9 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { /** * @medium */ - function testViewFilePutAndGetContents() { + public function testViewFilePutAndGetContents() { - $filename = '/tmp-' . uniqid(); + $filename = '/tmp-' . $this->getUniqueID(); $view = new \OC\Files\View('/' . $this->userId . '/files'); // Save short data as encrypted file using stream wrapper @@ -610,8 +618,8 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { /** * @large */ - function testTouchExistingFile() { - $filename = '/tmp-' . uniqid(); + public function testTouchExistingFile() { + $filename = '/tmp-' . $this->getUniqueID(); $view = new \OC\Files\View('/' . $this->userId . '/files'); // Save short data as encrypted file using stream wrapper @@ -634,8 +642,8 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { /** * @medium */ - function testTouchFile() { - $filename = '/tmp-' . uniqid(); + public function testTouchFile() { + $filename = '/tmp-' . $this->getUniqueID(); $view = new \OC\Files\View('/' . $this->userId . '/files'); $view->touch($filename); @@ -658,8 +666,8 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { /** * @medium */ - function testFopenFile() { - $filename = '/tmp-' . uniqid(); + public function testFopenFile() { + $filename = '/tmp-' . $this->getUniqueID(); $view = new \OC\Files\View('/' . $this->userId . '/files'); // Save short data as encrypted file using stream wrapper @@ -676,6 +684,7 @@ class Test_Encryption_Crypt extends \PHPUnit_Framework_TestCase { $this->assertEquals($this->dataShort, $decrypt); // tear down + fclose($handle); $view->unlink($filename); } diff --git a/apps/files_encryption/tests/helper.php b/apps/files_encryption/tests/helper.php index ed543bf89f6..fcde7dc5df3 100644 --- a/apps/files_encryption/tests/helper.php +++ b/apps/files_encryption/tests/helper.php @@ -6,32 +6,38 @@ * See the COPYING-README file. */ -require_once __DIR__ . '/util.php'; - use OCA\Encryption; /** * Class Test_Encryption_Helper */ -class Test_Encryption_Helper extends \PHPUnit_Framework_TestCase { +class Test_Encryption_Helper extends \OCA\Files_Encryption\Tests\TestCase { const TEST_ENCRYPTION_HELPER_USER1 = "test-helper-user1"; const TEST_ENCRYPTION_HELPER_USER2 = "test-helper-user2"; - public function setUp() { + protected function setUpUsers() { // create test user - \Test_Encryption_Util::loginHelper(\Test_Encryption_Helper::TEST_ENCRYPTION_HELPER_USER2, true); - \Test_Encryption_Util::loginHelper(\Test_Encryption_Helper::TEST_ENCRYPTION_HELPER_USER1, true); + self::loginHelper(\Test_Encryption_Helper::TEST_ENCRYPTION_HELPER_USER2, true); + self::loginHelper(\Test_Encryption_Helper::TEST_ENCRYPTION_HELPER_USER1, true); } - public function tearDown() { + protected function cleanUpUsers() { // cleanup test user \OC_User::deleteUser(\Test_Encryption_Helper::TEST_ENCRYPTION_HELPER_USER1); \OC_User::deleteUser(\Test_Encryption_Helper::TEST_ENCRYPTION_HELPER_USER2); } - public static function tearDownAfterClass() { + public static function setupHooks() { + // Filesystem related hooks + \OCA\Encryption\Helper::registerFilesystemHooks(); + + // clear and register hooks + \OC_FileProxy::clearProxies(); + \OC_FileProxy::register(new OCA\Encryption\Proxy()); + } + public static function tearDownAfterClass() { \OC_Hook::clear(); \OC_FileProxy::clearProxies(); @@ -39,6 +45,8 @@ class Test_Encryption_Helper extends \PHPUnit_Framework_TestCase { $view = new \OC\Files\View('/'); $view->rmdir('public-keys'); $view->rmdir('owncloud_private_key'); + + parent::tearDownAfterClass(); } /** @@ -90,19 +98,20 @@ class Test_Encryption_Helper extends \PHPUnit_Framework_TestCase { } function testGetUser() { + self::setUpUsers(); $path1 = "/" . self::TEST_ENCRYPTION_HELPER_USER1 . "/files/foo/bar.txt"; $path2 = "/" . self::TEST_ENCRYPTION_HELPER_USER1 . "/cache/foo/bar.txt"; $path3 = "/" . self::TEST_ENCRYPTION_HELPER_USER2 . "/thumbnails/foo"; $path4 ="/" . "/" . self::TEST_ENCRYPTION_HELPER_USER1; - \Test_Encryption_Util::loginHelper(self::TEST_ENCRYPTION_HELPER_USER1); + self::loginHelper(self::TEST_ENCRYPTION_HELPER_USER1); // if we are logged-in every path should return the currently logged-in user $this->assertEquals(self::TEST_ENCRYPTION_HELPER_USER1, Encryption\Helper::getUser($path3)); // now log out - \Test_Encryption_Util::logoutHelper(); + self::logoutHelper(); // now we should only get the user from /user/files and user/cache paths $this->assertEquals(self::TEST_ENCRYPTION_HELPER_USER1, Encryption\Helper::getUser($path1)); @@ -112,12 +121,13 @@ class Test_Encryption_Helper extends \PHPUnit_Framework_TestCase { $this->assertFalse(Encryption\Helper::getUser($path4)); // Log-in again - \Test_Encryption_Util::loginHelper(\Test_Encryption_Helper::TEST_ENCRYPTION_HELPER_USER1); + self::loginHelper(\Test_Encryption_Helper::TEST_ENCRYPTION_HELPER_USER1); + self::cleanUpUsers(); } function userNamesProvider() { return array( - array('testuser' . uniqid()), + array('testuser' . $this->getUniqueID()), array('user.name.with.dots'), ); } @@ -128,12 +138,13 @@ class Test_Encryption_Helper extends \PHPUnit_Framework_TestCase { * @dataProvider userNamesProvider */ function testFindShareKeys($userName) { + self::setUpUsers(); // note: not using dataProvider as we want to make // sure that the correct keys are match and not any // other ones that might happen to have similar names - \Test_Encryption_Util::setupHooks(); - \Test_Encryption_Util::loginHelper($userName, true); - $testDir = 'testFindShareKeys' . uniqid() . '/'; + self::setupHooks(); + self::loginHelper($userName, true); + $testDir = 'testFindShareKeys' . $this->getUniqueID() . '/'; $baseDir = $userName . '/files/' . $testDir; $fileList = array( 't est.txt', @@ -164,6 +175,6 @@ class Test_Encryption_Helper extends \PHPUnit_Framework_TestCase { $result ); } + self::cleanUpUsers(); } - } diff --git a/apps/files_encryption/tests/hooks.php b/apps/files_encryption/tests/hooks.php index c2434c0f5f6..4b8be0c7c1c 100644 --- a/apps/files_encryption/tests/hooks.php +++ b/apps/files_encryption/tests/hooks.php @@ -20,24 +20,22 @@ * */ -require_once __DIR__ . '/util.php'; - use OCA\Encryption; /** * Class Test_Encryption_Hooks * this class provide basic hook app tests */ -class Test_Encryption_Hooks extends \PHPUnit_Framework_TestCase { +class Test_Encryption_Hooks extends \OCA\Files_Encryption\Tests\TestCase { const TEST_ENCRYPTION_HOOKS_USER1 = "test-encryption-hooks-user1.dot"; const TEST_ENCRYPTION_HOOKS_USER2 = "test-encryption-hooks-user2.dot"; - /** - * @var \OC\Files\View - */ + /** @var \OC\Files\View */ public $user1View; // view on /data/user1/files + /** @var \OC\Files\View */ public $user2View; // view on /data/user2/files + /** @var \OC\Files\View */ public $rootView; // view on /data/user public $data; public $filename; @@ -46,6 +44,8 @@ class Test_Encryption_Hooks extends \PHPUnit_Framework_TestCase { private static $testFiles; public static function setUpBeforeClass() { + parent::setUpBeforeClass(); + // note: not using a data provider because these // files all need to coexist to make sure the // share keys are found properly (pattern matching) @@ -86,13 +86,15 @@ class Test_Encryption_Hooks extends \PHPUnit_Framework_TestCase { \OC_FileProxy::register(new OCA\Encryption\Proxy()); // create test user - \Test_Encryption_Util::loginHelper(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1, true); - \Test_Encryption_Util::loginHelper(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER2, true); + self::loginHelper(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1, true); + self::loginHelper(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER2, true); } - function setUp() { + protected function setUp() { + parent::setUp(); + // set user id - \Test_Encryption_Util::loginHelper(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1); + self::loginHelper(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1); \OC_User::setUserId(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1); // init filesystem view @@ -102,8 +104,8 @@ class Test_Encryption_Hooks extends \PHPUnit_Framework_TestCase { // init short data $this->data = 'hats'; - $this->filename = 'enc_hooks_tests-' . uniqid() . '.txt'; - $this->folder = 'enc_hooks_tests_folder-' . uniqid(); + $this->filename = 'enc_hooks_tests-' . $this->getUniqueID() . '.txt'; + $this->folder = 'enc_hooks_tests_folder-' . $this->getUniqueID(); } @@ -119,6 +121,8 @@ class Test_Encryption_Hooks extends \PHPUnit_Framework_TestCase { $view = new \OC\Files\View('/'); $view->rmdir('public-keys'); $view->rmdir('owncloud_private_key'); + + parent::tearDownAfterClass(); } function testDisableHook() { @@ -140,7 +144,7 @@ class Test_Encryption_Hooks extends \PHPUnit_Framework_TestCase { // relogin user to initialize the encryption again $user = \OCP\User::getUser(); - \Test_Encryption_Util::loginHelper($user); + self::loginHelper($user); } @@ -165,8 +169,8 @@ class Test_Encryption_Hooks extends \PHPUnit_Framework_TestCase { self::TEST_ENCRYPTION_HOOKS_USER1 . '/files_encryption/keyfiles/' . $this->filename . '.key')); - \Test_Encryption_Util::logoutHelper(); - \Test_Encryption_Util::loginHelper(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER2); + self::logoutHelper(); + self::loginHelper(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER2); \OC_User::setUserId(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER2); @@ -223,8 +227,8 @@ class Test_Encryption_Hooks extends \PHPUnit_Framework_TestCase { function testDeleteHooksForSharedFiles() { - \Test_Encryption_Util::logoutHelper(); - \Test_Encryption_Util::loginHelper(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1); + self::logoutHelper(); + self::loginHelper(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1); \OC_User::setUserId(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1); // remember files_trashbin state @@ -252,15 +256,15 @@ class Test_Encryption_Hooks extends \PHPUnit_Framework_TestCase { $this->assertTrue($fileInfo instanceof \OC\Files\FileInfo); // share the file with user2 - \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, self::TEST_ENCRYPTION_HOOKS_USER2, OCP\PERMISSION_ALL); + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, self::TEST_ENCRYPTION_HOOKS_USER2, \OCP\Constants::PERMISSION_ALL); // check if new share key exists $this->assertTrue($this->rootView->file_exists( self::TEST_ENCRYPTION_HOOKS_USER1 . '/files_encryption/share-keys/' . $this->filename . '.' . \Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER2 . '.shareKey')); - \Test_Encryption_Util::logoutHelper(); - \Test_Encryption_Util::loginHelper(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER2); + self::logoutHelper(); + self::loginHelper(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER2); \OC_User::setUserId(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER2); // user2 update the shared file @@ -290,8 +294,8 @@ class Test_Encryption_Hooks extends \PHPUnit_Framework_TestCase { // cleanup - \Test_Encryption_Util::logoutHelper(); - \Test_Encryption_Util::loginHelper(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1); + self::logoutHelper(); + self::loginHelper(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1); \OC_User::setUserId(\Test_Encryption_Hooks::TEST_ENCRYPTION_HOOKS_USER1); if ($stateFilesTrashbin) { diff --git a/apps/files_encryption/tests/keymanager.php b/apps/files_encryption/tests/keymanager.php index e2486ee93eb..b4dc6ddeb56 100644 --- a/apps/files_encryption/tests/keymanager.php +++ b/apps/files_encryption/tests/keymanager.php @@ -6,14 +6,12 @@ * See the COPYING-README file. */ -require_once __DIR__ . '/util.php'; - use OCA\Encryption; /** * Class Test_Encryption_Keymanager */ -class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase { +class Test_Encryption_Keymanager extends \OCA\Files_Encryption\Tests\TestCase { const TEST_USER = "test-keymanager-user.dot"; @@ -28,6 +26,8 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase { public $dataShort; public static function setUpBeforeClass() { + parent::setUpBeforeClass(); + // reset backend \OC_User::clearBackends(); \OC_User::useBackend('database'); @@ -50,10 +50,11 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase { // create test user \OC_User::deleteUser(\Test_Encryption_Keymanager::TEST_USER); - \Test_Encryption_Util::loginHelper(\Test_Encryption_Keymanager::TEST_USER, true); + parent::loginHelper(\Test_Encryption_Keymanager::TEST_USER, true); } - function setUp() { + protected function setUp() { + parent::setUp(); // set content for encrypting / decrypting in tests $this->dataLong = file_get_contents(__DIR__ . '/../lib/crypt.php'); $this->dataShort = 'hats'; @@ -68,7 +69,7 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase { $this->view = new \OC\Files\View('/'); - \Test_Encryption_Util::loginHelper(Test_Encryption_Keymanager::TEST_USER); + self::loginHelper(Test_Encryption_Keymanager::TEST_USER); $this->userId = \Test_Encryption_Keymanager::TEST_USER; $this->pass = \Test_Encryption_Keymanager::TEST_USER; @@ -79,6 +80,8 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase { function tearDown() { $this->view->deleteAll('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/share-keys'); $this->view->deleteAll('/'.Test_Encryption_Keymanager::TEST_USER.'/files_encryption/keyfiles'); + + parent::tearDown(); } public static function tearDownAfterClass() { @@ -98,6 +101,8 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase { $view = new \OC\Files\View('/'); $view->rmdir('public-keys'); $view->rmdir('owncloud_private_key'); + + parent::tearDownAfterClass(); } /** @@ -163,7 +168,7 @@ class Test_Encryption_Keymanager extends \PHPUnit_Framework_TestCase { $key = $this->randomKey; - $file = 'unittest-' . uniqid() . '.txt'; + $file = 'unittest-' . $this->getUniqueID() . '.txt'; $util = new Encryption\Util($this->view, $this->userId); diff --git a/apps/files_encryption/tests/migration.php b/apps/files_encryption/tests/migration.php index 80f30d4e793..8ca2e94c90a 100644 --- a/apps/files_encryption/tests/migration.php +++ b/apps/files_encryption/tests/migration.php @@ -23,16 +23,20 @@ use OCA\Encryption; use OCA\Files_Encryption\Migration; -class Test_Migration extends PHPUnit_Framework_TestCase { +class Test_Migration extends \Test\TestCase { - public function tearDown() { + protected function tearDown() { if (OC_DB::tableExists('encryption_test')) { OC_DB::dropTable('encryption_test'); } $this->assertTableNotExist('encryption_test'); + + parent::tearDown(); } - public function setUp() { + protected function setUp() { + parent::setUp(); + if (OC_DB::tableExists('encryption_test')) { OC_DB::dropTable('encryption_test'); } diff --git a/apps/files_encryption/tests/proxy.php b/apps/files_encryption/tests/proxy.php index d3e568f8914..a91222327f1 100644 --- a/apps/files_encryption/tests/proxy.php +++ b/apps/files_encryption/tests/proxy.php @@ -20,15 +20,13 @@ * */ -require_once __DIR__ . '/util.php'; - use OCA\Encryption; /** * Class Test_Encryption_Proxy * this class provide basic proxy app tests */ -class Test_Encryption_Proxy extends \PHPUnit_Framework_TestCase { +class Test_Encryption_Proxy extends \OCA\Files_Encryption\Tests\TestCase { const TEST_ENCRYPTION_PROXY_USER1 = "test-proxy-user1"; @@ -44,6 +42,8 @@ class Test_Encryption_Proxy extends \PHPUnit_Framework_TestCase { public $filename; public static function setUpBeforeClass() { + parent::setUpBeforeClass(); + // reset backend \OC_User::clearBackends(); \OC_User::useBackend('database'); @@ -59,10 +59,12 @@ class Test_Encryption_Proxy extends \PHPUnit_Framework_TestCase { \OC_FileProxy::register(new OCA\Encryption\Proxy()); // create test user - \Test_Encryption_Util::loginHelper(\Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1, true); + self::loginHelper(\Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1, true); } - function setUp() { + protected function setUp() { + parent::setUp(); + // set user id \OC_User::setUserId(\Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1); $this->userId = \Test_Encryption_Proxy::TEST_ENCRYPTION_PROXY_USER1; @@ -75,7 +77,7 @@ class Test_Encryption_Proxy extends \PHPUnit_Framework_TestCase { // init short data $this->data = 'hats'; $this->dataLong = file_get_contents(__DIR__ . '/../lib/crypt.php'); - $this->filename = 'enc_proxy_tests-' . uniqid() . '.txt'; + $this->filename = 'enc_proxy_tests-' . $this->getUniqueID() . '.txt'; } @@ -90,6 +92,8 @@ class Test_Encryption_Proxy extends \PHPUnit_Framework_TestCase { $view = new \OC\Files\View('/'); $view->rmdir('public-keys'); $view->rmdir('owncloud_private_key'); + + parent::tearDownAfterClass(); } /** diff --git a/apps/files_encryption/tests/share.php b/apps/files_encryption/tests/share.php index d7efe21a8fd..24b828433d0 100755 --- a/apps/files_encryption/tests/share.php +++ b/apps/files_encryption/tests/share.php @@ -20,14 +20,12 @@ * */ -require_once __DIR__ . '/util.php'; - use OCA\Encryption; /** * Class Test_Encryption_Share */ -class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { +class Test_Encryption_Share extends \OCA\Files_Encryption\Tests\TestCase { const TEST_ENCRYPTION_SHARE_USER1 = "test-share-user1"; const TEST_ENCRYPTION_SHARE_USER2 = "test-share-user2"; @@ -47,6 +45,8 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { public $subsubfolder; public static function setUpBeforeClass() { + parent::setUpBeforeClass(); + // reset backend \OC_User::clearBackends(); \OC_User::useBackend('database'); @@ -73,10 +73,10 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { \OC_FileProxy::register(new OCA\Encryption\Proxy()); // create users - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1, true); - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2, true); - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3, true); - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4, true); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1, true); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2, true); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3, true); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4, true); // create group and assign users \OC_Group::createGroup(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_GROUP1); @@ -84,7 +84,9 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { \OC_Group::addToGroup(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_GROUP1); } - function setUp() { + protected function setUp() { + parent::setUp(); + $this->dataShort = 'hats'; $this->view = new \OC\Files\View('/'); @@ -101,16 +103,18 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { \OC_App::disable('files_trashbin'); // login as first user - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); } - function tearDown() { + protected function tearDown() { // reset app files_trashbin if ($this->stateFilesTrashbin) { OC_App::enable('files_trashbin'); } else { OC_App::disable('files_trashbin'); } + + parent::tearDown(); } public static function tearDownAfterClass() { @@ -130,6 +134,8 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { $view = new \OC\Files\View('/'); $view->rmdir('public-keys'); $view->rmdir('owncloud_private_key'); + + parent::tearDownAfterClass(); } @@ -139,7 +145,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { */ function testShareFile($withTeardown = true) { // login as admin - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // save file with content $cryptedFile = file_put_contents('crypt:///' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this->filename, $this->dataShort); @@ -165,10 +171,10 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { \OC_FileProxy::$enabled = $proxyStatus; // share the file - \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2, OCP\PERMISSION_ALL); + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2, \OCP\Constants::PERMISSION_ALL); // login as admin - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // check if share key for user1 exists $this->assertTrue($this->view->file_exists( @@ -176,7 +182,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '.shareKey')); // login as user1 - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); // get file contents $retrievedCryptedFile = $this->view->file_get_contents( @@ -189,7 +195,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { if ($withTeardown) { // login as admin - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // unshare the file \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); @@ -219,17 +225,17 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { $this->testShareFile(false); // login as user2 - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); // get the file info $fileInfo = $this->view->getFileInfo( '/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files/' . $this->filename); // share the file with user3 - \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3, OCP\PERMISSION_ALL); + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3, \OCP\Constants::PERMISSION_ALL); // login as admin - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // check if share key for user2 exists $this->assertTrue($this->view->file_exists( @@ -237,7 +243,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '.shareKey')); // login as user2 - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3); // get file contents $retrievedCryptedFile = $this->view->file_get_contents( @@ -250,13 +256,13 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { if ($withTeardown) { // login as user1 - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); // unshare the file with user2 \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3); // login as admin - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // check if share key not exists $this->assertFalse($this->view->file_exists( @@ -290,7 +296,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { */ function testShareFolder($withTeardown = true) { // login as admin - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // create folder structure $this->view->mkdir('/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files' . $this->folder1); @@ -322,10 +328,10 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { \OC_FileProxy::$enabled = $proxyStatus; // share the folder with user1 - \OCP\Share::shareItem('folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2, OCP\PERMISSION_ALL); + \OCP\Share::shareItem('folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2, \OCP\Constants::PERMISSION_ALL); // login as admin - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // check if share key for user1 exists $this->assertTrue($this->view->file_exists( @@ -334,7 +340,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '.shareKey')); // login as user1 - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); // get file contents $retrievedCryptedFile = $this->view->file_get_contents( @@ -348,7 +354,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { if ($withTeardown) { // login as admin - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // unshare the folder with user1 \OCP\Share::unshare('folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); @@ -382,7 +388,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { $fileInfoFolder1 = $this->testShareFolder(false); // login as user2 - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); // disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; @@ -400,10 +406,10 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { \OC_FileProxy::$enabled = $proxyStatus; // share the file with user3 - \OCP\Share::shareItem('folder', $fileInfoSubFolder['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3, OCP\PERMISSION_ALL); + \OCP\Share::shareItem('folder', $fileInfoSubFolder['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3, \OCP\Constants::PERMISSION_ALL); // login as admin - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // check if share key for user3 exists $this->assertTrue($this->view->file_exists( @@ -412,7 +418,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '.shareKey')); // login as user3 - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3); // get file contents $retrievedCryptedFile = $this->view->file_get_contents( @@ -431,10 +437,10 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { $this->assertTrue($fileInfo instanceof \OC\Files\FileInfo); // share the file with user3 - \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4, OCP\PERMISSION_ALL); + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4, \OCP\Constants::PERMISSION_ALL); // login as admin - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // check if share key for user3 exists $this->assertTrue($this->view->file_exists( @@ -443,7 +449,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4 . '.shareKey')); // login as user3 - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4); // get file contents $retrievedCryptedFile = $this->view->file_get_contents( @@ -456,7 +462,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { if ($withTeardown) { // login as user2 - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3); // unshare the file with user3 \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4); @@ -468,7 +474,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4 . '.shareKey')); // login as user1 - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); // unshare the folder with user2 \OCP\Share::unshare('folder', $fileInfoSubFolder['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3); @@ -480,7 +486,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3 . '.shareKey')); // login as admin - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // unshare the folder1 with user1 \OCP\Share::unshare('folder', $fileInfoFolder1['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); @@ -507,7 +513,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { function testPublicShareFile() { // login as admin - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // save file with content $cryptedFile = file_put_contents('crypt:///' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this->filename, $this->dataShort); @@ -533,10 +539,10 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { \OC_FileProxy::$enabled = $proxyStatus; // share the file - \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, false, OCP\PERMISSION_ALL); + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, false, \OCP\Constants::PERMISSION_ALL); // login as admin - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); $publicShareKeyId = \OC::$server->getAppConfig()->getValue('files_encryption', 'publicShareKeyId'); @@ -548,7 +554,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { // some hacking to simulate public link //$GLOBALS['app'] = 'files_sharing'; //$GLOBALS['fileOwner'] = \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1; - \Test_Encryption_Util::logoutHelper(); + self::logoutHelper(); // get file contents $retrievedCryptedFile = file_get_contents('crypt:///' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this->filename); @@ -559,7 +565,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { // tear down // login as admin - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // unshare the file \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null); @@ -585,7 +591,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { */ function testShareFileWithGroup() { // login as admin - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // save file with content $cryptedFile = file_put_contents('crypt:///' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this->filename, $this->dataShort); @@ -611,10 +617,10 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { \OC_FileProxy::$enabled = $proxyStatus; // share the file - \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_GROUP1, OCP\PERMISSION_ALL); + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_GROUP1, \OCP\Constants::PERMISSION_ALL); // login as admin - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // check if share key for user2 and user3 exists $this->assertTrue($this->view->file_exists( @@ -625,7 +631,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { . $this->filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER4 . '.shareKey')); // login as user1 - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER3); // get file contents $retrievedCryptedFile = $this->view->file_get_contents( @@ -635,7 +641,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { $this->assertEquals($this->dataShort, $retrievedCryptedFile); // login as admin - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // unshare the file \OCP\Share::unshare('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_GROUP1); @@ -666,13 +672,13 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { function testRecoveryFile() { // login as admin - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); \OCA\Encryption\Helper::adminEnableRecovery(null, 'test123'); $recoveryKeyId = \OC::$server->getAppConfig()->getValue('files_encryption', 'recoveryKeyId'); // login as admin - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); $util = new \OCA\Encryption\Util(new \OC\Files\View('/'), \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); @@ -772,7 +778,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { function testRecoveryForUser() { // login as admin - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); $result = \OCA\Encryption\Helper::adminEnableRecovery(null, 'test123'); $this->assertTrue($result); @@ -780,7 +786,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { $recoveryKeyId = \OC::$server->getAppConfig()->getValue('files_encryption', 'recoveryKeyId'); // login as user2 - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); $util = new \OCA\Encryption\Util(new \OC\Files\View('/'), \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); @@ -824,7 +830,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { . $this->filename . '.' . $recoveryKeyId . '.shareKey')); // login as admin - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // change password \OC_User::setPassword(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2, 'test', 'test123'); @@ -834,7 +840,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { \OCA\Encryption\Hooks::setPassphrase($params); // login as user2 - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2, false, 'test'); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2, false, 'test'); // get file contents $retrievedCryptedFile1 = file_get_contents('crypt:///' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files/' . $this->filename); @@ -886,7 +892,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { */ function testFailShareFile() { // login as admin - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // save file with content $cryptedFile = file_put_contents('crypt:///' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this->filename, $this->dataShort); @@ -917,14 +923,14 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { // share the file try { - \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_GROUP1, OCP\PERMISSION_ALL); + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_GROUP1, \OCP\Constants::PERMISSION_ALL); } catch (Exception $e) { $this->assertEquals(0, strpos($e->getMessage(), "Following users are not set up for encryption")); } // login as admin - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // check if share key for user1 not exists $this->assertFalse($this->view->file_exists( @@ -969,7 +975,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { function testRename() { // login as admin - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // save file with content $cryptedFile = file_put_contents('crypt:///' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this->filename, $this->dataShort); @@ -985,7 +991,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { $this->assertTrue($fileInfo instanceof \OC\Files\FileInfo); // share the file - \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2, OCP\PERMISSION_ALL); + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2, \OCP\Constants::PERMISSION_ALL); // check if share key for user2 exists $this->assertTrue($this->view->file_exists( @@ -994,7 +1000,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { // login as user2 - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2); $this->assertTrue($this->view->file_exists('/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '/files/' . $this->filename)); @@ -1017,7 +1023,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { $this->assertEquals($this->dataShort, $retrievedRenamedFile); // cleanup - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); $this->view->unlink('/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '/files/' . $this->filename); } @@ -1029,8 +1035,8 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { $view = new \OC\Files\View('/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); - $filename = '/tmp-' . uniqid(); - $folder = '/folder' . uniqid(); + $filename = '/tmp-' . $this->getUniqueID(); + $folder = '/folder' . $this->getUniqueID(); \OC\Files\Filesystem::mkdir($folder); @@ -1045,7 +1051,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { $this->assertEquals($this->dataShort, $decrypt); - $newFolder = '/newfolder/subfolder' . uniqid(); + $newFolder = '/newfolder/subfolder' . $this->getUniqueID(); \OC\Files\Filesystem::mkdir('/newfolder'); // get the file info from previous created file @@ -1053,7 +1059,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { $this->assertTrue($fileInfo instanceof \OC\Files\FileInfo); // share the folder - \OCP\Share::shareItem('folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2, OCP\PERMISSION_ALL); + \OCP\Share::shareItem('folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2, \OCP\Constants::PERMISSION_ALL); \OC\Files\Filesystem::rename($folder, $newFolder); @@ -1087,8 +1093,8 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { function testMoveFileToFolder($userId) { $view = new \OC\Files\View('/' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); - $filename = '/tmp-' . uniqid(); - $folder = '/folder' . uniqid(); + $filename = '/tmp-' . $this->getUniqueID(); + $folder = '/folder' . $this->getUniqueID(); \OC\Files\Filesystem::mkdir($folder); @@ -1103,7 +1109,7 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { $this->assertEquals($this->dataShort, $decrypt); - $subFolder = $folder . '/subfolder' . uniqid(); + $subFolder = $folder . '/subfolder' . $this->getUniqueID(); \OC\Files\Filesystem::mkdir($subFolder); // get the file info from previous created file @@ -1111,16 +1117,16 @@ class Test_Encryption_Share extends \PHPUnit_Framework_TestCase { $this->assertTrue($fileInfo instanceof \OC\Files\FileInfo); // share the folder - \OCP\Share::shareItem('folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2, OCP\PERMISSION_ALL); + \OCP\Share::shareItem('folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2, \OCP\Constants::PERMISSION_ALL); // check that the share keys exist $this->assertTrue($view->file_exists('files_encryption/share-keys' . $folder . '/' . $filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1 . '.shareKey')); $this->assertTrue($view->file_exists('files_encryption/share-keys' . $folder . '/' . $filename . '.' . \Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER2 . '.shareKey')); // move the file into the subfolder as the test user - \Test_Encryption_Util::loginHelper($userId); + self::loginHelper($userId); \OC\Files\Filesystem::rename($folder . $filename, $subFolder . $filename); - \Test_Encryption_Util::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); + self::loginHelper(\Test_Encryption_Share::TEST_ENCRYPTION_SHARE_USER1); // Get file decrypted contents $newDecrypt = \OC\Files\Filesystem::file_get_contents($subFolder . $filename); diff --git a/apps/files_encryption/tests/stream.php b/apps/files_encryption/tests/stream.php index 2b57f11c680..b1404ca282a 100644 --- a/apps/files_encryption/tests/stream.php +++ b/apps/files_encryption/tests/stream.php @@ -20,15 +20,13 @@ * */ -require_once __DIR__ . '/util.php'; - use OCA\Encryption; /** * Class Test_Encryption_Stream * this class provide basic stream tests */ -class Test_Encryption_Stream extends \PHPUnit_Framework_TestCase { +class Test_Encryption_Stream extends \OCA\Files_Encryption\Tests\TestCase { const TEST_ENCRYPTION_STREAM_USER1 = "test-stream-user1"; @@ -42,6 +40,8 @@ class Test_Encryption_Stream extends \PHPUnit_Framework_TestCase { public $stateFilesTrashbin; public static function setUpBeforeClass() { + parent::setUpBeforeClass(); + // reset backend \OC_User::clearBackends(); \OC_User::useBackend('database'); @@ -54,10 +54,12 @@ class Test_Encryption_Stream extends \PHPUnit_Framework_TestCase { \OC_FileProxy::register(new OCA\Encryption\Proxy()); // create test user - \Test_Encryption_Util::loginHelper(\Test_Encryption_Stream::TEST_ENCRYPTION_STREAM_USER1, true); + self::loginHelper(\Test_Encryption_Stream::TEST_ENCRYPTION_STREAM_USER1, true); } - function setUp() { + protected function setUp() { + parent::setUp(); + // set user id \OC_User::setUserId(\Test_Encryption_Stream::TEST_ENCRYPTION_STREAM_USER1); $this->userId = \Test_Encryption_Stream::TEST_ENCRYPTION_STREAM_USER1; @@ -76,7 +78,7 @@ class Test_Encryption_Stream extends \PHPUnit_Framework_TestCase { \OC_App::disable('files_trashbin'); } - function tearDown() { + protected function tearDown() { // reset app files_trashbin if ($this->stateFilesTrashbin) { OC_App::enable('files_trashbin'); @@ -84,6 +86,8 @@ class Test_Encryption_Stream extends \PHPUnit_Framework_TestCase { else { OC_App::disable('files_trashbin'); } + + parent::tearDown(); } public static function tearDownAfterClass() { @@ -97,10 +101,12 @@ class Test_Encryption_Stream extends \PHPUnit_Framework_TestCase { $view = new \OC\Files\View('/'); $view->rmdir('public-keys'); $view->rmdir('owncloud_private_key'); + + parent::tearDownAfterClass(); } function testStreamOptions() { - $filename = '/tmp-' . uniqid(); + $filename = '/tmp-' . $this->getUniqueID(); $view = new \OC\Files\View('/' . $this->userId . '/files'); // Save short data as encrypted file using stream wrapper @@ -118,12 +124,14 @@ class Test_Encryption_Stream extends \PHPUnit_Framework_TestCase { $this->assertTrue(flock($handle, LOCK_SH)); $this->assertTrue(flock($handle, LOCK_UN)); + fclose($handle); + // tear down $view->unlink($filename); } function testStreamSetBlocking() { - $filename = '/tmp-' . uniqid(); + $filename = '/tmp-' . $this->getUniqueID(); $view = new \OC\Files\View('/' . $this->userId . '/files'); // Save short data as encrypted file using stream wrapper @@ -134,6 +142,13 @@ class Test_Encryption_Stream extends \PHPUnit_Framework_TestCase { $handle = $view->fopen($filename, 'r'); + + if (\OC_Util::runningOnWindows()) { + fclose($handle); + $view->unlink($filename); + $this->markTestSkipped('[Windows] stream_set_blocking() does not work as expected on Windows.'); + } + // set stream options $this->assertTrue(stream_set_blocking($handle, 1)); @@ -147,7 +162,7 @@ class Test_Encryption_Stream extends \PHPUnit_Framework_TestCase { * @medium */ function testStreamSetTimeout() { - $filename = '/tmp-' . uniqid(); + $filename = '/tmp-' . $this->getUniqueID(); $view = new \OC\Files\View('/' . $this->userId . '/files'); // Save short data as encrypted file using stream wrapper @@ -168,7 +183,7 @@ class Test_Encryption_Stream extends \PHPUnit_Framework_TestCase { } function testStreamSetWriteBuffer() { - $filename = '/tmp-' . uniqid(); + $filename = '/tmp-' . $this->getUniqueID(); $view = new \OC\Files\View('/' . $this->userId . '/files'); // Save short data as encrypted file using stream wrapper @@ -194,9 +209,9 @@ class Test_Encryption_Stream extends \PHPUnit_Framework_TestCase { */ function testStreamFromLocalFile() { - $filename = '/' . $this->userId . '/files/' . 'tmp-' . uniqid().'.txt'; + $filename = '/' . $this->userId . '/files/' . 'tmp-' . $this->getUniqueID().'.txt'; - $tmpFilename = "/tmp/" . uniqid() . ".txt"; + $tmpFilename = "/tmp/" . $this->getUniqueID() . ".txt"; // write an encrypted file $cryptedFile = $this->view->file_put_contents($filename, $this->dataShort); @@ -221,6 +236,8 @@ class Test_Encryption_Stream extends \PHPUnit_Framework_TestCase { // check if it was successful $this->assertEquals($this->dataShort, $contentFromTmpFile); + fclose($handle); + // clean up unlink($tmpFilename); $this->view->unlink($filename); diff --git a/apps/files_encryption/tests/testcase.php b/apps/files_encryption/tests/testcase.php new file mode 100644 index 00000000000..3106aeda8ea --- /dev/null +++ b/apps/files_encryption/tests/testcase.php @@ -0,0 +1,53 @@ +<?php +/** + * Copyright (c) 2012 Sam Tuke <samtuke@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OCA\Files_Encryption\Tests; + +use OCA\Encryption; + +/** + * Class Test_Encryption_TestCase + */ +abstract class TestCase extends \Test\TestCase { + /** + * @param string $user + * @param bool $create + * @param bool $password + */ + public static function loginHelper($user, $create = false, $password = false, $loadEncryption = true) { + if ($create) { + try { + \OC_User::createUser($user, $user); + } catch (\Exception $e) { + // catch username is already being used from previous aborted runs + } + } + + if ($password === false) { + $password = $user; + } + + \OC_Util::tearDownFS(); + \OC_User::setUserId(''); + \OC\Files\Filesystem::tearDown(); + \OC_User::setUserId($user); + \OC_Util::setupFS($user); + + if ($loadEncryption) { + $params['uid'] = $user; + $params['password'] = $password; + \OCA\Encryption\Hooks::login($params); + } + } + + public static function logoutHelper() { + \OC_Util::tearDownFS(); + \OC_User::setUserId(false); + \OC\Files\Filesystem::tearDown(); + } +} diff --git a/apps/files_encryption/tests/trashbin.php b/apps/files_encryption/tests/trashbin.php index d795240399c..a43e8f964a2 100755 --- a/apps/files_encryption/tests/trashbin.php +++ b/apps/files_encryption/tests/trashbin.php @@ -20,15 +20,13 @@ * */ -require_once __DIR__ . '/util.php'; - use OCA\Encryption; /** * Class Test_Encryption_Trashbin * this class provide basic trashbin app tests */ -class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase { +class Test_Encryption_Trashbin extends \OCA\Files_Encryption\Tests\TestCase { const TEST_ENCRYPTION_TRASHBIN_USER1 = "test-trashbin-user1"; @@ -45,6 +43,8 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase { public $subsubfolder; public static function setUpBeforeClass() { + parent::setUpBeforeClass(); + // reset backend \OC_User::clearBackends(); \OC_User::useBackend('database'); @@ -63,14 +63,16 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase { \OC_FileProxy::register(new OCA\Encryption\Proxy()); // create test user - \Test_Encryption_Util::loginHelper(\Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1, true); + self::loginHelper(self::TEST_ENCRYPTION_TRASHBIN_USER1, true); } - function setUp() { + protected function setUp() { + parent::setUp(); + // set user id - \OC_User::setUserId(\Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1); - $this->userId = \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1; - $this->pass = \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1; + \OC_User::setUserId(self::TEST_ENCRYPTION_TRASHBIN_USER1); + $this->userId = self::TEST_ENCRYPTION_TRASHBIN_USER1; + $this->pass = self::TEST_ENCRYPTION_TRASHBIN_USER1; // init filesystem view $this->view = new \OC\Files\View('/'); @@ -89,7 +91,7 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase { \OC_App::enable('files_trashbin'); } - function tearDown() { + protected function tearDown() { // reset app files_trashbin if ($this->stateFilesTrashbin) { OC_App::enable('files_trashbin'); @@ -97,11 +99,13 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase { else { OC_App::disable('files_trashbin'); } + + parent::tearDown(); } public static function tearDownAfterClass() { // cleanup test user - \OC_User::deleteUser(\Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1); + \OC_User::deleteUser(self::TEST_ENCRYPTION_TRASHBIN_USER1); \OC_Hook::clear(); \OC_FileProxy::clearProxies(); @@ -110,6 +114,8 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase { $view = new \OC\Files\View('/'); $view->rmdir('public-keys'); $view->rmdir('owncloud_private_key'); + + parent::tearDownAfterClass(); } /** @@ -119,12 +125,12 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase { function testDeleteFile() { // generate filename - $filename = 'tmp-' . uniqid() . '.txt'; + $filename = 'tmp-' . $this->getUniqueID() . '.txt'; $filename2 = $filename . '.backup'; // a second file with similar name // save file with content - $cryptedFile = file_put_contents('crypt:///' .\Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1. '/files/'. $filename, $this->dataShort); - $cryptedFile2 = file_put_contents('crypt:///' .\Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1. '/files/'. $filename2, $this->dataShort); + $cryptedFile = file_put_contents('crypt:///' .self::TEST_ENCRYPTION_TRASHBIN_USER1. '/files/'. $filename, $this->dataShort); + $cryptedFile2 = file_put_contents('crypt:///' .self::TEST_ENCRYPTION_TRASHBIN_USER1. '/files/'. $filename2, $this->dataShort); // test that data was successfully written $this->assertTrue(is_int($cryptedFile)); @@ -132,59 +138,59 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase { // check if key for admin exists $this->assertTrue($this->view->file_exists( - '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keyfiles/' . $filename + '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keyfiles/' . $filename . '.key')); $this->assertTrue($this->view->file_exists( - '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keyfiles/' . $filename2 + '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keyfiles/' . $filename2 . '.key')); // check if share key for admin exists $this->assertTrue($this->view->file_exists( - '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/share-keys/' - . $filename . '.' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey')); + '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/share-keys/' + . $filename . '.' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey')); $this->assertTrue($this->view->file_exists( - '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/share-keys/' - . $filename2 . '.' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey')); + '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/share-keys/' + . $filename2 . '.' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey')); // delete first file \OC\FIles\Filesystem::unlink($filename); // check if file not exists $this->assertFalse($this->view->file_exists( - '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files/' . $filename)); + '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files/' . $filename)); // check if key for admin not exists $this->assertFalse($this->view->file_exists( - '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keyfiles/' . $filename + '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keyfiles/' . $filename . '.key')); // check if share key for admin not exists $this->assertFalse($this->view->file_exists( - '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/share-keys/' - . $filename . '.' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey')); + '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/share-keys/' + . $filename . '.' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey')); // check that second file still exists $this->assertTrue($this->view->file_exists( - '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files/' . $filename2)); + '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files/' . $filename2)); // check that key for second file still exists $this->assertTrue($this->view->file_exists( - '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keyfiles/' . $filename2 + '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keyfiles/' . $filename2 . '.key')); // check that share key for second file still exists $this->assertTrue($this->view->file_exists( - '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/share-keys/' - . $filename2 . '.' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey')); + '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/share-keys/' + . $filename2 . '.' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey')); // get files $trashFiles = $this->view->getDirectoryContent( - '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/files/'); + '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/files/'); $trashFileSuffix = null; // find created file with timestamp foreach ($trashFiles as $file) { - if (strncmp($file['path'], $filename, strlen($filename))) { + if (strpos($file['path'], $filename . '.d') !== false) { $path_parts = pathinfo($file['name']); $trashFileSuffix = $path_parts['extension']; } @@ -195,13 +201,13 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase { // check if key for admin not exists $this->assertTrue($this->view->file_exists( - '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/keyfiles/' . $filename + '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/keyfiles/' . $filename . '.key.' . $trashFileSuffix)); // check if share key for admin not exists $this->assertTrue($this->view->file_exists( - '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/share-keys/' . $filename - . '.' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey.' . $trashFileSuffix)); + '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/share-keys/' . $filename + . '.' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey.' . $trashFileSuffix)); } /** @@ -210,32 +216,27 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase { */ function testRestoreFile() { // generate filename - $filename = 'tmp-' . uniqid() . '.txt'; + $filename = 'tmp-' . $this->getUniqueID() . '.txt'; $filename2 = $filename . '.backup'; // a second file with similar name // save file with content - $cryptedFile = file_put_contents('crypt:///' .\Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1. '/files/'. $filename, $this->dataShort); - $cryptedFile2 = file_put_contents('crypt:///' .\Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1. '/files/'. $filename2, $this->dataShort); + $cryptedFile = file_put_contents('crypt:///' . self::TEST_ENCRYPTION_TRASHBIN_USER1. '/files/'. $filename, $this->dataShort); + $cryptedFile2 = file_put_contents('crypt:///' . self::TEST_ENCRYPTION_TRASHBIN_USER1. '/files/'. $filename2, $this->dataShort); // delete both files \OC\Files\Filesystem::unlink($filename); \OC\Files\Filesystem::unlink($filename2); - $trashFiles = $this->view->getDirectoryContent( - '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/files/'); + $trashFiles = $this->view->getDirectoryContent('/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/files/'); $trashFileSuffix = null; $trashFileSuffix2 = null; // find created file with timestamp foreach ($trashFiles as $file) { - if (strncmp($file['path'], $filename, strlen($filename))) { + if (strpos($file['path'], $filename . '.d') !== false) { $path_parts = pathinfo($file['name']); $trashFileSuffix = $path_parts['extension']; } - if (strncmp($file['path'], $filename2, strlen($filename2))) { - $path_parts = pathinfo($file['name']); - $trashFileSuffix2 = $path_parts['extension']; - } } // prepare file information @@ -246,31 +247,31 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase { // check if file exists $this->assertTrue($this->view->file_exists( - '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files/' . $filename)); + '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files/' . $filename)); // check if key for admin exists $this->assertTrue($this->view->file_exists( - '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keyfiles/' + '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keyfiles/' . $filename . '.key')); // check if share key for admin exists $this->assertTrue($this->view->file_exists( - '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/share-keys/' - . $filename . '.' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey')); + '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/share-keys/' + . $filename . '.' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey')); // check that second file was NOT restored $this->assertFalse($this->view->file_exists( - '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files/' . $filename2)); + '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files/' . $filename2)); // check if key for admin exists $this->assertFalse($this->view->file_exists( - '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keyfiles/' + '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keyfiles/' . $filename2 . '.key')); // check if share key for admin exists $this->assertFalse($this->view->file_exists( - '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/share-keys/' - . $filename2 . '.' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey')); + '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/share-keys/' + . $filename2 . '.' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey')); } /** @@ -280,7 +281,7 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase { function testPermanentDeleteFile() { // generate filename - $filename = 'tmp-' . uniqid() . '.txt'; + $filename = 'tmp-' . $this->getUniqueID() . '.txt'; // save file with content $cryptedFile = file_put_contents('crypt:///' .$this->userId. '/files/' . $filename, $this->dataShort); @@ -290,30 +291,30 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase { // check if key for admin exists $this->assertTrue($this->view->file_exists( - '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keyfiles/' . $filename + '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keyfiles/' . $filename . '.key')); // check if share key for admin exists $this->assertTrue($this->view->file_exists( - '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/share-keys/' - . $filename . '.' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey')); + '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/share-keys/' + . $filename . '.' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey')); // delete file \OC\Files\Filesystem::unlink($filename); // check if file not exists $this->assertFalse($this->view->file_exists( - '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files/' . $filename)); + '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files/' . $filename)); // check if key for admin not exists $this->assertFalse($this->view->file_exists( - '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keyfiles/' . $filename + '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/keyfiles/' . $filename . '.key')); // check if share key for admin not exists $this->assertFalse($this->view->file_exists( - '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/share-keys/' - . $filename . '.' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey')); + '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_encryption/share-keys/' + . $filename . '.' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey')); // find created file with timestamp $query = \OC_DB::prepare('SELECT `timestamp`,`type` FROM `*PREFIX*files_trash`' @@ -327,13 +328,13 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase { // check if key for admin exists $this->assertTrue($this->view->file_exists( - '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/keyfiles/' . $filename + '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/keyfiles/' . $filename . '.key.' . $trashFileSuffix)); // check if share key for admin exists $this->assertTrue($this->view->file_exists( - '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/share-keys/' . $filename - . '.' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey.' . $trashFileSuffix)); + '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/share-keys/' . $filename + . '.' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey.' . $trashFileSuffix)); // get timestamp from file $timestamp = str_replace('d', '', $trashFileSuffix); @@ -343,18 +344,18 @@ class Test_Encryption_Trashbin extends \PHPUnit_Framework_TestCase { // check if key for admin not exists $this->assertFalse($this->view->file_exists( - '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/files/' . $filename . '.' + '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/files/' . $filename . '.' . $trashFileSuffix)); // check if key for admin not exists $this->assertFalse($this->view->file_exists( - '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/keyfiles/' . $filename + '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/keyfiles/' . $filename . '.key.' . $trashFileSuffix)); // check if share key for admin not exists $this->assertFalse($this->view->file_exists( - '/' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/share-keys/' . $filename - . '.' . \Test_Encryption_Trashbin::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey.' . $trashFileSuffix)); + '/' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '/files_trashbin/share-keys/' . $filename + . '.' . self::TEST_ENCRYPTION_TRASHBIN_USER1 . '.shareKey.' . $trashFileSuffix)); } } diff --git a/apps/files_encryption/tests/util.php b/apps/files_encryption/tests/util.php index 210ffcc5410..b8057202a07 100755 --- a/apps/files_encryption/tests/util.php +++ b/apps/files_encryption/tests/util.php @@ -11,7 +11,7 @@ use OCA\Encryption; /** * Class Test_Encryption_Util */ -class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { +class Test_Encryption_Util extends \OCA\Files_Encryption\Tests\TestCase { const TEST_ENCRYPTION_UTIL_USER1 = "test-util-user1"; const TEST_ENCRYPTION_UTIL_USER2 = "test-util-user2"; @@ -41,6 +41,8 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { public $stateFilesTrashbin; public static function setUpBeforeClass() { + parent::setUpBeforeClass(); + // reset backend \OC_User::clearBackends(); \OC_User::useBackend('database'); @@ -48,9 +50,9 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { self::setupHooks(); // create test user - \Test_Encryption_Util::loginHelper(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_USER1, true); - \Test_Encryption_Util::loginHelper(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_USER2, true); - \Test_Encryption_Util::loginHelper(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER, true); + self::loginHelper(self::TEST_ENCRYPTION_UTIL_USER1, true); + self::loginHelper(self::TEST_ENCRYPTION_UTIL_USER2, true); + self::loginHelper(self::TEST_ENCRYPTION_UTIL_LEGACY_USER, true); // create groups \OC_Group::createGroup(self::TEST_ENCRYPTION_UTIL_GROUP1); @@ -60,13 +62,14 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { \OC_Group::addToGroup(self::TEST_ENCRYPTION_UTIL_USER1, self::TEST_ENCRYPTION_UTIL_GROUP1); } + protected function setUp() { + parent::setUp(); - function setUp() { // login user - \Test_Encryption_Util::loginHelper(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_USER1); - \OC_User::setUserId(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_USER1); - $this->userId = \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_USER1; - $this->pass = \Test_Encryption_Util::TEST_ENCRYPTION_UTIL_USER1; + self::loginHelper(self::TEST_ENCRYPTION_UTIL_USER1); + \OC_User::setUserId(self::TEST_ENCRYPTION_UTIL_USER1); + $this->userId = self::TEST_ENCRYPTION_UTIL_USER1; + $this->pass = self::TEST_ENCRYPTION_UTIL_USER1; // set content for encrypting / decrypting in tests $this->dataUrl = __DIR__ . '/../lib/crypt.php'; @@ -101,7 +104,7 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { \OC_App::disable('files_trashbin'); } - function tearDown() { + protected function tearDown() { // reset app files_trashbin if ($this->stateFilesTrashbin) { OC_App::enable('files_trashbin'); @@ -109,13 +112,15 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { else { OC_App::disable('files_trashbin'); } + + parent::tearDown(); } public static function tearDownAfterClass() { // cleanup test user - \OC_User::deleteUser(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_USER1); - \OC_User::deleteUser(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_USER2); - \OC_User::deleteUser(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_LEGACY_USER); + \OC_User::deleteUser(self::TEST_ENCRYPTION_UTIL_USER1); + \OC_User::deleteUser(self::TEST_ENCRYPTION_UTIL_USER2); + \OC_User::deleteUser(self::TEST_ENCRYPTION_UTIL_LEGACY_USER); //cleanup groups \OC_Group::deleteGroup(self::TEST_ENCRYPTION_UTIL_GROUP1); @@ -128,6 +133,8 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { $view = new \OC\Files\View('/'); $view->rmdir('public-keys'); $view->rmdir('owncloud_private_key'); + + parent::tearDownAfterClass(); } public static function setupHooks() { @@ -164,8 +171,8 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { self::loginHelper($this->userId); - $unencryptedFile = '/tmpUnencrypted-' . uniqid() . '.txt'; - $encryptedFile = '/tmpEncrypted-' . uniqid() . '.txt'; + $unencryptedFile = '/tmpUnencrypted-' . $this->getUniqueID() . '.txt'; + $encryptedFile = '/tmpEncrypted-' . $this->getUniqueID() . '.txt'; // Disable encryption proxy to write a unencrypted file $proxyStatus = \OC_FileProxy::$enabled; @@ -244,9 +251,9 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { */ function testGetUidAndFilename() { - \OC_User::setUserId(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_USER1); + \OC_User::setUserId(self::TEST_ENCRYPTION_UTIL_USER1); - $filename = '/tmp-' . uniqid() . '.test'; + $filename = '/tmp-' . $this->getUniqueID() . '.test'; // Disable encryption proxy to prevent recursive calls $proxyStatus = \OC_FileProxy::$enabled; @@ -261,7 +268,7 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { list($fileOwnerUid, $file) = $util->getUidAndFilename($filename); - $this->assertEquals(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_USER1, $fileOwnerUid); + $this->assertEquals(self::TEST_ENCRYPTION_UTIL_USER1, $fileOwnerUid); $this->assertEquals($file, $filename); @@ -272,9 +279,9 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { * Test that data that is read by the crypto stream wrapper */ function testGetFileSize() { - \Test_Encryption_Util::loginHelper(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_USER1); + self::loginHelper(self::TEST_ENCRYPTION_UTIL_USER1); - $filename = 'tmp-' . uniqid(); + $filename = 'tmp-' . $this->getUniqueID(); $externalFilename = '/' . $this->userId . '/files/' . $filename; // Test for 0 byte files @@ -298,7 +305,7 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { function testEncryptAll() { - $filename = "/encryptAll" . uniqid() . ".txt"; + $filename = "/encryptAll" . $this->getUniqueID() . ".txt"; $util = new Encryption\Util($this->view, $this->userId); // disable encryption to upload a unencrypted file @@ -329,7 +336,7 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { function testDecryptAll() { - $filename = "/decryptAll" . uniqid() . ".txt"; + $filename = "/decryptAll" . $this->getUniqueID() . ".txt"; $datadir = \OC_Config::getValue('datadirectory', \OC::$SERVERROOT . '/data/'); $userdir = $datadir . '/' . $this->userId . '/files/'; @@ -448,8 +455,8 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { function testDescryptAllWithBrokenFiles() { - $file1 = "/decryptAll1" . uniqid() . ".txt"; - $file2 = "/decryptAll2" . uniqid() . ".txt"; + $file1 = "/decryptAll1" . $this->getUniqueID() . ".txt"; + $file2 = "/decryptAll2" . $this->getUniqueID() . ".txt"; $util = new Encryption\Util($this->view, $this->userId); @@ -543,6 +550,43 @@ class Test_Encryption_Util extends \PHPUnit_Framework_TestCase { } /** + * Tests that filterShareReadyUsers() returns the correct list of + * users that are ready or not ready for encryption + */ + public function testFilterShareReadyUsers() { + $appConfig = \OC::$server->getAppConfig(); + + $publicShareKeyId = $appConfig->getValue('files_encryption', 'publicShareKeyId'); + $recoveryKeyId = $appConfig->getValue('files_encryption', 'recoveryKeyId'); + + $usersToTest = array( + 'readyUser', + 'notReadyUser', + 'nonExistingUser', + $publicShareKeyId, + $recoveryKeyId, + ); + \Test_Encryption_Util::loginHelper('readyUser', true); + \Test_Encryption_Util::loginHelper('notReadyUser', true); + // delete encryption dir to make it not ready + $this->view->unlink('notReadyUser/files_encryption/'); + + // login as user1 + \Test_Encryption_Util::loginHelper(\Test_Encryption_Util::TEST_ENCRYPTION_UTIL_USER1); + + $result = $this->util->filterShareReadyUsers($usersToTest); + $this->assertEquals( + array('readyUser', $publicShareKeyId, $recoveryKeyId), + $result['ready'] + ); + $this->assertEquals( + array('notReadyUser', 'nonExistingUser'), + $result['unready'] + ); + \OC_User::deleteUser('readyUser'); + } + + /** * @param string $user * @param bool $create * @param bool $password diff --git a/apps/files_encryption/tests/webdav.php b/apps/files_encryption/tests/webdav.php index c838ddd29d1..7cadeaf0ba9 100755 --- a/apps/files_encryption/tests/webdav.php +++ b/apps/files_encryption/tests/webdav.php @@ -20,8 +20,6 @@ * */ -require_once __DIR__ . '/util.php'; - use OCA\Encryption; /** @@ -29,7 +27,7 @@ use OCA\Encryption; * * this class provide basic webdav tests for PUT,GET and DELETE */ -class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase { +class Test_Encryption_Webdav extends \OCA\Files_Encryption\Tests\TestCase { const TEST_ENCRYPTION_WEBDAV_USER1 = "test-webdav-user1"; @@ -45,6 +43,8 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase { private $storage; public static function setUpBeforeClass() { + parent::setUpBeforeClass(); + // reset backend \OC_User::clearBackends(); \OC_User::useBackend('database'); @@ -60,11 +60,13 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase { \OC_FileProxy::register(new OCA\Encryption\Proxy()); // create test user - \Test_Encryption_Util::loginHelper(\Test_Encryption_Webdav::TEST_ENCRYPTION_WEBDAV_USER1, true); + self::loginHelper(\Test_Encryption_Webdav::TEST_ENCRYPTION_WEBDAV_USER1, true); } - function setUp() { + protected function setUp() { + parent::setUp(); + // reset backend \OC_User::useBackend('database'); @@ -86,16 +88,18 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase { \OC_App::disable('files_trashbin'); // create test user - \Test_Encryption_Util::loginHelper(\Test_Encryption_Webdav::TEST_ENCRYPTION_WEBDAV_USER1); + self::loginHelper(\Test_Encryption_Webdav::TEST_ENCRYPTION_WEBDAV_USER1); } - function tearDown() { + protected function tearDown() { // reset app files_trashbin if ($this->stateFilesTrashbin) { OC_App::enable('files_trashbin'); } else { OC_App::disable('files_trashbin'); } + + parent::tearDown(); } public static function tearDownAfterClass() { @@ -109,6 +113,8 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase { $view = new \OC\Files\View('/'); $view->rmdir('public-keys'); $view->rmdir('owncloud_private_key'); + + parent::tearDownAfterClass(); } /** @@ -117,7 +123,7 @@ class Test_Encryption_Webdav extends \PHPUnit_Framework_TestCase { function testWebdavPUT() { // generate filename - $filename = '/tmp-' . uniqid() . '.txt'; + $filename = '/tmp-' . $this->getUniqueID() . '.txt'; // set server vars $_SERVER['REQUEST_METHOD'] = 'OPTIONS'; diff --git a/apps/files_external/js/app.js b/apps/files_external/js/app.js index 58ad1a0f6ef..bf853f926dc 100644 --- a/apps/files_external/js/app.js +++ b/apps/files_external/js/app.js @@ -9,8 +9,14 @@ */ if (!OCA.External) { + /** + * @namespace + */ OCA.External = {}; } +/** + * @namespace + */ OCA.External.App = { fileList: null, diff --git a/apps/files_external/js/mountsfilelist.js b/apps/files_external/js/mountsfilelist.js index 20bf0f785db..c45faafd9bf 100644 --- a/apps/files_external/js/mountsfilelist.js +++ b/apps/files_external/js/mountsfilelist.js @@ -10,15 +10,29 @@ (function() { /** - * External storage file list - */ + * @class OCA.External.FileList + * @augments OCA.Files.FileList + * + * @classdesc External storage file list. + * + * Displays a list of mount points visible + * for the current user. + * + * @param $el container element with existing markup for the #controls + * and a table + * @param [options] map of options, see other parameters + **/ var FileList = function($el, options) { this.initialize($el, options); }; - FileList.prototype = _.extend({}, OCA.Files.FileList.prototype, { + FileList.prototype = _.extend({}, OCA.Files.FileList.prototype, + /** @lends OCA.External.FileList.prototype */ { appName: 'External storage', + /** + * @private + */ initialize: function($el, options) { OCA.Files.FileList.prototype.initialize.apply(this, arguments); if (this.initialized) { @@ -26,6 +40,9 @@ } }, + /** + * @param {OCA.External.MountPointInfo} fileData + */ _createRow: function(fileData) { // TODO: hook earlier and render the whole row here var $tr = OCA.Files.FileList.prototype._createRow.apply(this, arguments); @@ -114,5 +131,15 @@ } }); + /** + * Mount point info attributes. + * + * @typedef {Object} OCA.External.MountPointInfo + * + * @property {String} name mount point name + * @property {String} scope mount point scope "personal" or "system" + * @property {String} backend external storage backend name + */ + OCA.External.FileList = FileList; })(); diff --git a/apps/files_external/l10n/fr.js b/apps/files_external/l10n/fr.js index bdaf0a19b01..5885af24199 100644 --- a/apps/files_external/l10n/fr.js +++ b/apps/files_external/l10n/fr.js @@ -4,8 +4,8 @@ OC.L10N.register( "Fetching request tokens failed. Verify that your Dropbox app key and secret are correct." : "La récupération des jetons d’authentification a échoué. Veuillez vérifier votre clé d'application Dropbox ainsi que le mot de passe.", "Fetching access tokens failed. Verify that your Dropbox app key and secret are correct." : "La requête d’accès aux jetons d’authentification a échoué. Veuillez vérifier votre App-Key Dropbox ainsi que le mot de passe.", "Please provide a valid Dropbox app key and secret." : "Veuillez fournir une clé d'application (app key) ainsi qu'un mot de passe valides.", - "Step 1 failed. Exception: %s" : "L’étape 1 a échoué. Erreur: %s", - "Step 2 failed. Exception: %s" : "L’étape 2 a échoué. Erreur: %s", + "Step 1 failed. Exception: %s" : "L’étape 1 a échoué. Erreur : %s", + "Step 2 failed. Exception: %s" : "L’étape 2 a échoué. Erreur : %s", "External storage" : "Stockage externe", "Local" : "Local", "Location" : "Emplacement", @@ -27,7 +27,7 @@ OC.L10N.register( "Username" : "Nom d'utilisateur", "Password" : "Mot de passe", "Root" : "Root", - "Secure ftps://" : "Sécuriser via ftps://", + "Secure ftps://" : "Sécurisation ftps://", "Client ID" : "ID Client", "Client secret" : "Secret client", "OpenStack Object Storage" : "Object de Stockage OpenStack", @@ -50,13 +50,13 @@ OC.L10N.register( "Error configuring Google Drive storage" : "Erreur lors de la configuration du support de stockage Google Drive", "Personal" : "Personnel", "System" : "Système", - "All users. Type to select user or group." : "Tous les utilisateurs. Commencez à saisir pour sélectionner un utilisateur ou un groupe.", + "All users. Type to select user or group." : "Tous les utilisateurs. Cliquez ici pour restreindre.", "(group)" : "(groupe)", "Saved" : "Sauvegarder", "<b>Note:</b> " : "<b>Attention :</b>", " and " : "et", - "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Attention :</b> Le support de cURL de PHP n'est pas activé ou installé. Le montage de %s n'est pas possible. Contactez votre administrateur système pour l'installer.", - "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Attention : </b> Le support FTP de PHP n'est pas activé ou installé. Le montage de %s n'est pas possible. Contactez votre administrateur système pour l'installer.", + "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Attention :</b> La prise en charge de cURL par PHP n'est pas activée ou installée. Le montage de %s n'est pas possible. Contactez votre administrateur système pour l'installer.", + "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Attention : </b> La prise en charge du FTP par PHP n'est pas activée ou installée. Le montage de %s n'est pas possible. Contactez votre administrateur système pour l'installer.", "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Attention : </b> \"%s\" n'est pas installé. Le montage de %s n'est pas possible. Contactez votre administrateur système pour l'installer.", "You don't have any external storages" : "Vous n'avez pas de support de stockage externe", "Name" : "Nom", diff --git a/apps/files_external/l10n/fr.json b/apps/files_external/l10n/fr.json index e9f1c91b30d..e1e2b2eccc4 100644 --- a/apps/files_external/l10n/fr.json +++ b/apps/files_external/l10n/fr.json @@ -2,8 +2,8 @@ "Fetching request tokens failed. Verify that your Dropbox app key and secret are correct." : "La récupération des jetons d’authentification a échoué. Veuillez vérifier votre clé d'application Dropbox ainsi que le mot de passe.", "Fetching access tokens failed. Verify that your Dropbox app key and secret are correct." : "La requête d’accès aux jetons d’authentification a échoué. Veuillez vérifier votre App-Key Dropbox ainsi que le mot de passe.", "Please provide a valid Dropbox app key and secret." : "Veuillez fournir une clé d'application (app key) ainsi qu'un mot de passe valides.", - "Step 1 failed. Exception: %s" : "L’étape 1 a échoué. Erreur: %s", - "Step 2 failed. Exception: %s" : "L’étape 2 a échoué. Erreur: %s", + "Step 1 failed. Exception: %s" : "L’étape 1 a échoué. Erreur : %s", + "Step 2 failed. Exception: %s" : "L’étape 2 a échoué. Erreur : %s", "External storage" : "Stockage externe", "Local" : "Local", "Location" : "Emplacement", @@ -25,7 +25,7 @@ "Username" : "Nom d'utilisateur", "Password" : "Mot de passe", "Root" : "Root", - "Secure ftps://" : "Sécuriser via ftps://", + "Secure ftps://" : "Sécurisation ftps://", "Client ID" : "ID Client", "Client secret" : "Secret client", "OpenStack Object Storage" : "Object de Stockage OpenStack", @@ -48,13 +48,13 @@ "Error configuring Google Drive storage" : "Erreur lors de la configuration du support de stockage Google Drive", "Personal" : "Personnel", "System" : "Système", - "All users. Type to select user or group." : "Tous les utilisateurs. Commencez à saisir pour sélectionner un utilisateur ou un groupe.", + "All users. Type to select user or group." : "Tous les utilisateurs. Cliquez ici pour restreindre.", "(group)" : "(groupe)", "Saved" : "Sauvegarder", "<b>Note:</b> " : "<b>Attention :</b>", " and " : "et", - "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Attention :</b> Le support de cURL de PHP n'est pas activé ou installé. Le montage de %s n'est pas possible. Contactez votre administrateur système pour l'installer.", - "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Attention : </b> Le support FTP de PHP n'est pas activé ou installé. Le montage de %s n'est pas possible. Contactez votre administrateur système pour l'installer.", + "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Attention :</b> La prise en charge de cURL par PHP n'est pas activée ou installée. Le montage de %s n'est pas possible. Contactez votre administrateur système pour l'installer.", + "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Attention : </b> La prise en charge du FTP par PHP n'est pas activée ou installée. Le montage de %s n'est pas possible. Contactez votre administrateur système pour l'installer.", "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Attention : </b> \"%s\" n'est pas installé. Le montage de %s n'est pas possible. Contactez votre administrateur système pour l'installer.", "You don't have any external storages" : "Vous n'avez pas de support de stockage externe", "Name" : "Nom", diff --git a/apps/files_external/l10n/id.js b/apps/files_external/l10n/id.js index 4673da66543..8b0f4f28fbc 100644 --- a/apps/files_external/l10n/id.js +++ b/apps/files_external/l10n/id.js @@ -1,32 +1,67 @@ OC.L10N.register( "files_external", { - "Please provide a valid Dropbox app key and secret." : "Masukkan kunci dan sandi aplikasi Dropbox yang benar.", + "Fetching request tokens failed. Verify that your Dropbox app key and secret are correct." : "Permintaan untuk mengambil token gagal. Pastikan kunci dan rahasia apl Dropbox Anda sudah benar.", + "Fetching access tokens failed. Verify that your Dropbox app key and secret are correct." : "Akses untuk mengambil token gagal. Pastikan kunci dan rahasia apl Dropbox Anda sudah benar.", + "Please provide a valid Dropbox app key and secret." : "Masukkan kunci dan rahasia aplikasi Dropbox yang benar.", + "Step 1 failed. Exception: %s" : "Langkah 1 gagal. Kecuali: %s", + "Step 2 failed. Exception: %s" : "Langkah 2 gagal. Kecuali: %s", "External storage" : "Penyimpanan eksternal", "Local" : "Lokal", "Location" : "lokasi", "Amazon S3" : "Amazon S3", - "Port" : "port", - "Region" : "daerah", + "Key" : "Kunci", + "Secret" : "Rahasia", + "Bucket" : "Keranjang", + "Amazon S3 and compliant" : "Amazon S3 dan yang sesuai", + "Access Key" : "Kunci Akses", + "Secret Key" : "Kunci Rahasia", + "Hostname" : "Nama Host", + "Port" : "Port", + "Region" : "Daerah", "Enable SSL" : "Aktifkan SSL", + "Enable Path Style" : "Aktifkan Gaya Path", + "App key" : "Kunci Apl", + "App secret" : "Rahasia Apl", "Host" : "Host", "Username" : "Nama Pengguna", "Password" : "Sandi", "Root" : "Root", + "Secure ftps://" : "Secure ftps://", + "Client ID" : "ID Klien", + "Client secret" : "Rahasia klien", + "OpenStack Object Storage" : "OpenStack Object Storage", + "Region (optional for OpenStack Object Storage)" : "Daerah (tambahan untuk OpenStack Object Storage)", + "API Key (required for Rackspace Cloud Files)" : "Kunci API (diperlukan untuk Rackspace Cloud Files)", + "Tenantname (required for OpenStack Object Storage)" : "Tenantname (diperlukan untuk OpenStack Object Storage)", + "Password (required for OpenStack Object Storage)" : "Sandi (diperlukan untuk OpenStack Object Storage)", + "Service Name (required for OpenStack Object Storage)" : "Nama Layanan (diperlukan untuk OpenStack Object Storage)", + "URL of identity endpoint (required for OpenStack Object Storage)" : "URL of identity endpoint (diperlukan untuk OpenStack Object Storage)", + "Timeout of HTTP requests in seconds" : "Batas waktu permintaan HTTP dalam detik", "Share" : "Bagikan", - "URL" : "tautan", + "SMB / CIFS using OC login" : "SMB / CIFS menggunakan OC login", + "Username as share" : "Nama pengguna berbagi", + "URL" : "URL", + "Secure https://" : "Secure https://", + "Remote subfolder" : "Subfolder remote", "Access granted" : "Akses diberikan", "Error configuring Dropbox storage" : "Kesalahan dalam mengonfigurasi penyimpanan Dropbox", "Grant access" : "Berikan hak akses", "Error configuring Google Drive storage" : "Kesalahan dalam mengkonfigurasi penyimpanan Google Drive", "Personal" : "Pribadi", + "System" : "Sistem", + "All users. Type to select user or group." : "Semua pengguna. Ketik untuk memilih pengguna atau grup.", + "(group)" : "(grup)", "Saved" : "Disimpan", "<b>Note:</b> " : "<b>Catatan:</b> ", " and " : "dan", - "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Catatan:</b> Dukungan cURL di PHP tidak diaktifkan atau belum diinstal. Mengaitkan %s tidak dimungkinkan. Silakan tanyakan ke administrator sistem Anda untuk menginstalnya.", - "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Catatan:</b> Dukungan FTP di PHP tidak diaktifkan atau belum diinstal. Mengaitkan %s tidak dimungkinkan. Silakan tanyakan ke administrator sistem Anda untuk menginstalnya.", - "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Catatan:</b> \"%s\" belum diinstal. Mengaitkan %s tidak dimungkinkan. Silakan tanyakan ke administrator sistem Anda untuk menginstalnya.", + "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Catatan:</b> Dukungan cURL di PHP tidak diaktifkan atau belum diinstal. Mengaitkan %s tidak dimungkinkan. Silakan minta administrator sistem Anda untuk menginstalnya.", + "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Catatan:</b> Dukungan FTP di PHP tidak diaktifkan atau belum diinstal. Mengaitkan %s tidak dimungkinkan. Silakan minta administrator sistem Anda untuk menginstalnya.", + "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Catatan:</b> \"%s\" belum diinstal. Mengaitkan %s tidak dimungkinkan. Silakan minta administrator sistem Anda untuk menginstalnya.", + "You don't have any external storages" : "Anda tidak memiliki penyimpanan eksternal", "Name" : "Nama", + "Storage type" : "Tipe penyimpanan", + "Scope" : "Skop", "External Storage" : "Penyimpanan Eksternal", "Folder name" : "Nama folder", "Configuration" : "Konfigurasi", diff --git a/apps/files_external/l10n/id.json b/apps/files_external/l10n/id.json index 067f79b2a20..8f8179d7627 100644 --- a/apps/files_external/l10n/id.json +++ b/apps/files_external/l10n/id.json @@ -1,30 +1,65 @@ { "translations": { - "Please provide a valid Dropbox app key and secret." : "Masukkan kunci dan sandi aplikasi Dropbox yang benar.", + "Fetching request tokens failed. Verify that your Dropbox app key and secret are correct." : "Permintaan untuk mengambil token gagal. Pastikan kunci dan rahasia apl Dropbox Anda sudah benar.", + "Fetching access tokens failed. Verify that your Dropbox app key and secret are correct." : "Akses untuk mengambil token gagal. Pastikan kunci dan rahasia apl Dropbox Anda sudah benar.", + "Please provide a valid Dropbox app key and secret." : "Masukkan kunci dan rahasia aplikasi Dropbox yang benar.", + "Step 1 failed. Exception: %s" : "Langkah 1 gagal. Kecuali: %s", + "Step 2 failed. Exception: %s" : "Langkah 2 gagal. Kecuali: %s", "External storage" : "Penyimpanan eksternal", "Local" : "Lokal", "Location" : "lokasi", "Amazon S3" : "Amazon S3", - "Port" : "port", - "Region" : "daerah", + "Key" : "Kunci", + "Secret" : "Rahasia", + "Bucket" : "Keranjang", + "Amazon S3 and compliant" : "Amazon S3 dan yang sesuai", + "Access Key" : "Kunci Akses", + "Secret Key" : "Kunci Rahasia", + "Hostname" : "Nama Host", + "Port" : "Port", + "Region" : "Daerah", "Enable SSL" : "Aktifkan SSL", + "Enable Path Style" : "Aktifkan Gaya Path", + "App key" : "Kunci Apl", + "App secret" : "Rahasia Apl", "Host" : "Host", "Username" : "Nama Pengguna", "Password" : "Sandi", "Root" : "Root", + "Secure ftps://" : "Secure ftps://", + "Client ID" : "ID Klien", + "Client secret" : "Rahasia klien", + "OpenStack Object Storage" : "OpenStack Object Storage", + "Region (optional for OpenStack Object Storage)" : "Daerah (tambahan untuk OpenStack Object Storage)", + "API Key (required for Rackspace Cloud Files)" : "Kunci API (diperlukan untuk Rackspace Cloud Files)", + "Tenantname (required for OpenStack Object Storage)" : "Tenantname (diperlukan untuk OpenStack Object Storage)", + "Password (required for OpenStack Object Storage)" : "Sandi (diperlukan untuk OpenStack Object Storage)", + "Service Name (required for OpenStack Object Storage)" : "Nama Layanan (diperlukan untuk OpenStack Object Storage)", + "URL of identity endpoint (required for OpenStack Object Storage)" : "URL of identity endpoint (diperlukan untuk OpenStack Object Storage)", + "Timeout of HTTP requests in seconds" : "Batas waktu permintaan HTTP dalam detik", "Share" : "Bagikan", - "URL" : "tautan", + "SMB / CIFS using OC login" : "SMB / CIFS menggunakan OC login", + "Username as share" : "Nama pengguna berbagi", + "URL" : "URL", + "Secure https://" : "Secure https://", + "Remote subfolder" : "Subfolder remote", "Access granted" : "Akses diberikan", "Error configuring Dropbox storage" : "Kesalahan dalam mengonfigurasi penyimpanan Dropbox", "Grant access" : "Berikan hak akses", "Error configuring Google Drive storage" : "Kesalahan dalam mengkonfigurasi penyimpanan Google Drive", "Personal" : "Pribadi", + "System" : "Sistem", + "All users. Type to select user or group." : "Semua pengguna. Ketik untuk memilih pengguna atau grup.", + "(group)" : "(grup)", "Saved" : "Disimpan", "<b>Note:</b> " : "<b>Catatan:</b> ", " and " : "dan", - "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Catatan:</b> Dukungan cURL di PHP tidak diaktifkan atau belum diinstal. Mengaitkan %s tidak dimungkinkan. Silakan tanyakan ke administrator sistem Anda untuk menginstalnya.", - "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Catatan:</b> Dukungan FTP di PHP tidak diaktifkan atau belum diinstal. Mengaitkan %s tidak dimungkinkan. Silakan tanyakan ke administrator sistem Anda untuk menginstalnya.", - "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Catatan:</b> \"%s\" belum diinstal. Mengaitkan %s tidak dimungkinkan. Silakan tanyakan ke administrator sistem Anda untuk menginstalnya.", + "<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Catatan:</b> Dukungan cURL di PHP tidak diaktifkan atau belum diinstal. Mengaitkan %s tidak dimungkinkan. Silakan minta administrator sistem Anda untuk menginstalnya.", + "<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Catatan:</b> Dukungan FTP di PHP tidak diaktifkan atau belum diinstal. Mengaitkan %s tidak dimungkinkan. Silakan minta administrator sistem Anda untuk menginstalnya.", + "<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Catatan:</b> \"%s\" belum diinstal. Mengaitkan %s tidak dimungkinkan. Silakan minta administrator sistem Anda untuk menginstalnya.", + "You don't have any external storages" : "Anda tidak memiliki penyimpanan eksternal", "Name" : "Nama", + "Storage type" : "Tipe penyimpanan", + "Scope" : "Skop", "External Storage" : "Penyimpanan Eksternal", "Folder name" : "Nama folder", "Configuration" : "Konfigurasi", diff --git a/apps/files_external/l10n/sk.php b/apps/files_external/l10n/sk.php deleted file mode 100644 index 9418c949228..00000000000 --- a/apps/files_external/l10n/sk.php +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$TRANSLATIONS = array( -"Location" => "Poloha", -"Share" => "Zdieľať", -"Personal" => "Osobné", -"Delete" => "Odstrániť" -); -$PLURAL_FORMS = "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"; diff --git a/apps/files_external/lib/amazons3.php b/apps/files_external/lib/amazons3.php index 53adb929e29..4d94e3561f8 100644 --- a/apps/files_external/lib/amazons3.php +++ b/apps/files_external/lib/amazons3.php @@ -267,10 +267,7 @@ class AmazonS3 extends \OC\Files\Storage\Common { $file = basename( isset($object['Key']) ? $object['Key'] : $object['Prefix'] ); - - if ($file != basename($path)) { - $files[] = $file; - } + $files[] = $file; } \OC\Files\Stream\Dir::register('amazons3' . $path, $files); diff --git a/apps/files_external/lib/api.php b/apps/files_external/lib/api.php index 81ebd4e886a..3b5e0e1759a 100644 --- a/apps/files_external/lib/api.php +++ b/apps/files_external/lib/api.php @@ -45,10 +45,10 @@ class Api { $isSystemMount = !$mountConfig['personal']; - $permissions = \OCP\PERMISSION_READ; + $permissions = \OCP\Constants::PERMISSION_READ; // personal mounts can be deleted if (!$isSystemMount) { - $permissions |= \OCP\PERMISSION_DELETE; + $permissions |= \OCP\Constants::PERMISSION_DELETE; } $entry = array( diff --git a/apps/files_external/lib/config.php b/apps/files_external/lib/config.php index fa44e446d96..9400bbdedc0 100644 --- a/apps/files_external/lib/config.php +++ b/apps/files_external/lib/config.php @@ -121,6 +121,14 @@ class OC_Mount_Config { if ($data['user']) { $user = \OC::$server->getUserManager()->get($data['user']); + if (!$user) { + \OC_Log::write( + 'files_external', + 'Cannot init external mount points for non-existant user "' . $data['user'] . '".', + \OC_Log::WARN + ); + return; + } $userView = new \OC\Files\View('/' . $user->getUID() . '/files'); $changePropagator = new \OC\Files\Cache\ChangePropagator($userView); $etagPropagator = new \OCA\Files_External\EtagPropagator($user, $changePropagator, \OC::$server->getConfig()); diff --git a/apps/files_external/lib/google.php b/apps/files_external/lib/google.php index 27885f356c7..c414e34fad4 100644 --- a/apps/files_external/lib/google.php +++ b/apps/files_external/lib/google.php @@ -504,7 +504,10 @@ class Google extends \OC\Files\Storage\Common { $result = false; if ($file) { if (isset($mtime)) { - $file->setModifiedDate($mtime); + // This is just RFC3339, but frustratingly, GDrive's API *requires* + // the fractions portion be present, while no handy PHP constant + // for RFC3339 or ISO8601 includes it. So we do it ourselves. + $file->setModifiedDate(date('Y-m-d\TH:i:s.uP', $mtime)); $result = $this->service->files->patch($file->getId(), $file, array( 'setModifiedDate' => true, )); diff --git a/apps/files_external/lib/smb.php b/apps/files_external/lib/smb.php index 6e53c4a9931..3f0b0f45bfb 100644 --- a/apps/files_external/lib/smb.php +++ b/apps/files_external/lib/smb.php @@ -139,13 +139,8 @@ class SMB extends \OC\Files\Storage\StreamWrapper{ * check if smbclient is installed */ public static function checkDependencies() { - if (function_exists('shell_exec')) { - $output=shell_exec('command -v smbclient 2> /dev/null'); - if (!empty($output)) { - return true; - } - } - return array('smbclient'); + $smbClientExists = (bool) \OC_Helper::findBinaryPath('smbclient'); + return $smbClientExists ? true : array('smbclient'); } } diff --git a/apps/files_external/tests/amazons3.php b/apps/files_external/tests/amazons3.php index 8eaece6dad9..fbb8744bd8d 100644 --- a/apps/files_external/tests/amazons3.php +++ b/apps/files_external/tests/amazons3.php @@ -28,7 +28,9 @@ class AmazonS3 extends Storage { private $config; - public function setUp() { + protected function setUp() { + parent::setUp(); + $this->config = include('files_external/tests/config.php'); if ( ! is_array($this->config) or ! isset($this->config['amazons3']) or ! $this->config['amazons3']['run']) { $this->markTestSkipped('AmazonS3 backend not configured'); @@ -36,10 +38,12 @@ class AmazonS3 extends Storage { $this->instance = new \OC\Files\Storage\AmazonS3($this->config['amazons3']); } - public function tearDown() { + protected function tearDown() { if ($this->instance) { $this->instance->rmdir(''); } + + parent::tearDown(); } public function testStat() { diff --git a/apps/files_external/tests/amazons3migration.php b/apps/files_external/tests/amazons3migration.php index 629cf5cfa3c..145213f5293 100644 --- a/apps/files_external/tests/amazons3migration.php +++ b/apps/files_external/tests/amazons3migration.php @@ -23,15 +23,26 @@ namespace Test\Files\Storage; -class AmazonS3Migration extends \PHPUnit_Framework_TestCase { +class AmazonS3Migration extends \Test\TestCase { /** * @var \OC\Files\Storage\Storage instance */ protected $instance; - public function setUp () { - $uuid = uniqid(); + /** @var array */ + protected $params; + + /** @var string */ + protected $oldId; + + /** @var string */ + protected $newId; + + protected function setUp() { + parent::setUp(); + + $uuid = $this->getUniqueID(); $this->params['key'] = 'key'.$uuid; $this->params['secret'] = 'secret'.$uuid; @@ -41,9 +52,11 @@ class AmazonS3Migration extends \PHPUnit_Framework_TestCase { $this->newId = 'amazon::' . $this->params['bucket']; } - public function tearDown () { + protected function tearDown() { $this->deleteStorage($this->oldId); $this->deleteStorage($this->newId); + + parent::tearDown(); } public function testUpdateLegacyOnlyId () { diff --git a/apps/files_external/tests/dropbox.php b/apps/files_external/tests/dropbox.php index 4b052282019..3f25d5a31e8 100644 --- a/apps/files_external/tests/dropbox.php +++ b/apps/files_external/tests/dropbox.php @@ -11,8 +11,10 @@ namespace Test\Files\Storage; class Dropbox extends Storage { private $config; - public function setUp() { - $id = uniqid(); + protected function setUp() { + parent::setUp(); + + $id = $this->getUniqueID(); $this->config = include('files_external/tests/config.php'); if ( ! is_array($this->config) or ! isset($this->config['dropbox']) or ! $this->config['dropbox']['run']) { $this->markTestSkipped('Dropbox backend not configured'); @@ -21,6 +23,14 @@ class Dropbox extends Storage { $this->instance = new \OC\Files\Storage\Dropbox($this->config['dropbox']); } + protected function tearDown() { + if ($this->instance) { + $this->instance->unlink('/'); + } + + parent::tearDown(); + } + public function directoryProvider() { // doesn't support leading/trailing spaces return array(array('folder')); @@ -36,10 +46,4 @@ class Dropbox extends Storage { // false because not supported $this->assertFalse($this->instance->touch('foo')); } - - public function tearDown() { - if ($this->instance) { - $this->instance->unlink('/'); - } - } } diff --git a/apps/files_external/tests/dynamicmountconfig.php b/apps/files_external/tests/dynamicmountconfig.php index 650299075e6..eef2a896b3a 100644 --- a/apps/files_external/tests/dynamicmountconfig.php +++ b/apps/files_external/tests/dynamicmountconfig.php @@ -36,7 +36,7 @@ class Test_Mount_Config_Dummy_Backend { /** * Class Test_Dynamic_Mount_Config */ -class Test_Dynamic_Mount_Config extends \PHPUnit_Framework_TestCase { +class Test_Dynamic_Mount_Config extends \Test\TestCase { private $backup; @@ -82,6 +82,7 @@ class Test_Dynamic_Mount_Config extends \PHPUnit_Framework_TestCase { } protected function setUp() { + parent::setUp(); $this->backup = OC_Mount_Config::setUp(); @@ -97,5 +98,6 @@ class Test_Dynamic_Mount_Config extends \PHPUnit_Framework_TestCase { protected function tearDown() { OC_Mount_Config::setUp($this->backup); + parent::tearDown(); } } diff --git a/apps/files_external/tests/etagpropagator.php b/apps/files_external/tests/etagpropagator.php index 7fa1863f962..84b687d18e4 100644 --- a/apps/files_external/tests/etagpropagator.php +++ b/apps/files_external/tests/etagpropagator.php @@ -11,9 +11,9 @@ namespace Tests\Files_External; use OC\Files\Filesystem; use OC\User\User; -class EtagPropagator extends \PHPUnit_Framework_TestCase { +class EtagPropagator extends \Test\TestCase { protected function getUser() { - return new User(uniqid(), null); + return new User($this->getUniqueID(), null); } /** diff --git a/apps/files_external/tests/ftp.php b/apps/files_external/tests/ftp.php index 3037793120a..842b7f43fa8 100644 --- a/apps/files_external/tests/ftp.php +++ b/apps/files_external/tests/ftp.php @@ -11,8 +11,10 @@ namespace Test\Files\Storage; class FTP extends Storage { private $config; - public function setUp() { - $id = uniqid(); + protected function setUp() { + parent::setUp(); + + $id = $this->getUniqueID(); $this->config = include('files_external/tests/config.php'); if ( ! is_array($this->config) or ! isset($this->config['ftp']) or ! $this->config['ftp']['run']) { $this->markTestSkipped('FTP backend not configured'); @@ -22,10 +24,12 @@ class FTP extends Storage { $this->instance->mkdir('/'); } - public function tearDown() { + protected function tearDown() { if ($this->instance) { \OCP\Files::rmdirr($this->instance->constructUrl('')); } + + parent::tearDown(); } public function testConstructUrl(){ diff --git a/apps/files_external/tests/google.php b/apps/files_external/tests/google.php index d5495d49c5e..79023fac9e1 100644 --- a/apps/files_external/tests/google.php +++ b/apps/files_external/tests/google.php @@ -28,6 +28,8 @@ class Google extends Storage { private $config; protected function setUp() { + parent::setUp(); + $this->config = include('files_external/tests/config.php'); if (!is_array($this->config) || !isset($this->config['google']) || !$this->config['google']['run'] @@ -41,5 +43,7 @@ class Google extends Storage { if ($this->instance) { $this->instance->rmdir('/'); } + + parent::tearDown(); } } diff --git a/apps/files_external/tests/mountconfig.php b/apps/files_external/tests/mountconfig.php index c11e48b82f3..ab65e648643 100644 --- a/apps/files_external/tests/mountconfig.php +++ b/apps/files_external/tests/mountconfig.php @@ -65,7 +65,7 @@ class Test_Mount_Config_Hook_Test { /** * Class Test_Mount_Config */ -class Test_Mount_Config extends \PHPUnit_Framework_TestCase { +class Test_Mount_Config extends \Test\TestCase { private $dataDir; private $userHome; @@ -79,7 +79,9 @@ class Test_Mount_Config extends \PHPUnit_Framework_TestCase { const TEST_GROUP2 = 'group2'; const TEST_GROUP2B = 'group2b'; - public function setUp() { + protected function setUp() { + parent::setUp(); + \OC_User::createUser(self::TEST_USER1, self::TEST_USER1); \OC_User::createUser(self::TEST_USER2, self::TEST_USER2); @@ -116,7 +118,7 @@ class Test_Mount_Config extends \PHPUnit_Framework_TestCase { Test_Mount_Config_Hook_Test::setupHooks(); } - public function tearDown() { + protected function tearDown() { Test_Mount_Config_Hook_Test::clear(); OC_Mount_Config::$skipTest = false; @@ -134,6 +136,8 @@ class Test_Mount_Config extends \PHPUnit_Framework_TestCase { 'user_mounting_backends', $this->oldAllowedBackends ); + + parent::tearDown(); } /** diff --git a/apps/files_external/tests/owncloud.php b/apps/files_external/tests/owncloud.php index 408a55864f2..ab9101cfe5f 100644 --- a/apps/files_external/tests/owncloud.php +++ b/apps/files_external/tests/owncloud.php @@ -12,8 +12,10 @@ class OwnCloud extends Storage { private $config; - public function setUp() { - $id = uniqid(); + protected function setUp() { + parent::setUp(); + + $id = $this->getUniqueID(); $this->config = include('files_external/tests/config.php'); if ( ! is_array($this->config) or ! isset($this->config['owncloud']) or ! $this->config['owncloud']['run']) { $this->markTestSkipped('ownCloud backend not configured'); @@ -23,9 +25,11 @@ class OwnCloud extends Storage { $this->instance->mkdir('/'); } - public function tearDown() { + protected function tearDown() { if ($this->instance) { $this->instance->rmdir('/'); } + + parent::tearDown(); } } diff --git a/apps/files_external/tests/owncloudfunctions.php b/apps/files_external/tests/owncloudfunctions.php index 57608fff0cf..8232f30a5e2 100644 --- a/apps/files_external/tests/owncloudfunctions.php +++ b/apps/files_external/tests/owncloudfunctions.php @@ -8,7 +8,7 @@ namespace Test\Files\Storage; -class OwnCloudFunctions extends \PHPUnit_Framework_TestCase { +class OwnCloudFunctions extends \Test\TestCase { function configUrlProvider() { return array( diff --git a/apps/files_external/tests/sftp.php b/apps/files_external/tests/sftp.php index efea7f075ff..703b37d93f1 100644 --- a/apps/files_external/tests/sftp.php +++ b/apps/files_external/tests/sftp.php @@ -25,8 +25,10 @@ namespace Test\Files\Storage; class SFTP extends Storage { private $config; - public function setUp() { - $id = uniqid(); + protected function setUp() { + parent::setUp(); + + $id = $this->getUniqueID(); $this->config = include('files_external/tests/config.php'); if ( ! is_array($this->config) or ! isset($this->config['sftp']) or ! $this->config['sftp']['run']) { $this->markTestSkipped('SFTP backend not configured'); @@ -36,9 +38,11 @@ class SFTP extends Storage { $this->instance->mkdir('/'); } - public function tearDown() { + protected function tearDown() { if ($this->instance) { $this->instance->rmdir('/'); } + + parent::tearDown(); } } diff --git a/apps/files_external/tests/smb.php b/apps/files_external/tests/smb.php index 199e35af676..9e5ab2b331f 100644 --- a/apps/files_external/tests/smb.php +++ b/apps/files_external/tests/smb.php @@ -12,8 +12,10 @@ class SMB extends Storage { private $config; - public function setUp() { - $id = uniqid(); + protected function setUp() { + parent::setUp(); + + $id = $this->getUniqueID(); $this->config = include('files_external/tests/config.php'); if (!is_array($this->config) or !isset($this->config['smb']) or !$this->config['smb']['run']) { $this->markTestSkipped('Samba backend not configured'); @@ -23,10 +25,12 @@ class SMB extends Storage { $this->instance->mkdir('/'); } - public function tearDown() { + protected function tearDown() { if ($this->instance) { \OCP\Files::rmdirr($this->instance->constructUrl('')); } + + parent::tearDown(); } public function directoryProvider() { diff --git a/apps/files_external/tests/smbfunctions.php b/apps/files_external/tests/smbfunctions.php index 749906d0136..cf9f7cb20fe 100644 --- a/apps/files_external/tests/smbfunctions.php +++ b/apps/files_external/tests/smbfunctions.php @@ -8,10 +8,11 @@ namespace Test\Files\Storage; -class SMBFunctions extends \PHPUnit_Framework_TestCase { +class SMBFunctions extends \Test\TestCase { + + protected function setUp() { + parent::setUp(); - public function setUp() { - $id = uniqid(); // dummy config $this->config = array( 'run'=>false, @@ -25,9 +26,6 @@ class SMBFunctions extends \PHPUnit_Framework_TestCase { $this->instance = new \OC\Files\Storage\SMB($this->config); } - public function tearDown() { - } - public function testGetId() { $this->assertEquals('smb::test@smbhost//sharename//rootdir/', $this->instance->getId()); } diff --git a/apps/files_external/tests/swift.php b/apps/files_external/tests/swift.php index 3918497ebfa..d2c884a8b4c 100644 --- a/apps/files_external/tests/swift.php +++ b/apps/files_external/tests/swift.php @@ -26,7 +26,9 @@ class Swift extends Storage { private $config; - public function setUp() { + protected function setUp() { + parent::setUp(); + $this->config = include('files_external/tests/config.php'); if (!is_array($this->config) or !isset($this->config['swift']) or !$this->config['swift']['run']) { @@ -35,7 +37,7 @@ class Swift extends Storage { $this->instance = new \OC\Files\Storage\Swift($this->config['swift']); } - public function tearDown() { + protected function tearDown() { if ($this->instance) { $connection = $this->instance->getConnection(); $container = $connection->getContainer($this->config['swift']['bucket']); @@ -48,5 +50,7 @@ class Swift extends Storage { $container->delete(); } + + parent::tearDown(); } } diff --git a/apps/files_external/tests/webdav.php b/apps/files_external/tests/webdav.php index 74e905ccc89..5f53568b91a 100644 --- a/apps/files_external/tests/webdav.php +++ b/apps/files_external/tests/webdav.php @@ -12,8 +12,10 @@ class DAV extends Storage { private $config; - public function setUp() { - $id = uniqid(); + protected function setUp() { + parent::setUp(); + + $id = $this->getUniqueID(); $this->config = include('files_external/tests/config.php'); if ( ! is_array($this->config) or ! isset($this->config['webdav']) or ! $this->config['webdav']['run']) { $this->markTestSkipped('WebDAV backend not configured'); @@ -26,9 +28,11 @@ class DAV extends Storage { $this->instance->mkdir('/'); } - public function tearDown() { + protected function tearDown() { if ($this->instance) { $this->instance->rmdir('/'); } + + parent::tearDown(); } } diff --git a/apps/files_sharing/ajax/list.php b/apps/files_sharing/ajax/list.php index 7e2e54a1bd9..073c86365be 100644 --- a/apps/files_sharing/ajax/list.php +++ b/apps/files_sharing/ajax/list.php @@ -65,7 +65,7 @@ $formattedFiles = array(); foreach ($files as $file) { $entry = \OCA\Files\Helper::formatFileInfo($file); unset($entry['directory']); // for now - $entry['permissions'] = \OCP\PERMISSION_READ; + $entry['permissions'] = \OCP\Constants::PERMISSION_READ; $formattedFiles[] = $entry; } @@ -78,7 +78,7 @@ $permissions = $linkItem['permissions']; // if globally disabled if (\OC::$server->getAppConfig()->getValue('core', 'shareapi_allow_public_upload', 'yes') === 'no') { // only allow reading - $permissions = \OCP\PERMISSION_READ; + $permissions = \OCP\Constants::PERMISSION_READ; } $data['permissions'] = $permissions; diff --git a/apps/files_sharing/ajax/shareinfo.php b/apps/files_sharing/ajax/shareinfo.php index e87b0779e8d..f196a67a9dd 100644 --- a/apps/files_sharing/ajax/shareinfo.php +++ b/apps/files_sharing/ajax/shareinfo.php @@ -31,7 +31,7 @@ $linkItem = $data['linkItem']; // Load the files $path = $data['realPath']; -$isWritable = $linkItem['permissions'] & (\OCP\PERMISSION_UPDATE | \OCP\PERMISSION_CREATE); +$isWritable = $linkItem['permissions'] & (\OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_CREATE); if (!$isWritable) { \OC\Files\Filesystem::addStorageWrapper('readonly', function ($mountPoint, $storage) { return new \OCA\Files_Sharing\ReadOnlyWrapper(array('storage' => $storage)); diff --git a/apps/files_sharing/appinfo/routes.php b/apps/files_sharing/appinfo/routes.php index d58a97e2956..68f33d94995 100644 --- a/apps/files_sharing/appinfo/routes.php +++ b/apps/files_sharing/appinfo/routes.php @@ -1,4 +1,5 @@ <?php + /** @var $this \OCP\Route\IRouter */ $this->create('core_ajax_public_preview', '/publicpreview')->action( function() { diff --git a/apps/files_sharing/appinfo/update.php b/apps/files_sharing/appinfo/update.php deleted file mode 100644 index e393b1575af..00000000000 --- a/apps/files_sharing/appinfo/update.php +++ /dev/null @@ -1,120 +0,0 @@ -<?php - -$installedVersion = OCP\Config::getAppValue('files_sharing', 'installed_version'); - -if (version_compare($installedVersion, '0.5', '<')) { - updateFilePermissions(); -} - -if (version_compare($installedVersion, '0.4', '<')) { - removeSharedFolder(); -} - -// clean up oc_share table from files which are no longer exists -if (version_compare($installedVersion, '0.3.5.6', '<')) { - \OC\Files\Cache\Shared_Updater::fixBrokenSharesOnAppUpdate(); -} - - -/** - * it is no longer possible to share single files with delete permissions. User - * should only be able to unshare single files but never to delete them. - */ -function updateFilePermissions($chunkSize = 99) { - $query = OCP\DB::prepare('SELECT * FROM `*PREFIX*share` WHERE `item_type` = ?'); - $result = $query->execute(array('file')); - - $updatedRows = array(); - - while ($row = $result->fetchRow()) { - if ($row['permissions'] & \OCP\PERMISSION_DELETE) { - $updatedRows[$row['id']] = (int)$row['permissions'] & ~\OCP\PERMISSION_DELETE; - } - } - - $connection = \OC_DB::getConnection(); - $chunkedPermissionList = array_chunk($updatedRows, $chunkSize, true); - - foreach ($chunkedPermissionList as $subList) { - $statement = "UPDATE `*PREFIX*share` SET `permissions` = CASE `id` "; - //update share table - $ids = implode(',', array_keys($subList)); - foreach ($subList as $id => $permission) { - $statement .= "WHEN " . $connection->quote($id, \PDO::PARAM_INT) . " THEN " . $permission . " "; - } - $statement .= ' END WHERE `id` IN (' . $ids . ')'; - - $query = OCP\DB::prepare($statement); - $query->execute(); - } - -} - -/** - * update script for the removal of the logical "Shared" folder, we create physical "Shared" folder and - * update the users file_target so that it doesn't make any difference for the user - * @note parameters are just for testing, please ignore them - */ -function removeSharedFolder($mkdirs = true, $chunkSize = 99) { - $query = OCP\DB::prepare('SELECT * FROM `*PREFIX*share`'); - $result = $query->execute(); - $view = new \OC\Files\View('/'); - $users = array(); - $shares = array(); - //we need to set up user backends - OC_User::useBackend(new OC_User_Database()); - OC_Group::useBackend(new OC_Group_Database()); - OC_App::loadApps(array('authentication')); - //we need to set up user backends, otherwise creating the shares will fail with "because user does not exist" - while ($row = $result->fetchRow()) { - //collect all user shares - if ((int)$row['share_type'] === 0 && ($row['item_type'] === 'file' || $row['item_type'] === 'folder')) { - $users[] = $row['share_with']; - $shares[$row['id']] = $row['file_target']; - } else if ((int)$row['share_type'] === 1 && ($row['item_type'] === 'file' || $row['item_type'] === 'folder')) { - //collect all group shares - $users = array_merge($users, \OC_group::usersInGroup($row['share_with'])); - $shares[$row['id']] = $row['file_target']; - } else if ((int)$row['share_type'] === 2) { - $shares[$row['id']] = $row['file_target']; - } - } - - $unique_users = array_unique($users); - - if (!empty($unique_users) && !empty($shares)) { - - // create folder Shared for each user - - if ($mkdirs) { - foreach ($unique_users as $user) { - \OC\Files\Filesystem::initMountPoints($user); - if (!$view->file_exists('/' . $user . '/files/Shared')) { - $view->mkdir('/' . $user . '/files/Shared'); - } - } - } - - $chunkedShareList = array_chunk($shares, $chunkSize, true); - $connection = \OC_DB::getConnection(); - - foreach ($chunkedShareList as $subList) { - - $statement = "UPDATE `*PREFIX*share` SET `file_target` = CASE `id` "; - //update share table - $ids = implode(',', array_keys($subList)); - foreach ($subList as $id => $target) { - $statement .= "WHEN " . $connection->quote($id, \PDO::PARAM_INT) . " THEN " . $connection->quote('/Shared' . $target, \PDO::PARAM_STR); - } - $statement .= ' END WHERE `id` IN (' . $ids . ')'; - - $query = OCP\DB::prepare($statement); - - $query->execute(array()); - } - - // set config to keep the Shared folder as the default location for new shares - \OCA\Files_Sharing\Helper::setShareFolder('/Shared'); - - } -} diff --git a/apps/files_sharing/application.php b/apps/files_sharing/application.php new file mode 100644 index 00000000000..089ed6afbda --- /dev/null +++ b/apps/files_sharing/application.php @@ -0,0 +1,73 @@ +<?php +/** + * @author Lukas Reschke + * @copyright 2014 Lukas Reschke lukas@owncloud.com + * + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OCA\Files_Sharing; + +use OC\AppFramework\Utility\SimpleContainer; +use OCA\Files_Sharing\Controllers\ShareController; +use OCA\Files_Sharing\Middleware\SharingCheckMiddleware; +use \OCP\AppFramework\App; + +/** + * @package OCA\Files_Sharing + */ +class Application extends App { + + + /** + * @param array $urlParams + */ + public function __construct(array $urlParams=array()){ + parent::__construct('files_sharing', $urlParams); + + $container = $this->getContainer(); + + /** + * Controllers + */ + $container->registerService('ShareController', function(SimpleContainer $c) { + return new ShareController( + $c->query('AppName'), + $c->query('Request'), + $c->query('UserSession'), + $c->query('ServerContainer')->getAppConfig(), + $c->query('ServerContainer')->getConfig(), + $c->query('URLGenerator'), + $c->query('ServerContainer')->getUserManager(), + $c->query('ServerContainer')->getLogger() + ); + }); + + /** + * Core class wrappers + */ + $container->registerService('UserSession', function(SimpleContainer $c) { + return $c->query('ServerContainer')->getUserSession(); + }); + $container->registerService('URLGenerator', function(SimpleContainer $c) { + return $c->query('ServerContainer')->getUrlGenerator(); + }); + + /** + * Middleware + */ + $container->registerService('SharingCheckMiddleware', function(SimpleContainer $c){ + return new SharingCheckMiddleware( + $c->query('AppName'), + $c->query('ServerContainer')->getAppConfig(), + $c->getCoreApi() + ); + }); + + // Execute middlewares + $container->registerMiddleware('SharingCheckMiddleware'); + } + +} diff --git a/apps/files_sharing/js/app.js b/apps/files_sharing/js/app.js index 1a3bfac5b97..1314304c567 100644 --- a/apps/files_sharing/js/app.js +++ b/apps/files_sharing/js/app.js @@ -9,8 +9,14 @@ */ if (!OCA.Sharing) { + /** + * @namespace OCA.Sharing + */ OCA.Sharing = {}; } +/** + * @namespace + */ OCA.Sharing.App = { _inFileList: null, diff --git a/apps/files_sharing/js/public.js b/apps/files_sharing/js/public.js index c4b5508692e..0627ed6ab54 100644 --- a/apps/files_sharing/js/public.js +++ b/apps/files_sharing/js/public.js @@ -16,9 +16,17 @@ if (!OCA.Sharing) { if (!OCA.Files) { OCA.Files = {}; } +/** + * @namespace + */ OCA.Sharing.PublicApp = { _initialized: false, + /** + * Initializes the public share app. + * + * @param $el container + */ initialize: function ($el) { var self = this; var fileActions; @@ -101,14 +109,12 @@ OCA.Sharing.PublicApp = { filename = JSON.stringify(filename); } var path = dir || FileList.getCurrentDirectory(); + var token = $('#sharingToken').val(); var params = { - service: 'files', - t: $('#sharingToken').val(), path: path, - files: filename, - download: null + files: filename }; - return OC.filePath('', '', 'public.php') + '?' + OC.buildQueryString(params); + return OC.generateUrl('/s/'+token+'/download') + '?' + OC.buildQueryString(params); }; this.fileList.getAjaxUrl = function (action, params) { @@ -118,12 +124,11 @@ OCA.Sharing.PublicApp = { }; this.fileList.linkTo = function (dir) { + var token = $('#sharingToken').val(); var params = { - service: 'files', - t: $('#sharingToken').val(), dir: dir }; - return OC.filePath('', '', 'public.php') + '?' + OC.buildQueryString(params); + return OC.generateUrl('/s/'+token+'') + '?' + OC.buildQueryString(params); }; this.fileList.generatePreviewUrl = function (urlSpec) { @@ -185,8 +190,6 @@ OCA.Sharing.PublicApp = { _onDirectoryChanged: function (e) { OC.Util.History.pushState({ - service: 'files', - t: $('#sharingToken').val(), // arghhhh, why is this not called "dir" !? path: e.dir }); diff --git a/apps/files_sharing/js/share.js b/apps/files_sharing/js/share.js index eccd21c9248..8474c66d4b8 100644 --- a/apps/files_sharing/js/share.js +++ b/apps/files_sharing/js/share.js @@ -12,13 +12,30 @@ if (!OCA.Sharing) { OCA.Sharing = {}; } + /** + * @namespace + */ OCA.Sharing.Util = { + /** + * Initialize the sharing app overrides of the default + * file list. + * + * Registers the "Share" file action and adds additional + * DOM attributes for the sharing file info. + * + * @param {OCA.Files.FileActions} fileActions file actions to extend + */ initialize: function(fileActions) { if (OCA.Files.FileList) { var oldCreateRow = OCA.Files.FileList.prototype._createRow; OCA.Files.FileList.prototype._createRow = function(fileData) { var tr = oldCreateRow.apply(this, arguments); var sharePermissions = fileData.permissions; + if (fileData.mountType && fileData.mountType === "external-root"){ + // for external storages we cant use the permissions of the mountpoint + // instead we show all permissions and only use the share permissions from the mountpoint to handle resharing + sharePermissions = sharePermissions | (OC.PERMISSION_ALL & ~OC.PERMISSION_SHARE); + } if (fileData.type === 'file') { // files can't be shared with delete permissions sharePermissions = sharePermissions & ~OC.PERMISSION_DELETE; @@ -160,9 +177,9 @@ * other ones will be shown as "+x" where "x" is the number of * remaining recipients. * - * @param recipients recipients array - * @param count optional total recipients count (in case the array was shortened) - * @return formatted recipients display text + * @param {Array.<String>} recipients recipients array + * @param {int} count optional total recipients count (in case the array was shortened) + * @return {String} formatted recipients display text */ formatRecipients: function(recipients, count) { var maxRecipients = 4; diff --git a/apps/files_sharing/js/sharedfilelist.js b/apps/files_sharing/js/sharedfilelist.js index b99611f9bf0..7a7c24993c0 100644 --- a/apps/files_sharing/js/sharedfilelist.js +++ b/apps/files_sharing/js/sharedfilelist.js @@ -10,15 +10,25 @@ (function() { /** - * Sharing file list + * @class OCA.Sharing.FileList + * @augments OCA.Files.FileList * + * @classdesc Sharing file list. * Contains both "shared with others" and "shared with you" modes. + * + * @param $el container element with existing markup for the #controls + * and a table + * @param [options] map of options, see other parameters + * @param {boolean} [options.sharedWithUser] true to return files shared with + * the current user, false to return files that the user shared with others. + * Defaults to false. + * @param {boolean} [options.linksOnly] true to return only link shares */ var FileList = function($el, options) { this.initialize($el, options); }; - - FileList.prototype = _.extend({}, OCA.Files.FileList.prototype, { + FileList.prototype = _.extend({}, OCA.Files.FileList.prototype, + /** @lends OCA.Sharing.FileList.prototype */ { appName: 'Shares', /** @@ -27,9 +37,11 @@ */ _sharedWithUser: false, _linksOnly: false, - _clientSideSort: true, + /** + * @private + */ initialize: function($el, options) { OCA.Files.FileList.prototype.initialize.apply(this, arguments); if (this.initialized) { @@ -91,7 +103,11 @@ }, getDirectoryPermissions: function() { - return OC.PERMISSION_READ | OC.PERMISSION_DELETE; + var perms = OC.PERMISSION_READ; + if (this._sharedWithUser) { + perms |= OC.PERMISSION_DELETE; + } + return perms; }, updateStorageStatistics: function() { @@ -138,8 +154,8 @@ /** * Converts the OCS API share response data to a file info * list - * @param OCS API share array - * @return array of file info maps + * @param {Array} data OCS API share array + * @return {Array.<OCA.Sharing.SharedFileInfo>} array of shared file info */ _makeFilesFromShares: function(data) { /* jshint camelcase: false */ @@ -191,7 +207,11 @@ } file.name = OC.basename(share.path); file.path = OC.dirname(share.path); - file.permissions = OC.PERMISSION_ALL; + if (this._sharedWithUser) { + file.permissions = OC.PERMISSION_ALL; + } else { + file.permissions = OC.PERMISSION_ALL - OC.PERMISSION_DELETE; + } if (file.path) { file.extraData = share.path; } @@ -259,5 +279,33 @@ } }); + /** + * Share info attributes. + * + * @typedef {Object} OCA.Sharing.ShareInfo + * + * @property {int} id share ID + * @property {int} type share type + * @property {String} target share target, either user name or group name + * @property {int} stime share timestamp in milliseconds + * @property {String} [targetDisplayName] display name of the recipient + * (only when shared with others) + * + */ + + /** + * Shared file info attributes. + * + * @typedef {OCA.Files.FileInfo} OCA.Sharing.SharedFileInfo + * + * @property {Array.<OCA.Sharing.ShareInfo>} shares array of shares for + * this file + * @property {int} mtime most recent share time (if multiple shares) + * @property {String} shareOwner name of the share owner + * @property {Array.<String>} recipients name of the first 4 recipients + * (this is mostly for display purposes) + * @property {String} recipientsDisplayName display name + */ + OCA.Sharing.FileList = FileList; })(); diff --git a/apps/files_sharing/l10n/bg_BG.js b/apps/files_sharing/l10n/bg_BG.js index 15a51e759d7..3b23a76e0f3 100644 --- a/apps/files_sharing/l10n/bg_BG.js +++ b/apps/files_sharing/l10n/bg_BG.js @@ -33,6 +33,9 @@ OC.L10N.register( "Add to your ownCloud" : "Добави към своя ownCloud", "Download" : "Изтегли", "Download %s" : "Изтегли %s", - "Direct link" : "Директна връзка" + "Direct link" : "Директна връзка", + "Server-to-Server Sharing" : "Споделяне между Сървъри", + "Allow users on this server to send shares to other servers" : "Позволи на потребители от този сървър да споделят папки с други сървъри", + "Allow users on this server to receive shares from other servers" : "Позволи на потребители на този сървър да получават споделени папки от други сървъри" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_sharing/l10n/bg_BG.json b/apps/files_sharing/l10n/bg_BG.json index 85b2bcecbe1..c116c4c69ca 100644 --- a/apps/files_sharing/l10n/bg_BG.json +++ b/apps/files_sharing/l10n/bg_BG.json @@ -31,6 +31,9 @@ "Add to your ownCloud" : "Добави към своя ownCloud", "Download" : "Изтегли", "Download %s" : "Изтегли %s", - "Direct link" : "Директна връзка" + "Direct link" : "Директна връзка", + "Server-to-Server Sharing" : "Споделяне между Сървъри", + "Allow users on this server to send shares to other servers" : "Позволи на потребители от този сървър да споделят папки с други сървъри", + "Allow users on this server to receive shares from other servers" : "Позволи на потребители на този сървър да получават споделени папки от други сървъри" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/cs_CZ.js b/apps/files_sharing/l10n/cs_CZ.js index 1d65d7032ee..6b2c05b4dfb 100644 --- a/apps/files_sharing/l10n/cs_CZ.js +++ b/apps/files_sharing/l10n/cs_CZ.js @@ -33,6 +33,9 @@ OC.L10N.register( "Add to your ownCloud" : "Přidat do svého ownCloudu", "Download" : "Stáhnout", "Download %s" : "Stáhnout %s", - "Direct link" : "Přímý odkaz" + "Direct link" : "Přímý odkaz", + "Server-to-Server Sharing" : "Sdílení mezi servery", + "Allow users on this server to send shares to other servers" : "Povolit uživatelům z tohoto serveru zasílat sdílení na jiné servery", + "Allow users on this server to receive shares from other servers" : "Povolit uživatelům z tohoto serveru přijímat sdílení z jiných serverů" }, "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); diff --git a/apps/files_sharing/l10n/cs_CZ.json b/apps/files_sharing/l10n/cs_CZ.json index a4d4bdf28e2..276887c770f 100644 --- a/apps/files_sharing/l10n/cs_CZ.json +++ b/apps/files_sharing/l10n/cs_CZ.json @@ -31,6 +31,9 @@ "Add to your ownCloud" : "Přidat do svého ownCloudu", "Download" : "Stáhnout", "Download %s" : "Stáhnout %s", - "Direct link" : "Přímý odkaz" + "Direct link" : "Přímý odkaz", + "Server-to-Server Sharing" : "Sdílení mezi servery", + "Allow users on this server to send shares to other servers" : "Povolit uživatelům z tohoto serveru zasílat sdílení na jiné servery", + "Allow users on this server to receive shares from other servers" : "Povolit uživatelům z tohoto serveru přijímat sdílení z jiných serverů" },"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/da.js b/apps/files_sharing/l10n/da.js index 961252e26c6..de8c6102993 100644 --- a/apps/files_sharing/l10n/da.js +++ b/apps/files_sharing/l10n/da.js @@ -33,6 +33,9 @@ OC.L10N.register( "Add to your ownCloud" : "Tilføj til din ownCload", "Download" : "Download", "Download %s" : "Download %s", - "Direct link" : "Direkte link" + "Direct link" : "Direkte link", + "Server-to-Server Sharing" : "Deling via server-til-server", + "Allow users on this server to send shares to other servers" : "Tillad brugere på denne server, at sende delinger til andre servere", + "Allow users on this server to receive shares from other servers" : "Tillad brugere på denne server, at modtage delinger fra andre servere" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_sharing/l10n/da.json b/apps/files_sharing/l10n/da.json index 19291cdd9bf..996d45436c6 100644 --- a/apps/files_sharing/l10n/da.json +++ b/apps/files_sharing/l10n/da.json @@ -31,6 +31,9 @@ "Add to your ownCloud" : "Tilføj til din ownCload", "Download" : "Download", "Download %s" : "Download %s", - "Direct link" : "Direkte link" + "Direct link" : "Direkte link", + "Server-to-Server Sharing" : "Deling via server-til-server", + "Allow users on this server to send shares to other servers" : "Tillad brugere på denne server, at sende delinger til andre servere", + "Allow users on this server to receive shares from other servers" : "Tillad brugere på denne server, at modtage delinger fra andre servere" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/de.js b/apps/files_sharing/l10n/de.js index 69635c8ca4c..c3160792e1c 100644 --- a/apps/files_sharing/l10n/de.js +++ b/apps/files_sharing/l10n/de.js @@ -33,6 +33,9 @@ OC.L10N.register( "Add to your ownCloud" : "Zu Deiner ownCloud hinzufügen", "Download" : "Herunterladen", "Download %s" : "Download %s", - "Direct link" : "Direkter Link" + "Direct link" : "Direkter Link", + "Server-to-Server Sharing" : "Server-zu-Server Datenaustausch", + "Allow users on this server to send shares to other servers" : "Nutzern auf diesem Server das Senden von Freigaben an andere Server erlauben", + "Allow users on this server to receive shares from other servers" : "Nutzern auf diesem Server das Empfangen von Freigaben von anderen Servern erlauben" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_sharing/l10n/de.json b/apps/files_sharing/l10n/de.json index f444c486956..62a74cf445b 100644 --- a/apps/files_sharing/l10n/de.json +++ b/apps/files_sharing/l10n/de.json @@ -31,6 +31,9 @@ "Add to your ownCloud" : "Zu Deiner ownCloud hinzufügen", "Download" : "Herunterladen", "Download %s" : "Download %s", - "Direct link" : "Direkter Link" + "Direct link" : "Direkter Link", + "Server-to-Server Sharing" : "Server-zu-Server Datenaustausch", + "Allow users on this server to send shares to other servers" : "Nutzern auf diesem Server das Senden von Freigaben an andere Server erlauben", + "Allow users on this server to receive shares from other servers" : "Nutzern auf diesem Server das Empfangen von Freigaben von anderen Servern erlauben" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/de_DE.js b/apps/files_sharing/l10n/de_DE.js index 23ad9ffb91f..e50a15dd29e 100644 --- a/apps/files_sharing/l10n/de_DE.js +++ b/apps/files_sharing/l10n/de_DE.js @@ -33,6 +33,9 @@ OC.L10N.register( "Add to your ownCloud" : "Zu Ihrer ownCloud hinzufügen", "Download" : "Herunterladen", "Download %s" : "Download %s", - "Direct link" : "Direkte Verlinkung" + "Direct link" : "Direkte Verlinkung", + "Server-to-Server Sharing" : "Server-zu-Server Datenaustausch", + "Allow users on this server to send shares to other servers" : "Nutzern auf diesem Server das Senden von Freigaben an andere Server erlauben", + "Allow users on this server to receive shares from other servers" : "Nutzern auf diesem Server das Empfangen von Freigaben von anderen Servern erlauben" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_sharing/l10n/de_DE.json b/apps/files_sharing/l10n/de_DE.json index a693524d6c1..129769939e5 100644 --- a/apps/files_sharing/l10n/de_DE.json +++ b/apps/files_sharing/l10n/de_DE.json @@ -31,6 +31,9 @@ "Add to your ownCloud" : "Zu Ihrer ownCloud hinzufügen", "Download" : "Herunterladen", "Download %s" : "Download %s", - "Direct link" : "Direkte Verlinkung" + "Direct link" : "Direkte Verlinkung", + "Server-to-Server Sharing" : "Server-zu-Server Datenaustausch", + "Allow users on this server to send shares to other servers" : "Nutzern auf diesem Server das Senden von Freigaben an andere Server erlauben", + "Allow users on this server to receive shares from other servers" : "Nutzern auf diesem Server das Empfangen von Freigaben von anderen Servern erlauben" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/el.js b/apps/files_sharing/l10n/el.js index e80d74b376c..1acfa0240fe 100644 --- a/apps/files_sharing/l10n/el.js +++ b/apps/files_sharing/l10n/el.js @@ -33,6 +33,7 @@ OC.L10N.register( "Add to your ownCloud" : "Προσθήκη στο ownCloud σου", "Download" : "Λήψη", "Download %s" : "Λήψη %s", - "Direct link" : "Άμεσος σύνδεσμος" + "Direct link" : "Άμεσος σύνδεσμος", + "Allow users on this server to receive shares from other servers" : "Να επιτρέπεται στους χρίστες του διακομιστή να λαμβάνουν διαμοιρασμένα αρχεία από άλλους διακομιστές" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_sharing/l10n/el.json b/apps/files_sharing/l10n/el.json index affe333420f..27152556e10 100644 --- a/apps/files_sharing/l10n/el.json +++ b/apps/files_sharing/l10n/el.json @@ -31,6 +31,7 @@ "Add to your ownCloud" : "Προσθήκη στο ownCloud σου", "Download" : "Λήψη", "Download %s" : "Λήψη %s", - "Direct link" : "Άμεσος σύνδεσμος" + "Direct link" : "Άμεσος σύνδεσμος", + "Allow users on this server to receive shares from other servers" : "Να επιτρέπεται στους χρίστες του διακομιστή να λαμβάνουν διαμοιρασμένα αρχεία από άλλους διακομιστές" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/en_GB.js b/apps/files_sharing/l10n/en_GB.js index 0a86e564210..07cc91c6621 100644 --- a/apps/files_sharing/l10n/en_GB.js +++ b/apps/files_sharing/l10n/en_GB.js @@ -33,6 +33,9 @@ OC.L10N.register( "Add to your ownCloud" : "Add to your ownCloud", "Download" : "Download", "Download %s" : "Download %s", - "Direct link" : "Direct link" + "Direct link" : "Direct link", + "Server-to-Server Sharing" : "Server-to-Server Sharing", + "Allow users on this server to send shares to other servers" : "Allow users on this server to send shares to other servers", + "Allow users on this server to receive shares from other servers" : "Allow users on this server to receive shares from other servers" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_sharing/l10n/en_GB.json b/apps/files_sharing/l10n/en_GB.json index c5445a407af..f0e6f5b5bed 100644 --- a/apps/files_sharing/l10n/en_GB.json +++ b/apps/files_sharing/l10n/en_GB.json @@ -31,6 +31,9 @@ "Add to your ownCloud" : "Add to your ownCloud", "Download" : "Download", "Download %s" : "Download %s", - "Direct link" : "Direct link" + "Direct link" : "Direct link", + "Server-to-Server Sharing" : "Server-to-Server Sharing", + "Allow users on this server to send shares to other servers" : "Allow users on this server to send shares to other servers", + "Allow users on this server to receive shares from other servers" : "Allow users on this server to receive shares from other servers" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/es.js b/apps/files_sharing/l10n/es.js index 79e3b6c9811..922c52aeaa0 100644 --- a/apps/files_sharing/l10n/es.js +++ b/apps/files_sharing/l10n/es.js @@ -33,6 +33,9 @@ OC.L10N.register( "Add to your ownCloud" : "Agregue su propio ownCloud", "Download" : "Descargar", "Download %s" : "Descargar %s", - "Direct link" : "Enlace directo" + "Direct link" : "Enlace directo", + "Server-to-Server Sharing" : "Compartir Servidor-a-Servidor", + "Allow users on this server to send shares to other servers" : "Permitir a usuarios de este servidor compartir con usuarios de otros servidores", + "Allow users on this server to receive shares from other servers" : "Permitir a usuarios de este servidor recibir archivos de usuarios de otros servidores" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_sharing/l10n/es.json b/apps/files_sharing/l10n/es.json index fd552789d63..8339a435be0 100644 --- a/apps/files_sharing/l10n/es.json +++ b/apps/files_sharing/l10n/es.json @@ -31,6 +31,9 @@ "Add to your ownCloud" : "Agregue su propio ownCloud", "Download" : "Descargar", "Download %s" : "Descargar %s", - "Direct link" : "Enlace directo" + "Direct link" : "Enlace directo", + "Server-to-Server Sharing" : "Compartir Servidor-a-Servidor", + "Allow users on this server to send shares to other servers" : "Permitir a usuarios de este servidor compartir con usuarios de otros servidores", + "Allow users on this server to receive shares from other servers" : "Permitir a usuarios de este servidor recibir archivos de usuarios de otros servidores" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/et_EE.js b/apps/files_sharing/l10n/et_EE.js index 93ac6d01000..e8158129527 100644 --- a/apps/files_sharing/l10n/et_EE.js +++ b/apps/files_sharing/l10n/et_EE.js @@ -33,6 +33,9 @@ OC.L10N.register( "Add to your ownCloud" : "Lisa oma ownCloudi", "Download" : "Lae alla", "Download %s" : "Laadi alla %s", - "Direct link" : "Otsene link" + "Direct link" : "Otsene link", + "Server-to-Server Sharing" : "Serverist-serverisse jagamine", + "Allow users on this server to send shares to other servers" : "Luba selle serveri kasutajatel saata faile teistesse serveritesse", + "Allow users on this server to receive shares from other servers" : "Luba selle serveri kasutajatel võtta vastu jagamisi teistest serveritest" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_sharing/l10n/et_EE.json b/apps/files_sharing/l10n/et_EE.json index d5bf52aa59d..bb17d22b99f 100644 --- a/apps/files_sharing/l10n/et_EE.json +++ b/apps/files_sharing/l10n/et_EE.json @@ -31,6 +31,9 @@ "Add to your ownCloud" : "Lisa oma ownCloudi", "Download" : "Lae alla", "Download %s" : "Laadi alla %s", - "Direct link" : "Otsene link" + "Direct link" : "Otsene link", + "Server-to-Server Sharing" : "Serverist-serverisse jagamine", + "Allow users on this server to send shares to other servers" : "Luba selle serveri kasutajatel saata faile teistesse serveritesse", + "Allow users on this server to receive shares from other servers" : "Luba selle serveri kasutajatel võtta vastu jagamisi teistest serveritest" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/fi_FI.js b/apps/files_sharing/l10n/fi_FI.js index c4713c2be3f..bb02376e115 100644 --- a/apps/files_sharing/l10n/fi_FI.js +++ b/apps/files_sharing/l10n/fi_FI.js @@ -33,6 +33,9 @@ OC.L10N.register( "Add to your ownCloud" : "Lisää ownCloudiisi", "Download" : "Lataa", "Download %s" : "Lataa %s", - "Direct link" : "Suora linkki" + "Direct link" : "Suora linkki", + "Server-to-Server Sharing" : "Palvelimelta palvelimelle -jakaminen", + "Allow users on this server to send shares to other servers" : "Salli tämän palvelimen käyttäjien lähettää jakoja muille palvelimille", + "Allow users on this server to receive shares from other servers" : "Salli tämän palvelimen käyttäjien vastaanottaa jakoja muilta palvelimilta" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_sharing/l10n/fi_FI.json b/apps/files_sharing/l10n/fi_FI.json index ec29c214b45..84b681252dc 100644 --- a/apps/files_sharing/l10n/fi_FI.json +++ b/apps/files_sharing/l10n/fi_FI.json @@ -31,6 +31,9 @@ "Add to your ownCloud" : "Lisää ownCloudiisi", "Download" : "Lataa", "Download %s" : "Lataa %s", - "Direct link" : "Suora linkki" + "Direct link" : "Suora linkki", + "Server-to-Server Sharing" : "Palvelimelta palvelimelle -jakaminen", + "Allow users on this server to send shares to other servers" : "Salli tämän palvelimen käyttäjien lähettää jakoja muille palvelimille", + "Allow users on this server to receive shares from other servers" : "Salli tämän palvelimen käyttäjien vastaanottaa jakoja muilta palvelimilta" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/fr.js b/apps/files_sharing/l10n/fr.js index 1db7a59f3d5..98f1a46627d 100644 --- a/apps/files_sharing/l10n/fr.js +++ b/apps/files_sharing/l10n/fr.js @@ -33,6 +33,9 @@ OC.L10N.register( "Add to your ownCloud" : "Ajouter à votre ownCloud", "Download" : "Télécharger", "Download %s" : "Télécharger %s", - "Direct link" : "Lien direct" + "Direct link" : "Lien direct", + "Server-to-Server Sharing" : "Partage de serveur à serveur", + "Allow users on this server to send shares to other servers" : "Autoriser les utilisateurs de ce serveur à envoyer des partages vers d'autres serveurs", + "Allow users on this server to receive shares from other servers" : "Autoriser les utilisateurs de ce serveur à recevoir des partages d'autres serveurs" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/files_sharing/l10n/fr.json b/apps/files_sharing/l10n/fr.json index 6981cd74937..c7145f92e98 100644 --- a/apps/files_sharing/l10n/fr.json +++ b/apps/files_sharing/l10n/fr.json @@ -31,6 +31,9 @@ "Add to your ownCloud" : "Ajouter à votre ownCloud", "Download" : "Télécharger", "Download %s" : "Télécharger %s", - "Direct link" : "Lien direct" + "Direct link" : "Lien direct", + "Server-to-Server Sharing" : "Partage de serveur à serveur", + "Allow users on this server to send shares to other servers" : "Autoriser les utilisateurs de ce serveur à envoyer des partages vers d'autres serveurs", + "Allow users on this server to receive shares from other servers" : "Autoriser les utilisateurs de ce serveur à recevoir des partages d'autres serveurs" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/it.js b/apps/files_sharing/l10n/it.js index 814e1a35f49..64ee7b18f6f 100644 --- a/apps/files_sharing/l10n/it.js +++ b/apps/files_sharing/l10n/it.js @@ -33,6 +33,9 @@ OC.L10N.register( "Add to your ownCloud" : "Aggiungi al tuo ownCloud", "Download" : "Scarica", "Download %s" : "Scarica %s", - "Direct link" : "Collegamento diretto" + "Direct link" : "Collegamento diretto", + "Server-to-Server Sharing" : "Condivisione server-a-server", + "Allow users on this server to send shares to other servers" : "Consenti agli utenti su questo server di inviare condivisioni ad altri server", + "Allow users on this server to receive shares from other servers" : "Consenti agli utenti su questo server di ricevere condivisioni da altri server" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_sharing/l10n/it.json b/apps/files_sharing/l10n/it.json index 4b070fe12c0..241c24febed 100644 --- a/apps/files_sharing/l10n/it.json +++ b/apps/files_sharing/l10n/it.json @@ -31,6 +31,9 @@ "Add to your ownCloud" : "Aggiungi al tuo ownCloud", "Download" : "Scarica", "Download %s" : "Scarica %s", - "Direct link" : "Collegamento diretto" + "Direct link" : "Collegamento diretto", + "Server-to-Server Sharing" : "Condivisione server-a-server", + "Allow users on this server to send shares to other servers" : "Consenti agli utenti su questo server di inviare condivisioni ad altri server", + "Allow users on this server to receive shares from other servers" : "Consenti agli utenti su questo server di ricevere condivisioni da altri server" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/ja.js b/apps/files_sharing/l10n/ja.js index c21273c2d79..c0626abb222 100644 --- a/apps/files_sharing/l10n/ja.js +++ b/apps/files_sharing/l10n/ja.js @@ -33,6 +33,9 @@ OC.L10N.register( "Add to your ownCloud" : "ownCloud に追加", "Download" : "ダウンロード", "Download %s" : "%s をダウンロード", - "Direct link" : "リンク" + "Direct link" : "リンク", + "Server-to-Server Sharing" : "サーバー間共有", + "Allow users on this server to send shares to other servers" : "ユーザーがこのサーバーから他のサーバーに共有することを許可する", + "Allow users on this server to receive shares from other servers" : "ユーザーが他のサーバーからこのサーバーに共有することを許可する" }, "nplurals=1; plural=0;"); diff --git a/apps/files_sharing/l10n/ja.json b/apps/files_sharing/l10n/ja.json index da34e81cf66..1a199b9e6dc 100644 --- a/apps/files_sharing/l10n/ja.json +++ b/apps/files_sharing/l10n/ja.json @@ -31,6 +31,9 @@ "Add to your ownCloud" : "ownCloud に追加", "Download" : "ダウンロード", "Download %s" : "%s をダウンロード", - "Direct link" : "リンク" + "Direct link" : "リンク", + "Server-to-Server Sharing" : "サーバー間共有", + "Allow users on this server to send shares to other servers" : "ユーザーがこのサーバーから他のサーバーに共有することを許可する", + "Allow users on this server to receive shares from other servers" : "ユーザーが他のサーバーからこのサーバーに共有することを許可する" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/nl.js b/apps/files_sharing/l10n/nl.js index 87ddec611a8..e997a1167f4 100644 --- a/apps/files_sharing/l10n/nl.js +++ b/apps/files_sharing/l10n/nl.js @@ -33,6 +33,9 @@ OC.L10N.register( "Add to your ownCloud" : "Toevoegen aan uw ownCloud", "Download" : "Downloaden", "Download %s" : "Download %s", - "Direct link" : "Directe link" + "Direct link" : "Directe link", + "Server-to-Server Sharing" : "Server-naar-Server delen", + "Allow users on this server to send shares to other servers" : "Toestaan dat gebruikers op deze server shares sturen naar andere servers", + "Allow users on this server to receive shares from other servers" : "Toestaan dat gebruikers op deze server shares ontvangen van andere servers" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_sharing/l10n/nl.json b/apps/files_sharing/l10n/nl.json index 2cdbf4eb953..9d6fd9c37ca 100644 --- a/apps/files_sharing/l10n/nl.json +++ b/apps/files_sharing/l10n/nl.json @@ -31,6 +31,9 @@ "Add to your ownCloud" : "Toevoegen aan uw ownCloud", "Download" : "Downloaden", "Download %s" : "Download %s", - "Direct link" : "Directe link" + "Direct link" : "Directe link", + "Server-to-Server Sharing" : "Server-naar-Server delen", + "Allow users on this server to send shares to other servers" : "Toestaan dat gebruikers op deze server shares sturen naar andere servers", + "Allow users on this server to receive shares from other servers" : "Toestaan dat gebruikers op deze server shares ontvangen van andere servers" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/pt_BR.js b/apps/files_sharing/l10n/pt_BR.js index cb961362f4d..57d2018282c 100644 --- a/apps/files_sharing/l10n/pt_BR.js +++ b/apps/files_sharing/l10n/pt_BR.js @@ -33,6 +33,9 @@ OC.L10N.register( "Add to your ownCloud" : "Adiconar ao seu ownCloud", "Download" : "Baixar", "Download %s" : "Baixar %s", - "Direct link" : "Link direto" + "Direct link" : "Link direto", + "Server-to-Server Sharing" : "Compartilhamento Servidor-a-servidor", + "Allow users on this server to send shares to other servers" : "Permitir que os usuários deste servidor enviem compartilhamentos para outros servidores", + "Allow users on this server to receive shares from other servers" : "Permitir que os usuários nesse servidor recebam compartilhamentos de outros servidores" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/files_sharing/l10n/pt_BR.json b/apps/files_sharing/l10n/pt_BR.json index 3ca7602a171..1587aca9832 100644 --- a/apps/files_sharing/l10n/pt_BR.json +++ b/apps/files_sharing/l10n/pt_BR.json @@ -31,6 +31,9 @@ "Add to your ownCloud" : "Adiconar ao seu ownCloud", "Download" : "Baixar", "Download %s" : "Baixar %s", - "Direct link" : "Link direto" + "Direct link" : "Link direto", + "Server-to-Server Sharing" : "Compartilhamento Servidor-a-servidor", + "Allow users on this server to send shares to other servers" : "Permitir que os usuários deste servidor enviem compartilhamentos para outros servidores", + "Allow users on this server to receive shares from other servers" : "Permitir que os usuários nesse servidor recebam compartilhamentos de outros servidores" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/pt_PT.js b/apps/files_sharing/l10n/pt_PT.js index b85bd00014c..9df977ef41d 100644 --- a/apps/files_sharing/l10n/pt_PT.js +++ b/apps/files_sharing/l10n/pt_PT.js @@ -1,23 +1,23 @@ OC.L10N.register( "files_sharing", { - "Server to server sharing is not enabled on this server" : "A partilha entre servidores não se encontra disponível", - "The mountpoint name contains invalid characters." : "O nome de mountpoint contém caracteres inválidos.", + "Server to server sharing is not enabled on this server" : "A partilha entre servidores não se encontra disponível neste servidor", + "The mountpoint name contains invalid characters." : "O nome do ponto de montagem contém carateres inválidos.", "Invalid or untrusted SSL certificate" : "Certificado SSL inválido ou não confiável", - "Couldn't add remote share" : "Ocorreu um erro ao adicionar a partilha remota", + "Couldn't add remote share" : "Não foi possível adicionar a partilha remota", "Shared with you" : "Partilhado consigo ", "Shared with others" : "Partilhado com outros", "Shared by link" : "Partilhado pela hiperligação", - "No files have been shared with you yet." : "Ainda não partilhados quaisquer ficheuiros consigo.", + "No files have been shared with you yet." : "Ainda não foram partilhados quaisquer ficheiros consigo.", "You haven't shared any files yet." : "Ainda não partilhou quaisquer ficheiros.", - "You haven't shared any files by link yet." : "Ainda não partilhou quaisquer ficheiros por hiperligação.", + "You haven't shared any files by link yet." : "Ainda não partilhou quaisquer ficheiros através de hiperligação.", "Do you want to add the remote share {name} from {owner}@{remote}?" : "Deseja adicionar a partilha remota {nome} de {proprietário}@{remoto}?", "Remote share" : "Partilha remota", - "Remote share password" : "Password da partilha remota", + "Remote share password" : "Senha da partilha remota", "Cancel" : "Cancelar", "Add remote share" : "Adicionar partilha remota", - "No ownCloud installation found at {remote}" : "Não foi encontrada uma instalação em {remote}", - "Invalid ownCloud url" : "Endereço errado", + "No ownCloud installation found at {remote}" : "Não foi encontrada uma instalação ownCloud em {remote}", + "Invalid ownCloud url" : "Url ownCloud inválido", "Shared by" : "Partilhado por", "This share is password-protected" : "Esta partilha está protegida por senha", "The password is wrong. Try again." : "A senha está errada. Por favor, tente de novo.", @@ -30,9 +30,12 @@ OC.L10N.register( "the link expired" : "A hiperligação expirou", "sharing is disabled" : "a partilha está desativada", "For more info, please ask the person who sent this link." : "Para mais informação, por favor, pergunte à pessoa que lhe enviou esta hiperligação.", - "Add to your ownCloud" : "Adicionar á sua ownCloud", + "Add to your ownCloud" : "Adicionar à sua ownCloud", "Download" : "Transferir", "Download %s" : "Transferir %s", - "Direct link" : "Hiperligação direta" + "Direct link" : "Hiperligação direta", + "Server-to-Server Sharing" : "Servidor-para-Servidor de Partilha", + "Allow users on this server to send shares to other servers" : "Permitir utilizadores neste servidor para enviar as partilhas para outros servidores", + "Allow users on this server to receive shares from other servers" : "Permitir utilizadores neste servidor para receber as partilhas de outros servidores" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_sharing/l10n/pt_PT.json b/apps/files_sharing/l10n/pt_PT.json index 228d59d2b9c..a1500f4d827 100644 --- a/apps/files_sharing/l10n/pt_PT.json +++ b/apps/files_sharing/l10n/pt_PT.json @@ -1,21 +1,21 @@ { "translations": { - "Server to server sharing is not enabled on this server" : "A partilha entre servidores não se encontra disponível", - "The mountpoint name contains invalid characters." : "O nome de mountpoint contém caracteres inválidos.", + "Server to server sharing is not enabled on this server" : "A partilha entre servidores não se encontra disponível neste servidor", + "The mountpoint name contains invalid characters." : "O nome do ponto de montagem contém carateres inválidos.", "Invalid or untrusted SSL certificate" : "Certificado SSL inválido ou não confiável", - "Couldn't add remote share" : "Ocorreu um erro ao adicionar a partilha remota", + "Couldn't add remote share" : "Não foi possível adicionar a partilha remota", "Shared with you" : "Partilhado consigo ", "Shared with others" : "Partilhado com outros", "Shared by link" : "Partilhado pela hiperligação", - "No files have been shared with you yet." : "Ainda não partilhados quaisquer ficheuiros consigo.", + "No files have been shared with you yet." : "Ainda não foram partilhados quaisquer ficheiros consigo.", "You haven't shared any files yet." : "Ainda não partilhou quaisquer ficheiros.", - "You haven't shared any files by link yet." : "Ainda não partilhou quaisquer ficheiros por hiperligação.", + "You haven't shared any files by link yet." : "Ainda não partilhou quaisquer ficheiros através de hiperligação.", "Do you want to add the remote share {name} from {owner}@{remote}?" : "Deseja adicionar a partilha remota {nome} de {proprietário}@{remoto}?", "Remote share" : "Partilha remota", - "Remote share password" : "Password da partilha remota", + "Remote share password" : "Senha da partilha remota", "Cancel" : "Cancelar", "Add remote share" : "Adicionar partilha remota", - "No ownCloud installation found at {remote}" : "Não foi encontrada uma instalação em {remote}", - "Invalid ownCloud url" : "Endereço errado", + "No ownCloud installation found at {remote}" : "Não foi encontrada uma instalação ownCloud em {remote}", + "Invalid ownCloud url" : "Url ownCloud inválido", "Shared by" : "Partilhado por", "This share is password-protected" : "Esta partilha está protegida por senha", "The password is wrong. Try again." : "A senha está errada. Por favor, tente de novo.", @@ -28,9 +28,12 @@ "the link expired" : "A hiperligação expirou", "sharing is disabled" : "a partilha está desativada", "For more info, please ask the person who sent this link." : "Para mais informação, por favor, pergunte à pessoa que lhe enviou esta hiperligação.", - "Add to your ownCloud" : "Adicionar á sua ownCloud", + "Add to your ownCloud" : "Adicionar à sua ownCloud", "Download" : "Transferir", "Download %s" : "Transferir %s", - "Direct link" : "Hiperligação direta" + "Direct link" : "Hiperligação direta", + "Server-to-Server Sharing" : "Servidor-para-Servidor de Partilha", + "Allow users on this server to send shares to other servers" : "Permitir utilizadores neste servidor para enviar as partilhas para outros servidores", + "Allow users on this server to receive shares from other servers" : "Permitir utilizadores neste servidor para receber as partilhas de outros servidores" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/ru.js b/apps/files_sharing/l10n/ru.js index f6a24253590..f8a73755cd1 100644 --- a/apps/files_sharing/l10n/ru.js +++ b/apps/files_sharing/l10n/ru.js @@ -33,6 +33,9 @@ OC.L10N.register( "Add to your ownCloud" : "Добавить в свой ownCloud", "Download" : "Скачать", "Download %s" : "Скачать %s", - "Direct link" : "Прямая ссылка" + "Direct link" : "Прямая ссылка", + "Server-to-Server Sharing" : "Общий доступ Сервер-Сервер", + "Allow users on this server to send shares to other servers" : "Разрешить пользователям на этом сервере отправлять файлы на другие сервера", + "Allow users on this server to receive shares from other servers" : "Разрешить пользователям на том сервере получать файлы с других серверов" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/files_sharing/l10n/ru.json b/apps/files_sharing/l10n/ru.json index 9eaf51586d4..ab20e0c3e92 100644 --- a/apps/files_sharing/l10n/ru.json +++ b/apps/files_sharing/l10n/ru.json @@ -31,6 +31,9 @@ "Add to your ownCloud" : "Добавить в свой ownCloud", "Download" : "Скачать", "Download %s" : "Скачать %s", - "Direct link" : "Прямая ссылка" + "Direct link" : "Прямая ссылка", + "Server-to-Server Sharing" : "Общий доступ Сервер-Сервер", + "Allow users on this server to send shares to other servers" : "Разрешить пользователям на этом сервере отправлять файлы на другие сервера", + "Allow users on this server to receive shares from other servers" : "Разрешить пользователям на том сервере получать файлы с других серверов" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/sk.php b/apps/files_sharing/l10n/sk.php deleted file mode 100644 index bc251c7fd59..00000000000 --- a/apps/files_sharing/l10n/sk.php +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$TRANSLATIONS = array( -"Cancel" => "Zrušiť", -"Download" => "Stiahnuť" -); -$PLURAL_FORMS = "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"; diff --git a/apps/files_sharing/l10n/sl.js b/apps/files_sharing/l10n/sl.js index d685f6cc501..b9a3a00585c 100644 --- a/apps/files_sharing/l10n/sl.js +++ b/apps/files_sharing/l10n/sl.js @@ -33,6 +33,9 @@ OC.L10N.register( "Add to your ownCloud" : "Dodaj v svoj oblak ownCloud", "Download" : "Prejmi", "Download %s" : "Prejmi %s", - "Direct link" : "Neposredna povezava" + "Direct link" : "Neposredna povezava", + "Server-to-Server Sharing" : "Souporaba strežnik-na-strežnik", + "Allow users on this server to send shares to other servers" : "Dovoli uporabnikom tega strežnika pošiljanje map za souporabo na druge strežnike.", + "Allow users on this server to receive shares from other servers" : "Dovoli uporabnikom tega strežnika sprejemanje map za souporabo z drugih strežnikov." }, "nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"); diff --git a/apps/files_sharing/l10n/sl.json b/apps/files_sharing/l10n/sl.json index 0b45262f95f..5e9290df487 100644 --- a/apps/files_sharing/l10n/sl.json +++ b/apps/files_sharing/l10n/sl.json @@ -31,6 +31,9 @@ "Add to your ownCloud" : "Dodaj v svoj oblak ownCloud", "Download" : "Prejmi", "Download %s" : "Prejmi %s", - "Direct link" : "Neposredna povezava" + "Direct link" : "Neposredna povezava", + "Server-to-Server Sharing" : "Souporaba strežnik-na-strežnik", + "Allow users on this server to send shares to other servers" : "Dovoli uporabnikom tega strežnika pošiljanje map za souporabo na druge strežnike.", + "Allow users on this server to receive shares from other servers" : "Dovoli uporabnikom tega strežnika sprejemanje map za souporabo z drugih strežnikov." },"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/tr.js b/apps/files_sharing/l10n/tr.js index ae6217cab93..7bbeefc9622 100644 --- a/apps/files_sharing/l10n/tr.js +++ b/apps/files_sharing/l10n/tr.js @@ -33,6 +33,9 @@ OC.L10N.register( "Add to your ownCloud" : "ownCloud'ınıza Ekleyin", "Download" : "İndir", "Download %s" : "İndir: %s", - "Direct link" : "Doğrudan bağlantı" + "Direct link" : "Doğrudan bağlantı", + "Server-to-Server Sharing" : "Sunucu-Sunucu Paylaşımı", + "Allow users on this server to send shares to other servers" : "Bu sunucudaki kullanıcıların diğer sunuculara paylaşım göndermelerine izin ver", + "Allow users on this server to receive shares from other servers" : "Bu sunucudaki kullanıcıların diğer sunucularda paylaşım almalarına izin ver" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/files_sharing/l10n/tr.json b/apps/files_sharing/l10n/tr.json index 90d206ac3ed..f91ab02288b 100644 --- a/apps/files_sharing/l10n/tr.json +++ b/apps/files_sharing/l10n/tr.json @@ -31,6 +31,9 @@ "Add to your ownCloud" : "ownCloud'ınıza Ekleyin", "Download" : "İndir", "Download %s" : "İndir: %s", - "Direct link" : "Doğrudan bağlantı" + "Direct link" : "Doğrudan bağlantı", + "Server-to-Server Sharing" : "Sunucu-Sunucu Paylaşımı", + "Allow users on this server to send shares to other servers" : "Bu sunucudaki kullanıcıların diğer sunuculara paylaşım göndermelerine izin ver", + "Allow users on this server to receive shares from other servers" : "Bu sunucudaki kullanıcıların diğer sunucularda paylaşım almalarına izin ver" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/uk.js b/apps/files_sharing/l10n/uk.js index a41afdceb71..e4506d34c62 100644 --- a/apps/files_sharing/l10n/uk.js +++ b/apps/files_sharing/l10n/uk.js @@ -33,6 +33,9 @@ OC.L10N.register( "Add to your ownCloud" : "Додати до вашого ownCloud", "Download" : "Завантажити", "Download %s" : "Завантажити %s", - "Direct link" : "Пряме посилання" + "Direct link" : "Пряме посилання", + "Server-to-Server Sharing" : "Публікація між серверами", + "Allow users on this server to send shares to other servers" : "Дозволити користувачам цього сервера публікувати на інших серверах", + "Allow users on this server to receive shares from other servers" : "Дозволити користувачам на цьому сервері отримувати публікації з інших серверів" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/files_sharing/l10n/uk.json b/apps/files_sharing/l10n/uk.json index a8d66aae2e9..4e85a0a459c 100644 --- a/apps/files_sharing/l10n/uk.json +++ b/apps/files_sharing/l10n/uk.json @@ -31,6 +31,9 @@ "Add to your ownCloud" : "Додати до вашого ownCloud", "Download" : "Завантажити", "Download %s" : "Завантажити %s", - "Direct link" : "Пряме посилання" + "Direct link" : "Пряме посилання", + "Server-to-Server Sharing" : "Публікація між серверами", + "Allow users on this server to send shares to other servers" : "Дозволити користувачам цього сервера публікувати на інших серверах", + "Allow users on this server to receive shares from other servers" : "Дозволити користувачам на цьому сервері отримувати публікації з інших серверів" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/files_sharing/lib/connector/publicauth.php b/apps/files_sharing/lib/connector/publicauth.php index c9d545180b3..4144dafa379 100644 --- a/apps/files_sharing/lib/connector/publicauth.php +++ b/apps/files_sharing/lib/connector/publicauth.php @@ -48,12 +48,26 @@ class PublicAuth extends \Sabre\DAV\Auth\Backend\AbstractBasic { if (isset($linkItem['share_with'])) { if ($linkItem['share_type'] == \OCP\Share::SHARE_TYPE_LINK) { // Check Password - $forcePortable = (CRYPT_BLOWFISH != 1); - $hasher = new \PasswordHash(8, $forcePortable); - if (!$hasher->CheckPassword($password . $this->config->getSystemValue('passwordsalt', ''), $linkItem['share_with'])) { - return false; - } else { + $newHash = ''; + if(\OC::$server->getHasher()->verify($password, $linkItem['share_with'], $newHash)) { + /** + * FIXME: Migrate old hashes to new hash format + * Due to the fact that there is no reasonable functionality to update the password + * of an existing share no migration is yet performed there. + * The only possibility is to update the existing share which will result in a new + * share ID and is a major hack. + * + * In the future the migration should be performed once there is a proper method + * to update the share's password. (for example `$share->updatePassword($password)` + * + * @link https://github.com/owncloud/core/issues/10671 + */ + if(!empty($newHash)) { + + } return true; + } else { + return false; } } else { return false; diff --git a/apps/files_sharing/lib/controllers/sharecontroller.php b/apps/files_sharing/lib/controllers/sharecontroller.php new file mode 100644 index 00000000000..0a0594ed8ff --- /dev/null +++ b/apps/files_sharing/lib/controllers/sharecontroller.php @@ -0,0 +1,270 @@ +<?php +/** + * @author Clark Tomlinson <clark@owncloud.com> + * @author Lukas Reschke <lukas@owncloud.com> + * @copyright 2014 Clark Tomlinson & Lukas Reschke + * + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OCA\Files_Sharing\Controllers; + +use OC; +use OC\Files\Filesystem; +use OC_Files; +use OC_Util; +use OCP; +use OCP\Template; +use OCP\JSON; +use OCP\Share; +use OCP\AppFramework\Controller; +use OCP\IRequest; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\AppFramework\Http\RedirectResponse; +use OC\URLGenerator; +use OC\AppConfig; +use OCP\ILogger; +use OCA\Files_Sharing\Helper; +use OCP\User; +use OCP\Util; + +/** + * Class ShareController + * + * @package OCA\Files_Sharing\Controllers + */ +class ShareController extends Controller { + + /** @var \OC\User\Session */ + protected $userSession; + /** @var \OC\AppConfig */ + protected $appConfig; + /** @var \OCP\IConfig */ + protected $config; + /** @var \OC\URLGenerator */ + protected $urlGenerator; + /** @var \OC\User\Manager */ + protected $userManager; + /** @var \OCP\ILogger */ + protected $logger; + + /** + * @param string $appName + * @param IRequest $request + * @param OC\User\Session $userSession + * @param AppConfig $appConfig + * @param OCP\IConfig $config + * @param URLGenerator $urlGenerator + * @param OC\User\Manager $userManager + * @param ILogger $logger + */ + public function __construct($appName, + IRequest $request, + OC\User\Session $userSession, + AppConfig $appConfig, + OCP\IConfig $config, + URLGenerator $urlGenerator, + OC\User\Manager $userManager, + ILogger $logger) { + parent::__construct($appName, $request); + + $this->userSession = $userSession; + $this->appConfig = $appConfig; + $this->config = $config; + $this->urlGenerator = $urlGenerator; + $this->userManager = $userManager; + $this->logger = $logger; + } + + /** + * @PublicPage + * @NoCSRFRequired + * + * @param string $token + * @return TemplateResponse|RedirectResponse + */ + public function showAuthenticate($token) { + $linkItem = Share::getShareByToken($token, false); + + if(Helper::authenticate($linkItem)) { + return new RedirectResponse($this->urlGenerator->linkToRoute('files_sharing.sharecontroller.showShare', array('token' => $token))); + } + + return new TemplateResponse($this->appName, 'authenticate', array(), 'guest'); + } + + /** + * @PublicPage + * @UseSession + * + * Authenticates against password-protected shares + * @param $token + * @param string $password + * @return RedirectResponse|TemplateResponse + */ + public function authenticate($token, $password = '') { + $linkItem = Share::getShareByToken($token, false); + if($linkItem === false) { + return new TemplateResponse('core', '404', array(), 'guest'); + } + + $authenticate = Helper::authenticate($linkItem, $password); + + if($authenticate === true) { + return new RedirectResponse($this->urlGenerator->linkToRoute('files_sharing.sharecontroller.showShare', array('token' => $token))); + } + + return new TemplateResponse($this->appName, 'authenticate', array('wrongpw' => true), 'guest'); + } + + /** + * @PublicPage + * @NoCSRFRequired + * + * @param string $token + * @param string $path + * @return TemplateResponse + */ + public function showShare($token, $path = '') { + \OC_User::setIncognitoMode(true); + + // Check whether share exists + $linkItem = Share::getShareByToken($token, false); + if($linkItem === false) { + return new TemplateResponse('core', '404', array(), 'guest'); + } + + $linkItem = OCP\Share::getShareByToken($token, false); + $shareOwner = $linkItem['uid_owner']; + $originalSharePath = null; + $rootLinkItem = OCP\Share::resolveReShare($linkItem); + if (isset($rootLinkItem['uid_owner'])) { + OCP\JSON::checkUserExists($rootLinkItem['uid_owner']); + OC_Util::tearDownFS(); + OC_Util::setupFS($rootLinkItem['uid_owner']); + $originalSharePath = Filesystem::getPath($linkItem['file_source']); + } + + // Share is password protected - check whether the user is permitted to access the share + if (isset($linkItem['share_with']) && !Helper::authenticate($linkItem)) { + return new RedirectResponse($this->urlGenerator->linkToRoute('files_sharing.sharecontroller.authenticate', + array('token' => $token))); + } + + if (Filesystem::isReadable($originalSharePath . $path)) { + $getPath = Filesystem::normalizePath($path); + $originalSharePath .= $path; + } + + $file = basename($originalSharePath); + + $shareTmpl = array(); + $shareTmpl['displayName'] = User::getDisplayName($shareOwner); + $shareTmpl['filename'] = $file; + $shareTmpl['directory_path'] = $linkItem['file_target']; + $shareTmpl['mimetype'] = Filesystem::getMimeType($originalSharePath); + $shareTmpl['dirToken'] = $linkItem['token']; + $shareTmpl['sharingToken'] = $token; + $shareTmpl['server2serversharing'] = Helper::isOutgoingServer2serverShareEnabled(); + $shareTmpl['protected'] = isset($linkItem['share_with']) ? 'true' : 'false'; + $shareTmpl['dir'] = ''; + $shareTmpl['fileSize'] = \OCP\Util::humanFileSize(\OC\Files\Filesystem::filesize($originalSharePath)); + + // Show file list + if (Filesystem::is_dir($originalSharePath)) { + $shareTmpl['dir'] = $getPath; + $files = array(); + $maxUploadFilesize = Util::maxUploadFilesize($originalSharePath); + $freeSpace = Util::freeSpace($originalSharePath); + $uploadLimit = Util::uploadLimit(); + $folder = new Template('files', 'list', ''); + $folder->assign('dir', $getPath); + $folder->assign('dirToken', $linkItem['token']); + $folder->assign('permissions', \OCP\Constants::PERMISSION_READ); + $folder->assign('isPublic', true); + $folder->assign('publicUploadEnabled', 'no'); + $folder->assign('files', $files); + $folder->assign('uploadMaxFilesize', $maxUploadFilesize); + $folder->assign('uploadMaxHumanFilesize', OCP\Util::humanFileSize($maxUploadFilesize)); + $folder->assign('freeSpace', $freeSpace); + $folder->assign('uploadLimit', $uploadLimit); // PHP upload limit + $folder->assign('usedSpacePercent', 0); + $folder->assign('trash', false); + $shareTmpl['folder'] = $folder->fetchPage(); + } + + $shareTmpl['downloadURL'] = $this->urlGenerator->linkToRouteAbsolute('files_sharing.sharecontroller.downloadShare', array('token' => $token)); + + return new TemplateResponse($this->appName, 'public', $shareTmpl, 'base'); + } + + /** + * @PublicPage + * @NoCSRFRequired + * + * @param string $token + * @param string $files + * @param string $path + * @return void|RedirectResponse + */ + public function downloadShare($token, $files = null, $path = '') { + \OC_User::setIncognitoMode(true); + + $linkItem = OCP\Share::getShareByToken($token, false); + + // Share is password protected - check whether the user is permitted to access the share + if (isset($linkItem['share_with'])) { + if(!Helper::authenticate($linkItem)) { + return new RedirectResponse($this->urlGenerator->linkToRoute('files_sharing.sharecontroller.authenticate', + array('token' => $token))); + } + } + + $originalSharePath = self::getPath($token); + + if (isset($originalSharePath) && Filesystem::isReadable($originalSharePath . $path)) { + $getPath = Filesystem::normalizePath($path); + $originalSharePath .= $getPath; + } + + if (!is_null($files)) { // download selected files + $files_list = json_decode($files); + // in case we get only a single file + if ($files_list === NULL ) { + $files_list = array($files); + } + + // FIXME: The exit is required here because otherwise the AppFramework is trying to add headers as well + // after dispatching the request which results in a "Cannot modify header information" notice. + OC_Files::get($originalSharePath, $files_list, $_SERVER['REQUEST_METHOD'] == 'HEAD'); + exit(); + } else { + // FIXME: The exit is required here because otherwise the AppFramework is trying to add headers as well + // after dispatching the request which results in a "Cannot modify header information" notice. + OC_Files::get(dirname($originalSharePath), basename($originalSharePath), $_SERVER['REQUEST_METHOD'] == 'HEAD'); + exit(); + } + } + + /** + * @param $token + * @return null|string + */ + private function getPath($token) { + $linkItem = Share::getShareByToken($token, false); + $path = null; + if (is_array($linkItem) && isset($linkItem['uid_owner'])) { + // seems to be a valid share + $rootLinkItem = Share::resolveReShare($linkItem); + if (isset($rootLinkItem['uid_owner'])) { + JSON::checkUserExists($rootLinkItem['uid_owner']); + OC_Util::tearDownFS(); + OC_Util::setupFS($rootLinkItem['uid_owner']); + $path = Filesystem::getPath($linkItem['file_source']); + } + } + return $path; + } +} diff --git a/apps/files_sharing/lib/helper.php b/apps/files_sharing/lib/helper.php index e7ca4fcccd4..f7204a8db8f 100644 --- a/apps/files_sharing/lib/helper.php +++ b/apps/files_sharing/lib/helper.php @@ -3,7 +3,6 @@ namespace OCA\Files_Sharing; use OC_Config; -use PasswordHash; class Helper { @@ -95,18 +94,32 @@ class Helper { * * @return boolean true if authorized, false otherwise */ - public static function authenticate($linkItem, $password) { + public static function authenticate($linkItem, $password = null) { if ($password !== null) { if ($linkItem['share_type'] == \OCP\Share::SHARE_TYPE_LINK) { // Check Password - $forcePortable = (CRYPT_BLOWFISH != 1); - $hasher = new PasswordHash(8, $forcePortable); - if (!($hasher->CheckPassword($password.OC_Config::getValue('passwordsalt', ''), - $linkItem['share_with']))) { - return false; - } else { + $newHash = ''; + if(\OC::$server->getHasher()->verify($password, $linkItem['share_with'], $newHash)) { // Save item id in session for future requests \OC::$server->getSession()->set('public_link_authenticated', $linkItem['id']); + + /** + * FIXME: Migrate old hashes to new hash format + * Due to the fact that there is no reasonable functionality to update the password + * of an existing share no migration is yet performed there. + * The only possibility is to update the existing share which will result in a new + * share ID and is a major hack. + * + * In the future the migration should be performed once there is a proper method + * to update the share's password. (for example `$share->updatePassword($password)` + * + * @link https://github.com/owncloud/core/issues/10671 + */ + if(!empty($newHash)) { + + } + } else { + return false; } } else { \OCP\Util::writeLog('share', 'Unknown share type '.$linkItem['share_type'] diff --git a/apps/files_sharing/lib/middleware/sharingcheckmiddleware.php b/apps/files_sharing/lib/middleware/sharingcheckmiddleware.php new file mode 100644 index 00000000000..af79cd9e94a --- /dev/null +++ b/apps/files_sharing/lib/middleware/sharingcheckmiddleware.php @@ -0,0 +1,84 @@ +<?php +/** + * @author Lukas Reschke + * @copyright 2014 Lukas Reschke lukas@owncloud.com + * + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OCA\Files_Sharing\Middleware; + +use OCP\AppFramework\IApi; +use \OCP\AppFramework\Middleware; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\IAppConfig; + +/** + * Checks whether the "sharing check" is enabled + * + * @package OCA\Files_Sharing\Middleware + */ +class SharingCheckMiddleware extends Middleware { + + /** @var string */ + protected $appName; + /** @var IAppConfig */ + protected $appConfig; + /** @var IApi */ + protected $api; + + /*** + * @param string $appName + * @param IAppConfig $appConfig + * @param IApi $api + */ + public function __construct($appName, + IAppConfig $appConfig, + IApi $api) { + $this->appName = $appName; + $this->appConfig = $appConfig; + $this->api = $api; + } + + /** + * Check if sharing is enabled before the controllers is executed + */ + public function beforeController($controller, $methodName) { + if(!$this->isSharingEnabled()) { + throw new \Exception('Sharing is disabled.'); + } + } + + /** + * Return 404 page in case of an exception + * @param \OCP\AppFramework\Controller $controller + * @param string $methodName + * @param \Exception $exception + * @return TemplateResponse + */ + public function afterException($controller, $methodName, \Exception $exception){ + return new TemplateResponse('core', '404', array(), 'guest'); + } + + /** + * Check whether sharing is enabled + * @return bool + */ + private function isSharingEnabled() { + // FIXME: This check is done here since the route is globally defined and not inside the files_sharing app + // Check whether the sharing application is enabled + if(!$this->api->isAppEnabled($this->appName)) { + return false; + } + + // Check whether public sharing is enabled + if($this->appConfig->getValue('core', 'shareapi_allow_links', 'yes') !== 'yes') { + return false; + } + + return true; + } + +} diff --git a/apps/files_sharing/lib/readonlycache.php b/apps/files_sharing/lib/readonlycache.php index f129ca49433..6dd3b9cf61d 100644 --- a/apps/files_sharing/lib/readonlycache.php +++ b/apps/files_sharing/lib/readonlycache.php @@ -13,14 +13,14 @@ use OC\Files\Cache\Cache; class ReadOnlyCache extends Cache { public function get($path) { $data = parent::get($path); - $data['permissions'] &= (\OCP\PERMISSION_READ | \OCP\PERMISSION_SHARE); + $data['permissions'] &= (\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE); return $data; } public function getFolderContents($path) { $content = parent::getFolderContents($path); foreach ($content as &$data) { - $data['permissions'] &= (\OCP\PERMISSION_READ | \OCP\PERMISSION_SHARE); + $data['permissions'] &= (\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE); } return $content; } diff --git a/apps/files_sharing/lib/readonlywrapper.php b/apps/files_sharing/lib/readonlywrapper.php index 45ed3fd68bb..58a5695aff8 100644 --- a/apps/files_sharing/lib/readonlywrapper.php +++ b/apps/files_sharing/lib/readonlywrapper.php @@ -24,7 +24,7 @@ class ReadOnlyWrapper extends Wrapper { } public function getPermissions($path) { - return $this->storage->getPermissions($path) & (\OCP\PERMISSION_READ | \OCP\PERMISSION_SHARE); + return $this->storage->getPermissions($path) & (\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE); } public function rename($path1, $path2) { diff --git a/apps/files_sharing/lib/share/folder.php b/apps/files_sharing/lib/share/folder.php index 2671f5738b7..f86e9624432 100644 --- a/apps/files_sharing/lib/share/folder.php +++ b/apps/files_sharing/lib/share/folder.php @@ -26,13 +26,14 @@ class OC_Share_Backend_Folder extends OC_Share_Backend_File implements OCP\Share * * @param int $itemSource item source ID * @param string $shareWith with whom should the item be shared + * @param string $owner owner of the item * @return array with shares */ - public function getParents($itemSource, $shareWith = null) { + public function getParents($itemSource, $shareWith = null, $owner = null) { $result = array(); $parent = $this->getParentId($itemSource); while ($parent) { - $shares = \OCP\Share::getItemSharedWithUser('folder', $parent, $shareWith); + $shares = \OCP\Share::getItemSharedWithUser('folder', $parent, $shareWith, $owner); if ($shares) { foreach ($shares as $share) { $name = substr($share['path'], strrpos($share['path'], '/') + 1); diff --git a/apps/files_sharing/lib/sharedstorage.php b/apps/files_sharing/lib/sharedstorage.php index 19ee6085e47..1ac57053e25 100644 --- a/apps/files_sharing/lib/sharedstorage.php +++ b/apps/files_sharing/lib/sharedstorage.php @@ -67,7 +67,7 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage { if ($source) { $source['path'] .= '.part'; // All partial files have delete permission - $source['permissions'] |= \OCP\PERMISSION_DELETE; + $source['permissions'] |= \OCP\Constants::PERMISSION_DELETE; } } else { $source = \OC_Share_Backend_File::getSource($target, $this->getMountPoint(), $this->getItemType()); @@ -109,11 +109,11 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage { $permissions = $this->share['permissions']; // part files and the mount point always have delete permissions if ($target === '' || pathinfo($target, PATHINFO_EXTENSION) === 'part') { - $permissions |= \OCP\PERMISSION_DELETE; + $permissions |= \OCP\Constants::PERMISSION_DELETE; } if (\OC_Util::isSharingDisabledForUser()) { - $permissions &= ~\OCP\PERMISSION_SHARE; + $permissions &= ~\OCP\Constants::PERMISSION_SHARE; } return $permissions; @@ -197,7 +197,7 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage { } public function isCreatable($path) { - return ($this->getPermissions($path) & \OCP\PERMISSION_CREATE); + return ($this->getPermissions($path) & \OCP\Constants::PERMISSION_CREATE); } public function isReadable($path) { @@ -205,18 +205,18 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage { } public function isUpdatable($path) { - return ($this->getPermissions($path) & \OCP\PERMISSION_UPDATE); + return ($this->getPermissions($path) & \OCP\Constants::PERMISSION_UPDATE); } public function isDeletable($path) { - return ($this->getPermissions($path) & \OCP\PERMISSION_DELETE); + return ($this->getPermissions($path) & \OCP\Constants::PERMISSION_DELETE); } public function isSharable($path) { if (\OCP\Util::isSharingDisabledForUser()) { return false; } - return ($this->getPermissions($path) & \OCP\PERMISSION_SHARE); + return ($this->getPermissions($path) & \OCP\Constants::PERMISSION_SHARE); } public function file_exists($path) { diff --git a/apps/files_sharing/public.php b/apps/files_sharing/public.php index 4320c105103..d9d14f67c33 100644 --- a/apps/files_sharing/public.php +++ b/apps/files_sharing/public.php @@ -1,205 +1,17 @@ <?php -// Load other apps for file previews -use OCA\Files_Sharing\Helper; - -OC_App::loadApps(); - -$appConfig = \OC::$server->getAppConfig(); - -if ($appConfig->getValue('core', 'shareapi_allow_links', 'yes') !== 'yes') { - header('HTTP/1.0 404 Not Found'); - $tmpl = new OCP\Template('', '404', 'guest'); - $tmpl->printPage(); - exit(); -} - -// Legacy sharing links via public.php have the token in $GET['t'] -if (isset($_GET['t'])) { - $token = $_GET['t']; -} - -if (isset($token)) { - $linkItem = OCP\Share::getShareByToken($token, false); - if (is_array($linkItem) && isset($linkItem['uid_owner'])) { - // seems to be a valid share - $type = $linkItem['item_type']; - $fileSource = $linkItem['file_source']; - $shareOwner = $linkItem['uid_owner']; - $path = null; - $rootLinkItem = OCP\Share::resolveReShare($linkItem); - if (isset($rootLinkItem['uid_owner'])) { - OCP\JSON::checkUserExists($rootLinkItem['uid_owner']); - OC_Util::tearDownFS(); - OC_Util::setupFS($rootLinkItem['uid_owner']); - $path = \OC\Files\Filesystem::getPath($linkItem['file_source']); - } - } -} -if (isset($path)) { - if (!isset($linkItem['item_type'])) { - OCP\Util::writeLog('share', 'No item type set for share id: ' . $linkItem['id'], \OCP\Util::ERROR); - header('HTTP/1.0 404 Not Found'); - $tmpl = new OCP\Template('', '404', 'guest'); - $tmpl->printPage(); - exit(); - } - if (isset($linkItem['share_with'])) { - // Authenticate share_with - $url = OCP\Util::linkToPublic('files') . '&t=' . $token; - if (isset($_GET['file'])) { - $url .= '&file=' . urlencode($_GET['file']); - } else { - if (isset($_GET['dir'])) { - $url .= '&dir=' . urlencode($_GET['dir']); - } - } - if (isset($_POST['password'])) { - $password = $_POST['password']; - if ($linkItem['share_type'] == OCP\Share::SHARE_TYPE_LINK) { - // Check Password - $forcePortable = (CRYPT_BLOWFISH != 1); - $hasher = new PasswordHash(8, $forcePortable); - if (!($hasher->CheckPassword($password.OC_Config::getValue('passwordsalt', ''), - $linkItem['share_with']))) { - OCP\Util::addStyle('files_sharing', 'authenticate'); - $tmpl = new OCP\Template('files_sharing', 'authenticate', 'guest'); - $tmpl->assign('URL', $url); - $tmpl->assign('wrongpw', true); - $tmpl->printPage(); - exit(); - } else { - // Save item id in session for future requests - \OC::$server->getSession()->set('public_link_authenticated', $linkItem['id']); - } - } else { - OCP\Util::writeLog('share', 'Unknown share type '.$linkItem['share_type'] - .' for share id '.$linkItem['id'], \OCP\Util::ERROR); - header('HTTP/1.0 404 Not Found'); - $tmpl = new OCP\Template('', '404', 'guest'); - $tmpl->printPage(); - exit(); - } - - } else { - // Check if item id is set in session - if ( ! \OC::$server->getSession()->exists('public_link_authenticated') - || \OC::$server->getSession()->get('public_link_authenticated') !== $linkItem['id'] - ) { - // Prompt for password - OCP\Util::addStyle('files_sharing', 'authenticate'); - $tmpl = new OCP\Template('files_sharing', 'authenticate', 'guest'); - $tmpl->assign('URL', $url); - $tmpl->printPage(); - exit(); - } - } - } - $basePath = $path; - $rootName = \OC_Util::basename($path); - if (isset($_GET['path']) && \OC\Files\Filesystem::isReadable($basePath . $_GET['path'])) { - $getPath = \OC\Files\Filesystem::normalizePath($_GET['path']); - $path .= $getPath; - } else { - $getPath = ''; - } - $dir = dirname($path); - $file = basename($path); - // Download the file - if (isset($_GET['download'])) { - if (!\OCP\App::isEnabled('files_encryption')) { - // encryption app requires the session to store the keys in - \OC::$server->getSession()->close(); - } - if (isset($_GET['files'])) { // download selected files - $files = $_GET['files']; - $files_list = json_decode($files); - // in case we get only a single file - if (!is_array($files_list)) { - $files_list = array($files); - } - OC_Files::get($path, $files_list, $_SERVER['REQUEST_METHOD'] == 'HEAD'); - } else { - OC_Files::get($dir, $file, $_SERVER['REQUEST_METHOD'] == 'HEAD'); - } - exit(); - } else { - OCP\Util::addScript('files', 'file-upload'); - OCP\Util::addStyle('files_sharing', 'public'); - OCP\Util::addStyle('files_sharing', 'mobile'); - OCP\Util::addScript('files_sharing', 'public'); - OCP\Util::addScript('files', 'fileactions'); - OCP\Util::addScript('files', 'jquery.iframe-transport'); - OCP\Util::addScript('files', 'jquery.fileupload'); - $maxUploadFilesize=OCP\Util::maxUploadFilesize($path); - $tmpl = new OCP\Template('files_sharing', 'public', 'base'); - $tmpl->assign('displayName', \OCP\User::getDisplayName($shareOwner)); - $tmpl->assign('filename', $file); - $tmpl->assign('directory_path', $linkItem['file_target']); - $tmpl->assign('mimetype', \OC\Files\Filesystem::getMimeType($path)); - $tmpl->assign('dirToken', $linkItem['token']); - $tmpl->assign('sharingToken', $token); - $tmpl->assign('server2serversharing', Helper::isOutgoingServer2serverShareEnabled()); - $tmpl->assign('protected', isset($linkItem['share_with']) ? 'true' : 'false'); - - $urlLinkIdentifiers= (isset($token)?'&t='.$token:'') - .(isset($_GET['dir'])?'&dir='.$_GET['dir']:'') - .(isset($_GET['file'])?'&file='.$_GET['file']:''); - // Show file list - if (\OC\Files\Filesystem::is_dir($path)) { - $tmpl->assign('dir', $getPath); - - OCP\Util::addStyle('files', 'files'); - OCP\Util::addStyle('files', 'upload'); - OCP\Util::addScript('files', 'filesummary'); - OCP\Util::addScript('files', 'breadcrumb'); - OCP\Util::addScript('files', 'files'); - OCP\Util::addScript('files', 'filelist'); - OCP\Util::addscript('files', 'keyboardshortcuts'); - $files = array(); - $rootLength = strlen($basePath) + 1; - $maxUploadFilesize=OCP\Util::maxUploadFilesize($path); - - $freeSpace=OCP\Util::freeSpace($path); - $uploadLimit=OCP\Util::uploadLimit(); - $folder = new OCP\Template('files', 'list', ''); - $folder->assign('dir', $getPath); - $folder->assign('dirToken', $linkItem['token']); - $folder->assign('permissions', OCP\PERMISSION_READ); - $folder->assign('isPublic', true); - $folder->assign('publicUploadEnabled', 'no'); - $folder->assign('files', $files); - $folder->assign('uploadMaxFilesize', $maxUploadFilesize); - $folder->assign('uploadMaxHumanFilesize', OCP\Util::humanFileSize($maxUploadFilesize)); - $folder->assign('freeSpace', $freeSpace); - $folder->assign('uploadLimit', $uploadLimit); // PHP upload limit - $folder->assign('usedSpacePercent', 0); - $folder->assign('trash', false); - $tmpl->assign('folder', $folder->fetchPage()); - $tmpl->assign('downloadURL', - OCP\Util::linkToPublic('files') . $urlLinkIdentifiers . '&download&path=' . urlencode($getPath)); - } else { - $tmpl->assign('dir', $dir); - - // Show file preview if viewer is available - if ($type == 'file') { - $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files') . $urlLinkIdentifiers . '&download'); - } else { - $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files') - .$urlLinkIdentifiers.'&download&path='.urlencode($getPath)); - } - } - $tmpl->printPage(); - } - exit(); -} else { - OCP\Util::writeLog('share', 'could not resolve linkItem', \OCP\Util::DEBUG); -} - -$errorTemplate = new OCP\Template('files_sharing', 'part.404', ''); -$errorContent = $errorTemplate->fetchPage(); - -header('HTTP/1.0 404 Not Found'); -OCP\Util::addStyle('files_sharing', '404'); -$tmpl = new OCP\Template('', '404', 'guest'); -$tmpl->assign('content', $errorContent); -$tmpl->printPage(); +/** + * @author Lukas Reschke + * @copyright 2014 Lukas Reschke lukas@owncloud.com + * + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +// This file is just used to redirect the legacy sharing URLs (< ownCloud 8) to the new ones + +$urlGenerator = new \OC\URLGenerator(\OC::$server->getConfig()); +$token = isset($_GET['t']) ? $_GET['t'] : ''; +$route = isset($_GET['download']) ? 'files_sharing.sharecontroller.downloadShare' : 'files_sharing.sharecontroller.showShare'; + +OC_Response::redirect($urlGenerator->linkToRoute($route, array('token' => $token))); diff --git a/apps/files_sharing/publicwebdav.php b/apps/files_sharing/publicwebdav.php index 03e43967a40..2c7ccf8d92c 100644 --- a/apps/files_sharing/publicwebdav.php +++ b/apps/files_sharing/publicwebdav.php @@ -41,7 +41,7 @@ $server->addPlugin(new OC_Connector_Sabre_ExceptionLoggerPlugin('webdav')); $server->subscribeEvent('beforeMethod', function () use ($server, $objectTree, $authBackend) { $share = $authBackend->getShare(); $owner = $share['uid_owner']; - $isWritable = $share['permissions'] & (\OCP\PERMISSION_UPDATE | \OCP\PERMISSION_CREATE); + $isWritable = $share['permissions'] & (\OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_CREATE); $fileId = $share['file_source']; if (!$isWritable) { diff --git a/apps/files_sharing/templates/authenticate.php b/apps/files_sharing/templates/authenticate.php index 0c4ac6ca445..e3aa62b9ece 100644 --- a/apps/files_sharing/templates/authenticate.php +++ b/apps/files_sharing/templates/authenticate.php @@ -1,4 +1,9 @@ -<form action="<?php p($_['URL']); ?>" method="post"> +<?php + /** @var $_ array */ + /** @var $l OC_L10N */ + style('files_sharing', 'authenticate'); +?> +<form method="post"> <fieldset> <?php if (!isset($_['wrongpw'])): ?> <div class="warning-info"><?php p($l->t('This share is password-protected')); ?></div> @@ -8,6 +13,7 @@ <?php endif; ?> <p> <label for="password" class="infield"><?php p($l->t('Password')); ?></label> + <input type="hidden" name="requesttoken" value="<?php p($_['requesttoken']) ?>" /> <input type="password" name="password" id="password" placeholder="<?php p($l->t('Password')); ?>" value="" autocomplete="off" autocapitalize="off" autocorrect="off" diff --git a/apps/files_sharing/templates/public.php b/apps/files_sharing/templates/public.php index 46bf90b1b41..57c8707e962 100644 --- a/apps/files_sharing/templates/public.php +++ b/apps/files_sharing/templates/public.php @@ -1,8 +1,28 @@ -<?php /** @var $l OC_L10N */ ?> <?php +/** @var $l OC_L10N */ +/** @var $_ array */ + +OCP\Util::addScript('files', 'file-upload'); +OCP\Util::addStyle('files_sharing', 'public'); +OCP\Util::addStyle('files_sharing', 'mobile'); +OCP\Util::addScript('files_sharing', 'public'); +OCP\Util::addScript('files', 'fileactions'); +OCP\Util::addScript('files', 'jquery.iframe-transport'); +OCP\Util::addScript('files', 'jquery.fileupload'); + +// JS required for folders +OCP\Util::addStyle('files', 'files'); +OCP\Util::addStyle('files', 'upload'); +OCP\Util::addScript('files', 'filesummary'); +OCP\Util::addScript('files', 'breadcrumb'); +OCP\Util::addScript('files', 'files'); +OCP\Util::addScript('files', 'filelist'); +OCP\Util::addscript('files', 'keyboardshortcuts'); + $thumbSize=1024; $previewSupported = OC\Preview::isMimeSupported($_['mimetype']) ? 'true' : 'false'; ?> + <?php if ( \OC\Preview::isMimeSupported($_['mimetype'])): /* This enables preview images for links (e.g. on Facebook, Google+, ...)*/?> <link rel="image_src" href="<?php p(OCP\Util::linkToRoute( 'core_ajax_public_preview', array('x' => $thumbSize, 'y' => $thumbSize, 'file' => $_['directory_path'], 't' => $_['dirToken']))); ?>" /> <?php endif; ?> @@ -24,7 +44,7 @@ $previewSupported = OC\Preview::isMimeSupported($_['mimetype']) ? 'true' : 'fals <header><div id="header" class="<?php p((isset($_['folder']) ? 'share-folder' : 'share-file')) ?>"> <a href="<?php print_unescaped(link_to('', 'index.php')); ?>" - title="" id="owncloud"> + title="" id="owncloud"> <div class="logo-wide svg"></div> </a> <div id="logo-claim" style="display:none;"><?php p($theme->getLogoClaim()); ?></div> @@ -48,7 +68,7 @@ $previewSupported = OC\Preview::isMimeSupported($_['mimetype']) ? 'true' : 'fals </a> </span> </div> -</div></header> + </div></header> <div id="content"> <div id="preview"> <?php if (isset($_['folder'])): ?> @@ -67,7 +87,7 @@ $previewSupported = OC\Preview::isMimeSupported($_['mimetype']) ? 'true' : 'fals <div class="directDownload"> <a href="<?php p($_['downloadURL']); ?>" id="download" class="button"> <img class="svg" alt="" src="<?php print_unescaped(OCP\image_path("core", "actions/download.svg")); ?>"/> - <?php p($l->t('Download %s', array($_['filename'])))?> + <?php p($l->t('Download %s', array($_['filename'])))?> (<?php p($_['fileSize']) ?>) </a> </div> <div class="directLink"> diff --git a/apps/files_sharing/tests/api.php b/apps/files_sharing/tests/api.php index 453133fee31..1259197423b 100644 --- a/apps/files_sharing/tests/api.php +++ b/apps/files_sharing/tests/api.php @@ -32,7 +32,7 @@ class Test_Files_Sharing_Api extends TestCase { private static $tempStorage; - function setUp() { + protected function setUp() { parent::setUp(); \OC::$server->getAppConfig()->setValue('core', 'shareapi_exclude_groups', 'no'); @@ -53,7 +53,7 @@ class Test_Files_Sharing_Api extends TestCase { $this->view->file_put_contents($this->folder . $this->subfolder . $this->filename, $this->data); } - function tearDown() { + protected function tearDown() { if($this->view instanceof \OC\Files\View) { $this->view->unlink($this->filename); $this->view->deleteAll($this->folder); @@ -788,7 +788,7 @@ class Test_Files_Sharing_Api extends TestCase { $fileInfo = $this->view->getFileInfo($this->filename); $result = \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, - \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2, \OCP\PERMISSION_ALL); + \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2, \OCP\Constants::PERMISSION_ALL); // share was successful? $this->assertTrue($result); @@ -822,7 +822,7 @@ class Test_Files_Sharing_Api extends TestCase { // check if share have expected permissions, single shared files never have // delete permissions - $this->assertEquals(\OCP\PERMISSION_ALL & ~\OCP\PERMISSION_DELETE, $userShare['permissions']); + $this->assertEquals(\OCP\Constants::PERMISSION_ALL & ~\OCP\Constants::PERMISSION_DELETE, $userShare['permissions']); // update permissions @@ -1228,7 +1228,7 @@ class Test_Files_Sharing_Api extends TestCase { $info = OC\Files\Filesystem::getFileInfo($this->filename); $this->assertTrue($info instanceof \OC\Files\FileInfo); - $result = \OCP\Share::shareItem('file', $info->getId(), \OCP\Share::SHARE_TYPE_LINK, null, \OCP\PERMISSION_READ); + $result = \OCP\Share::shareItem('file', $info->getId(), \OCP\Share::SHARE_TYPE_LINK, null, \OCP\Constants::PERMISSION_READ); $this->assertTrue(is_string($result)); $result = \OCP\Share::shareItem('file', $info->getId(), \OCP\Share::SHARE_TYPE_USER, \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2, 31); diff --git a/apps/files_sharing/tests/backend.php b/apps/files_sharing/tests/backend.php index e113c940678..5cf2a22c792 100644 --- a/apps/files_sharing/tests/backend.php +++ b/apps/files_sharing/tests/backend.php @@ -34,7 +34,7 @@ class Test_Files_Sharing_Backend extends TestCase { public $subfolder; public $subsubfolder; - function setUp() { + protected function setUp() { parent::setUp(); $this->folder = self::TEST_FOLDER_NAME; @@ -53,7 +53,7 @@ class Test_Files_Sharing_Backend extends TestCase { $this->view->file_put_contents($this->folder . $this->subfolder . $this->subsubfolder . $this->filename, $this->data); } - function tearDown() { + protected function tearDown() { $this->view->unlink($this->filename); $this->view->deleteAll($this->folder); diff --git a/apps/files_sharing/tests/cache.php b/apps/files_sharing/tests/cache.php index 2c9790ce66d..aec1983bad3 100644 --- a/apps/files_sharing/tests/cache.php +++ b/apps/files_sharing/tests/cache.php @@ -30,7 +30,19 @@ class Test_Files_Sharing_Cache extends TestCase { */ public $user2View; - function setUp() { + /** @var \OC\Files\Cache\Cache */ + protected $ownerCache; + + /** @var \OC\Files\Cache\Cache */ + protected $sharedCache; + + /** @var \OC\Files\Storage\Storage */ + protected $ownerStorage; + + /** @var \OC\Files\Storage\Storage */ + protected $sharedStorage; + + protected function setUp() { parent::setUp(); \OC_User::setDisplayName(self::TEST_FILES_SHARING_API_USER1, 'User One'); @@ -54,7 +66,7 @@ class Test_Files_Sharing_Cache extends TestCase { $this->view->file_put_contents('container/shareddir/subdir/another too.txt', $textData); $this->view->file_put_contents('container/shareddir/subdir/not a text file.xml', '<xml></xml>'); - list($this->ownerStorage, $internalPath) = $this->view->resolvePath(''); + list($this->ownerStorage,) = $this->view->resolvePath(''); $this->ownerCache = $this->ownerStorage->getCache(); $this->ownerStorage->getScanner()->scan(''); @@ -72,11 +84,11 @@ class Test_Files_Sharing_Cache extends TestCase { // retrieve the shared storage $secondView = new \OC\Files\View('/' . self::TEST_FILES_SHARING_API_USER2); - list($this->sharedStorage, $internalPath) = $secondView->resolvePath('files/shareddir'); + list($this->sharedStorage,) = $secondView->resolvePath('files/shareddir'); $this->sharedCache = $this->sharedStorage->getCache(); } - function tearDown() { + protected function tearDown() { $this->sharedCache->clear(); self::loginHelper(self::TEST_FILES_SHARING_API_USER1); @@ -336,7 +348,7 @@ class Test_Files_Sharing_Cache extends TestCase { self::loginHelper(self::TEST_FILES_SHARING_API_USER1); \OC\Files\Filesystem::file_put_contents('test.txt', 'foo'); $info = \OC\Files\Filesystem::getFileInfo('test.txt'); - \OCP\Share::shareItem('file', $info->getId(), \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER2, \OCP\PERMISSION_ALL); + \OCP\Share::shareItem('file', $info->getId(), \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER2, \OCP\Constants::PERMISSION_ALL); \OC_Util::tearDownFS(); self::loginHelper(self::TEST_FILES_SHARING_API_USER2); @@ -354,10 +366,10 @@ class Test_Files_Sharing_Cache extends TestCase { self::loginHelper(self::TEST_FILES_SHARING_API_USER1); \OC\Files\Filesystem::mkdir('foo'); \OC\Files\Filesystem::mkdir('foo/bar'); - \OC\Files\Filesystem::touch('foo/bar/test.txt', 'bar'); + \OC\Files\Filesystem::touch('foo/bar/test.txt'); $folderInfo = \OC\Files\Filesystem::getFileInfo('foo'); $fileInfo = \OC\Files\Filesystem::getFileInfo('foo/bar/test.txt'); - \OCP\Share::shareItem('folder', $folderInfo->getId(), \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER2, \OCP\PERMISSION_ALL); + \OCP\Share::shareItem('folder', $folderInfo->getId(), \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER2, \OCP\Constants::PERMISSION_ALL); \OC_Util::tearDownFS(); self::loginHelper(self::TEST_FILES_SHARING_API_USER2); diff --git a/apps/files_sharing/tests/controller/sharecontroller.php b/apps/files_sharing/tests/controller/sharecontroller.php new file mode 100644 index 00000000000..f13e5b2e497 --- /dev/null +++ b/apps/files_sharing/tests/controller/sharecontroller.php @@ -0,0 +1,171 @@ +<?php +/** + * @author Lukas Reschke <lukas@owncloud.com> + * @copyright 2014 Lukas Reschke + * + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OCA\Files_Sharing\Controllers; + +use OC\Files\Filesystem; +use OCA\Files_Sharing\Application; +use OCP\AppFramework\IAppContainer; +use OCP\Files; +use OCP\AppFramework\Http\RedirectResponse; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\Security\ISecureRandom; +use OC\Files\View; +use OCP\Share; +use OC\URLGenerator; + +/** + * @package OCA\Files_Sharing\Controllers + */ +class ShareControllerTest extends \PHPUnit_Framework_TestCase { + + /** @var IAppContainer */ + private $container; + /** @var string */ + private $user; + /** @var string */ + private $token; + /** @var string */ + private $oldUser; + /** @var ShareController */ + private $shareController; + /** @var URLGenerator */ + private $urlGenerator; + + protected function setUp() { + $app = new Application(); + $this->container = $app->getContainer(); + $this->container['Config'] = $this->getMockBuilder('\OCP\IConfig') + ->disableOriginalConstructor()->getMock(); + $this->container['AppName'] = 'files_sharing'; + $this->container['UserSession'] = $this->getMockBuilder('\OC\User\Session') + ->disableOriginalConstructor()->getMock(); + $this->container['URLGenerator'] = $this->getMockBuilder('\OC\URLGenerator') + ->disableOriginalConstructor()->getMock(); + $this->urlGenerator = $this->container['URLGenerator']; + $this->shareController = $this->container['ShareController']; + + // Store current user + $this->oldUser = \OC_User::getUser(); + + // Create a dummy user + $this->user = \OC::$server->getSecureRandom()->getLowStrengthGenerator()->generate(12, ISecureRandom::CHAR_LOWER); + + \OC_User::createUser($this->user, $this->user); + \OC_Util::tearDownFS(); + \OC_User::setUserId(''); + Filesystem::tearDown(); + \OC_User::setUserId($this->user); + \OC_Util::setupFS($this->user); + + // Create a dummy shared file + $view = new View('/'. $this->user . '/files'); + $view->file_put_contents('file1.txt', 'I am such an awesome shared file!'); + $this->token = \OCP\Share::shareItem( + Filesystem::getFileInfo('file1.txt')->getType(), + Filesystem::getFileInfo('file1.txt')->getId(), + \OCP\Share::SHARE_TYPE_LINK, + 'IAmPasswordProtected!', + 1 + ); + } + + protected function tearDown() { + \OC_Util::tearDownFS(); + \OC_User::setUserId(''); + Filesystem::tearDown(); + \OC_User::deleteUser($this->user); + \OC_User::setIncognitoMode(false); + + \OC::$server->getSession()->set('public_link_authenticated', ''); + + // Set old user + \OC_User::setUserId($this->oldUser); + \OC_Util::setupFS($this->oldUser); + } + + public function testShowAuthenticate() { + $linkItem = \OCP\Share::getShareByToken($this->token, false); + + // Test without being authenticated + $response = $this->shareController->showAuthenticate($this->token); + $expectedResponse = new TemplateResponse($this->container['AppName'], 'authenticate', array(), 'guest'); + $this->assertEquals($expectedResponse, $response); + + // Test with being authenticated for another file + \OC::$server->getSession()->set('public_link_authenticated', $linkItem['id']-1); + $response = $this->shareController->showAuthenticate($this->token); + $expectedResponse = new TemplateResponse($this->container['AppName'], 'authenticate', array(), 'guest'); + $this->assertEquals($expectedResponse, $response); + + // Test with being authenticated for the correct file + \OC::$server->getSession()->set('public_link_authenticated', $linkItem['id']); + $response = $this->shareController->showAuthenticate($this->token); + $expectedResponse = new RedirectResponse($this->urlGenerator->linkToRoute('files_sharing.sharecontroller.showShare', array('token' => $this->token))); + $this->assertEquals($expectedResponse, $response); + } + + public function testAuthenticate() { + // Test without a not existing token + $response = $this->shareController->authenticate('ThisTokenShouldHopefullyNeverExistSoThatTheUnitTestWillAlwaysPass :)'); + $expectedResponse = new TemplateResponse('core', '404', array(), 'guest'); + $this->assertEquals($expectedResponse, $response); + + // Test with a valid password + $response = $this->shareController->authenticate($this->token, 'IAmPasswordProtected!'); + $expectedResponse = new RedirectResponse($this->urlGenerator->linkToRoute('files_sharing.sharecontroller.showShare', array('token' => $this->token))); + $this->assertEquals($expectedResponse, $response); + + // Test with a invalid password + $response = $this->shareController->authenticate($this->token, 'WrongPw!'); + $expectedResponse = new TemplateResponse($this->container['AppName'], 'authenticate', array('wrongpw' => true), 'guest'); + $this->assertEquals($expectedResponse, $response); + } + + public function testShowShare() { + // Test without a not existing token + $response = $this->shareController->showShare('ThisTokenShouldHopefullyNeverExistSoThatTheUnitTestWillAlwaysPass :)'); + $expectedResponse = new TemplateResponse('core', '404', array(), 'guest'); + $this->assertEquals($expectedResponse, $response); + + // Test with a password protected share and no authentication + $response = $this->shareController->showShare($this->token); + $expectedResponse = new RedirectResponse($this->urlGenerator->linkToRoute('files_sharing.sharecontroller.authenticate', array('token' => $this->token))); + $this->assertEquals($expectedResponse, $response); + + // Test with password protected share and authentication + $linkItem = Share::getShareByToken($this->token, false); + \OC::$server->getSession()->set('public_link_authenticated', $linkItem['id']); + $response = $this->shareController->showShare($this->token); + $sharedTmplParams = array( + 'displayName' => $this->user, + 'filename' => 'file1.txt', + 'directory_path' => '/file1.txt', + 'mimetype' => 'text/plain', + 'dirToken' => $this->token, + 'sharingToken' => $this->token, + 'server2serversharing' => true, + 'protected' => 'true', + 'dir' => '', + 'downloadURL' => null, + 'fileSize' => '33 B' + ); + $expectedResponse = new TemplateResponse($this->container['AppName'], 'public', $sharedTmplParams, 'base'); + $this->assertEquals($expectedResponse, $response); + } + + public function testDownloadShare() { + // Test with a password protected share and no authentication + $response = $this->shareController->downloadShare($this->token); + $expectedResponse = new RedirectResponse($this->urlGenerator->linkToRoute('files_sharing.sharecontroller.authenticate', + array('token' => $this->token))); + $this->assertEquals($expectedResponse, $response); + } +} diff --git a/apps/files_sharing/tests/externalstorage.php b/apps/files_sharing/tests/externalstorage.php index 0c741bb8199..cf82fcfc555 100644 --- a/apps/files_sharing/tests/externalstorage.php +++ b/apps/files_sharing/tests/externalstorage.php @@ -23,7 +23,7 @@ /** * Tests for the external Storage class for remote shares. */ -class Test_Files_Sharing_External_Storage extends \PHPUnit_Framework_TestCase { +class Test_Files_Sharing_External_Storage extends \Test\TestCase { function optionsProvider() { return array( diff --git a/apps/files_sharing/tests/js/sharedfilelistSpec.js b/apps/files_sharing/tests/js/sharedfilelistSpec.js index 41c8a1f05d8..dc6931af6e8 100644 --- a/apps/files_sharing/tests/js/sharedfilelistSpec.js +++ b/apps/files_sharing/tests/js/sharedfilelistSpec.js @@ -91,7 +91,7 @@ describe('OCA.Sharing.FileList tests', function() { file_source: 49, file_target: '/local path/local name.txt', path: 'files/something shared.txt', - permissions: 31, + permissions: OC.PERMISSION_ALL, stime: 11111, share_type: OC.Share.SHARE_TYPE_USER, share_with: 'user1', @@ -127,7 +127,8 @@ describe('OCA.Sharing.FileList tests', function() { expect($tr.attr('data-file')).toEqual('local name.txt'); expect($tr.attr('data-path')).toEqual('/local path'); expect($tr.attr('data-size')).not.toBeDefined(); - expect($tr.attr('data-permissions')).toEqual('31'); // read and delete + expect(parseInt($tr.attr('data-permissions'), 10)) + .toEqual(OC.PERMISSION_ALL); // read and delete expect($tr.attr('data-mime')).toEqual('text/plain'); expect($tr.attr('data-mtime')).toEqual('11111000'); expect($tr.attr('data-share-owner')).toEqual('User Two'); @@ -169,7 +170,8 @@ describe('OCA.Sharing.FileList tests', function() { expect($tr.attr('data-file')).toEqual('local name'); expect($tr.attr('data-path')).toEqual('/local path'); expect($tr.attr('data-size')).not.toBeDefined(); - expect($tr.attr('data-permissions')).toEqual('31'); // read and delete + expect(parseInt($tr.attr('data-permissions'), 10)) + .toEqual(OC.PERMISSION_ALL); // read and delete expect($tr.attr('data-mime')).toEqual('httpd/unix-directory'); expect($tr.attr('data-mtime')).toEqual('11111000'); expect($tr.attr('data-share-owner')).toEqual('User Two'); @@ -244,7 +246,8 @@ describe('OCA.Sharing.FileList tests', function() { expect($tr.attr('data-file')).toEqual('local name.txt'); expect($tr.attr('data-path')).toEqual('/local path'); expect($tr.attr('data-size')).not.toBeDefined(); - expect($tr.attr('data-permissions')).toEqual('31'); // read and delete + expect(parseInt($tr.attr('data-permissions'), 10)) + .toEqual(OC.PERMISSION_ALL - OC.PERMISSION_DELETE); // read expect($tr.attr('data-mime')).toEqual('text/plain'); expect($tr.attr('data-mtime')).toEqual('11111000'); expect($tr.attr('data-share-owner')).not.toBeDefined(); @@ -285,7 +288,8 @@ describe('OCA.Sharing.FileList tests', function() { expect($tr.attr('data-file')).toEqual('local name'); expect($tr.attr('data-path')).toEqual('/local path'); expect($tr.attr('data-size')).not.toBeDefined(); - expect($tr.attr('data-permissions')).toEqual('31'); // read and delete + expect(parseInt($tr.attr('data-permissions'), 10)) + .toEqual(OC.PERMISSION_ALL - OC.PERMISSION_DELETE); // read expect($tr.attr('data-mime')).toEqual('httpd/unix-directory'); expect($tr.attr('data-mtime')).toEqual('11111000'); expect($tr.attr('data-share-owner')).not.toBeDefined(); @@ -336,7 +340,8 @@ describe('OCA.Sharing.FileList tests', function() { expect($tr.attr('data-file')).toEqual('local name.txt'); expect($tr.attr('data-path')).toEqual('/local path'); expect($tr.attr('data-size')).not.toBeDefined(); - expect($tr.attr('data-permissions')).toEqual('31'); // read and delete + expect(parseInt($tr.attr('data-permissions'), 10)) + .toEqual(OC.PERMISSION_ALL - OC.PERMISSION_DELETE); // read expect($tr.attr('data-mime')).toEqual('text/plain'); expect($tr.attr('data-mtime')).toEqual('11111000'); expect($tr.attr('data-share-owner')).not.toBeDefined(); @@ -404,7 +409,8 @@ describe('OCA.Sharing.FileList tests', function() { expect($tr.attr('data-file')).toEqual('local name.txt'); expect($tr.attr('data-path')).toEqual('/local path'); expect($tr.attr('data-size')).not.toBeDefined(); - expect($tr.attr('data-permissions')).toEqual('31'); // read and delete + expect(parseInt($tr.attr('data-permissions'), 10)) + .toEqual(OC.PERMISSION_ALL - OC.PERMISSION_DELETE); // read expect($tr.attr('data-mime')).toEqual('text/plain'); // always use the most recent stime expect($tr.attr('data-mtime')).toEqual('22222000'); @@ -430,6 +436,7 @@ describe('OCA.Sharing.FileList tests', function() { fileList.reload(); + /* jshint camelcase: false */ ocsResponse = { ocs: { meta: { @@ -496,7 +503,8 @@ describe('OCA.Sharing.FileList tests', function() { expect($tr.attr('data-file')).toEqual('local name.txt'); expect($tr.attr('data-path')).toEqual('/local path'); expect($tr.attr('data-size')).not.toBeDefined(); - expect($tr.attr('data-permissions')).toEqual('31'); // read and delete + expect(parseInt($tr.attr('data-permissions'), 10)) + .toEqual(OC.PERMISSION_ALL - OC.PERMISSION_DELETE); // read expect($tr.attr('data-mime')).toEqual('text/plain'); expect($tr.attr('data-mtime')).toEqual('11111000'); expect($tr.attr('data-share-recipients')).not.toBeDefined(); @@ -537,7 +545,8 @@ describe('OCA.Sharing.FileList tests', function() { expect($tr.attr('data-file')).toEqual('local name.txt'); expect($tr.attr('data-path')).toEqual('/local path'); expect($tr.attr('data-size')).not.toBeDefined(); - expect($tr.attr('data-permissions')).toEqual('31'); // read and delete + expect(parseInt($tr.attr('data-permissions'), 10)) + .toEqual(OC.PERMISSION_ALL - OC.PERMISSION_DELETE); // read expect($tr.attr('data-mime')).toEqual('text/plain'); expect($tr.attr('data-mtime')).toEqual('11111000'); expect($tr.attr('data-share-recipients')).not.toBeDefined(); @@ -551,4 +560,90 @@ describe('OCA.Sharing.FileList tests', function() { expect($tr.find('.nametext').text().trim()).toEqual('local name.txt'); }); }); + describe('setting share permissions for files', function () { + beforeEach(function () { + + var $content = $('<div id="content"></div>'); + $('#testArea').append($content); + // dummy file list + var $div = $( + '<div>' + + '<table id="filestable">' + + '<thead></thead>' + + '<tbody id="fileList"></tbody>' + + '</table>' + + '</div>'); + $('#content').append($div); + + fileList = new OCA.Files.FileList( + $div, { + fileActions: fileActions + } + ); + }); + + it('external storage root folder', function () { + var $tr; + OC.Share.statuses = {1: {link: false, path: '/subdir'}}; + fileList.setFiles([{ + id: 1, + type: 'dir', + name: 'One.txt', + path: '/subdir', + mimetype: 'text/plain', + size: 12, + permissions: OC.PERMISSION_READ, + etag: 'abc', + shareOwner: 'User One', + recipients: 'User Two', + mountType: 'external-root' + }]); + $tr = fileList.$el.find('tr:first'); + + expect(parseInt($tr.attr('data-share-permissions'), 10)).toEqual(OC.PERMISSION_ALL - OC.PERMISSION_SHARE); + }); + + it('external storage root folder reshare', function () { + var $tr; + OC.Share.statuses = {1: {link: false, path: '/subdir'}}; + fileList.setFiles([{ + id: 1, + type: 'dir', + name: 'One.txt', + path: '/subdir', + mimetype: 'text/plain', + size: 12, + permissions: OC.PERMISSION_READ + OC.PERMISSION_SHARE, + etag: 'abc', + shareOwner: 'User One', + recipients: 'User Two', + mountType: 'external-root' + }]); + $tr = fileList.$el.find('tr:first'); + + expect(parseInt($tr.attr('data-share-permissions'), 10)).toEqual(OC.PERMISSION_ALL); + }); + + it('external storage root folder file', function () { + var $tr; + OC.Share.statuses = {1: {link: false, path: '/subdir'}}; + fileList.setFiles([{ + id: 1, + type: 'file', + name: 'One.txt', + path: '/subdir', + mimetype: 'text/plain', + size: 12, + permissions: OC.PERMISSION_READ, + etag: 'abc', + shareOwner: 'User One', + recipients: 'User Two', + mountType: 'external-root' + }]); + $tr = fileList.$el.find('tr:first'); + + expect(parseInt($tr.attr('data-share-permissions'), 10)) + .toEqual(OC.PERMISSION_ALL - OC.PERMISSION_SHARE - OC.PERMISSION_DELETE); + }); + }); }); diff --git a/apps/files_sharing/tests/middleware/sharingcheckmiddleware.php b/apps/files_sharing/tests/middleware/sharingcheckmiddleware.php new file mode 100644 index 00000000000..90c9a7bba10 --- /dev/null +++ b/apps/files_sharing/tests/middleware/sharingcheckmiddleware.php @@ -0,0 +1,76 @@ +<?php +/** + * @author Lukas Reschke <lukas@owncloud.com> + * @copyright 2014 Lukas Reschke + * + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OCA\Files_Sharing\Middleware; + + +/** + * @package OCA\Files_Sharing\Middleware\SharingCheckMiddleware + */ +class SharingCheckMiddlewareTest extends \PHPUnit_Framework_TestCase { + + /** @var \OCP\IAppConfig */ + private $appConfig; + /** @var \OCP\AppFramework\IApi */ + private $api; + /** @var SharingCheckMiddleware */ + private $sharingCheckMiddleware; + + protected function setUp() { + $this->appConfig = $this->getMockBuilder('\OCP\IAppConfig') + ->disableOriginalConstructor()->getMock(); + $this->api = $this->getMockBuilder('\OCP\AppFramework\IApi') + ->disableOriginalConstructor()->getMock(); + + $this->sharingCheckMiddleware = new SharingCheckMiddleware('files_sharing', $this->appConfig, $this->api); + } + + public function testIsSharingEnabledWithEverythingEnabled() { + $this->api + ->expects($this->once()) + ->method('isAppEnabled') + ->with('files_sharing') + ->will($this->returnValue(true)); + + $this->appConfig + ->expects($this->once()) + ->method('getValue') + ->with('core', 'shareapi_allow_links', 'yes') + ->will($this->returnValue('yes')); + + $this->assertTrue(\Test_Helper::invokePrivate($this->sharingCheckMiddleware, 'isSharingEnabled')); + } + + public function testIsSharingEnabledWithAppDisabled() { + $this->api + ->expects($this->once()) + ->method('isAppEnabled') + ->with('files_sharing') + ->will($this->returnValue(false)); + + $this->assertFalse(\Test_Helper::invokePrivate($this->sharingCheckMiddleware, 'isSharingEnabled')); + } + + public function testIsSharingEnabledWithSharingDisabled() { + $this->api + ->expects($this->once()) + ->method('isAppEnabled') + ->with('files_sharing') + ->will($this->returnValue(true)); + + $this->appConfig + ->expects($this->once()) + ->method('getValue') + ->with('core', 'shareapi_allow_links', 'yes') + ->will($this->returnValue('no')); + + $this->assertFalse(\Test_Helper::invokePrivate($this->sharingCheckMiddleware, 'isSharingEnabled')); + } +} diff --git a/apps/files_sharing/tests/permissions.php b/apps/files_sharing/tests/permissions.php index 639ebfb5936..f72d724c6fe 100644 --- a/apps/files_sharing/tests/permissions.php +++ b/apps/files_sharing/tests/permissions.php @@ -61,7 +61,7 @@ class Test_Files_Sharing_Permissions extends OCA\Files_sharing\Tests\TestCase { */ private $ownerCache; - function setUp() { + protected function setUp() { parent::setUp(); self::loginHelper(self::TEST_FILES_SHARING_API_USER1); @@ -99,7 +99,7 @@ class Test_Files_Sharing_Permissions extends OCA\Files_sharing\Tests\TestCase { $this->sharedCacheRestrictedShare = $this->sharedStorageRestrictedShare->getCache(); } - function tearDown() { + protected function tearDown() { $this->sharedCache->clear(); self::loginHelper(self::TEST_FILES_SHARING_API_USER1); diff --git a/apps/files_sharing/tests/proxy.php b/apps/files_sharing/tests/proxy.php index 68cd81f963a..31acf9b27de 100644 --- a/apps/files_sharing/tests/proxy.php +++ b/apps/files_sharing/tests/proxy.php @@ -32,7 +32,7 @@ class Test_Files_Sharing_Proxy extends OCA\Files_sharing\Tests\TestCase { private static $tempStorage; - function setUp() { + protected function setUp() { parent::setUp(); // load proxies @@ -53,7 +53,7 @@ class Test_Files_Sharing_Proxy extends OCA\Files_sharing\Tests\TestCase { $this->view->file_put_contents($this->folder . $this->subfolder . $this->filename, $this->data); } - function tearDown() { + protected function tearDown() { $this->view->deleteAll($this->folder); self::$tempStorage = null; diff --git a/apps/files_sharing/tests/share.php b/apps/files_sharing/tests/share.php index 2b5978f8e57..f76f92734d0 100644 --- a/apps/files_sharing/tests/share.php +++ b/apps/files_sharing/tests/share.php @@ -31,7 +31,7 @@ class Test_Files_Sharing extends OCA\Files_sharing\Tests\TestCase { private static $tempStorage; - function setUp() { + protected function setUp() { parent::setUp(); $this->folder = self::TEST_FOLDER_NAME; @@ -49,7 +49,7 @@ class Test_Files_Sharing extends OCA\Files_sharing\Tests\TestCase { $this->view->file_put_contents($this->folder . $this->subfolder . $this->filename, $this->data); } - function tearDown() { + protected function tearDown() { $this->view->unlink($this->filename); $this->view->deleteAll($this->folder); @@ -105,12 +105,12 @@ class Test_Files_Sharing extends OCA\Files_sharing\Tests\TestCase { $fileinfo = $this->view->getFileInfo($this->filename); $result = \OCP\Share::shareItem('file', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, - \Test_Files_Sharing::TEST_FILES_SHARING_API_GROUP1, \OCP\PERMISSION_READ); + \Test_Files_Sharing::TEST_FILES_SHARING_API_GROUP1, \OCP\Constants::PERMISSION_READ); $this->assertTrue($result); $result = \OCP\Share::shareItem('file', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_USER, - \Test_Files_Sharing::TEST_FILES_SHARING_API_USER2, \OCP\PERMISSION_UPDATE); + \Test_Files_Sharing::TEST_FILES_SHARING_API_USER2, \OCP\Constants::PERMISSION_UPDATE); $this->assertTrue($result); @@ -124,7 +124,7 @@ class Test_Files_Sharing extends OCA\Files_sharing\Tests\TestCase { $this->assertSame(1, count($result)); $share = reset($result); - $this->assertSame(\OCP\PERMISSION_READ | \OCP\PERMISSION_UPDATE, $share['permissions']); + $this->assertSame(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE, $share['permissions']); \OC\Files\Filesystem::rename($this->filename, $this->filename . '-renamed'); @@ -136,7 +136,7 @@ class Test_Files_Sharing extends OCA\Files_sharing\Tests\TestCase { $this->assertSame(1, count($result)); $share = reset($result); - $this->assertSame(\OCP\PERMISSION_READ | \OCP\PERMISSION_UPDATE, $share['permissions']); + $this->assertSame(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE, $share['permissions']); $this->assertSame($this->filename . '-renamed', $share['file_target']); self::loginHelper(self::TEST_FILES_SHARING_API_USER1); @@ -157,7 +157,7 @@ class Test_Files_Sharing extends OCA\Files_sharing\Tests\TestCase { $share = reset($result); // only the group share permissions should be available now - $this->assertSame(\OCP\PERMISSION_READ, $share['permissions']); + $this->assertSame(\OCP\Constants::PERMISSION_READ, $share['permissions']); $this->assertSame($this->filename . '-renamed', $share['file_target']); } @@ -172,8 +172,8 @@ class Test_Files_Sharing extends OCA\Files_sharing\Tests\TestCase { $fileinfo = $this->view->getFileInfo($this->filename); // share the file to group1 (user2 is a member of this group) and explicitely to user2 - \OCP\Share::shareItem('file', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, self::TEST_FILES_SHARING_API_GROUP1, \OCP\PERMISSION_ALL); - \OCP\Share::shareItem('file', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER2, \OCP\PERMISSION_ALL); + \OCP\Share::shareItem('file', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_GROUP, self::TEST_FILES_SHARING_API_GROUP1, \OCP\Constants::PERMISSION_ALL); + \OCP\Share::shareItem('file', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER2, \OCP\Constants::PERMISSION_ALL); // user1 should have to shared files $shares = \OCP\Share::getItemsShared('file'); @@ -203,7 +203,7 @@ class Test_Files_Sharing extends OCA\Files_sharing\Tests\TestCase { $this->assertSame(1, count($shares)); // user1 shares a gain the file directly to user2 - \OCP\Share::shareItem('file', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER2, \OCP\PERMISSION_ALL); + \OCP\Share::shareItem('file', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER2, \OCP\Constants::PERMISSION_ALL); // user2 should see again welcome.txt and the shared file \Test_Files_Sharing::loginHelper(self::TEST_FILES_SHARING_API_USER2); @@ -271,14 +271,14 @@ class Test_Files_Sharing extends OCA\Files_sharing\Tests\TestCase { } function DataProviderTestFileSharePermissions() { - $permission1 = \OCP\PERMISSION_ALL; - $permission3 = \OCP\PERMISSION_READ; - $permission4 = \OCP\PERMISSION_READ | \OCP\PERMISSION_UPDATE; - $permission5 = \OCP\PERMISSION_READ | \OCP\PERMISSION_DELETE; - $permission6 = \OCP\PERMISSION_READ | \OCP\PERMISSION_UPDATE | \OCP\PERMISSION_DELETE; + $permission1 = \OCP\Constants::PERMISSION_ALL; + $permission3 = \OCP\Constants::PERMISSION_READ; + $permission4 = \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE; + $permission5 = \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_DELETE; + $permission6 = \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE; return array( - array($permission1, \OCP\PERMISSION_ALL & ~\OCP\PERMISSION_DELETE), + array($permission1, \OCP\Constants::PERMISSION_ALL & ~\OCP\Constants::PERMISSION_DELETE), array($permission3, $permission3), array($permission4, $permission4), array($permission5, $permission3), diff --git a/apps/files_sharing/tests/sharedmount.php b/apps/files_sharing/tests/sharedmount.php index 6d155f174ba..dd66ca05d38 100644 --- a/apps/files_sharing/tests/sharedmount.php +++ b/apps/files_sharing/tests/sharedmount.php @@ -25,7 +25,7 @@ */ class Test_Files_Sharing_Mount extends OCA\Files_sharing\Tests\TestCase { - function setUp() { + protected function setUp() { parent::setUp(); $this->folder = '/folder_share_storage_test'; @@ -40,7 +40,7 @@ class Test_Files_Sharing_Mount extends OCA\Files_sharing\Tests\TestCase { $this->view->file_put_contents($this->folder . $this->filename, "file in subfolder"); } - function tearDown() { + protected function tearDown() { $this->view->unlink($this->folder); $this->view->unlink($this->filename); diff --git a/apps/files_sharing/tests/sharedstorage.php b/apps/files_sharing/tests/sharedstorage.php index ab15e8fe3ba..75373244508 100644 --- a/apps/files_sharing/tests/sharedstorage.php +++ b/apps/files_sharing/tests/sharedstorage.php @@ -27,7 +27,7 @@ use OCA\Files\Share; */ class Test_Files_Sharing_Storage extends OCA\Files_sharing\Tests\TestCase { - function setUp() { + protected function setUp() { parent::setUp(); $this->folder = '/folder_share_storage_test'; @@ -42,7 +42,7 @@ class Test_Files_Sharing_Storage extends OCA\Files_sharing\Tests\TestCase { $this->view->file_put_contents($this->folder . $this->filename, "file in subfolder"); } - function tearDown() { + protected function tearDown() { $this->view->unlink($this->folder); $this->view->unlink($this->filename); diff --git a/apps/files_sharing/tests/testcase.php b/apps/files_sharing/tests/testcase.php index 78277dc907f..65fbfac7d1d 100644 --- a/apps/files_sharing/tests/testcase.php +++ b/apps/files_sharing/tests/testcase.php @@ -22,6 +22,7 @@ namespace OCA\Files_Sharing\Tests; +use OC\Files\Filesystem; use OCA\Files\Share; /** @@ -29,7 +30,7 @@ use OCA\Files\Share; * * Base class for sharing tests. */ -abstract class TestCase extends \PHPUnit_Framework_TestCase { +abstract class TestCase extends \Test\TestCase { const TEST_FILES_SHARING_API_USER1 = "test-share-user1"; const TEST_FILES_SHARING_API_USER2 = "test-share-user2"; @@ -48,6 +49,7 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase { public $subfolder; public static function setUpBeforeClass() { + parent::setUpBeforeClass(); // remember files_encryption state self::$stateFilesEncryption = \OC_App::isEnabled('files_encryption'); @@ -83,7 +85,8 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase { } - function setUp() { + protected function setUp() { + parent::setUp(); $this->assertFalse(\OC_App::isEnabled('files_encryption')); @@ -94,13 +97,14 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase { $this->view = new \OC\Files\View('/' . self::TEST_FILES_SHARING_API_USER1 . '/files'); } - function tearDown() { + protected function tearDown() { $query = \OCP\DB::prepare('DELETE FROM `*PREFIX*share`'); $query->execute(); + + parent::tearDown(); } public static function tearDownAfterClass() { - // cleanup users \OC_User::deleteUser(self::TEST_FILES_SHARING_API_USER1); \OC_User::deleteUser(self::TEST_FILES_SHARING_API_USER2); @@ -115,6 +119,12 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase { } else { \OC_App::disable('files_encryption'); } + + \OC_Util::tearDownFS(); + \OC_User::setUserId(''); + Filesystem::tearDown(); + + parent::tearDownAfterClass(); } /** diff --git a/apps/files_sharing/tests/update.php b/apps/files_sharing/tests/update.php deleted file mode 100644 index 583f607d9cb..00000000000 --- a/apps/files_sharing/tests/update.php +++ /dev/null @@ -1,252 +0,0 @@ -<?php -/** - * ownCloud - * - * @author Morris Jobke, Bjoern Schiessle - * @copyright 2014 Morris Jobke <morris.jobke@gmail.com> - * 2014 Bjoern Schiessle <schiessle@ownlcoud.com> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU Affero General Public - * License along with this library. If not, see <http://www.gnu.org/licenses/>. - * - */ - -require_once __DIR__ . '/../appinfo/update.php'; - -/** - * Class Test_Files_Sharing_Update - */ -class Test_Files_Sharing_Update_Routine extends OCA\Files_Sharing\Tests\TestCase { - - const TEST_FOLDER_NAME = '/folder_share_api_test'; - - function setUp() { - parent::setUp(); - - $this->folder = self::TEST_FOLDER_NAME; - - $this->filename = '/share-api-test.txt'; - - // save file with content - $this->view->file_put_contents($this->filename, $this->data); - $this->view->mkdir($this->folder); - $this->view->file_put_contents($this->folder . '/' . $this->filename, $this->data); - } - - function tearDown() { - $this->view->unlink($this->filename); - $this->view->deleteAll($this->folder); - - $removeShares = \OC_DB::prepare('DELETE FROM `*PREFIX*share`'); - $removeShares->execute(); - $removeItems = \OC_DB::prepare('DELETE FROM `*PREFIX*filecache`'); - $removeItems->execute(); - - parent::tearDown(); - } - - /** - * test update of file permission. The update should remove from all shared - * files the delete permission - */ - function testUpdateFilePermissions() { - - self::prepareDBUpdateFilePermissions(); - // run the update routine to update the share permission - updateFilePermissions(2); - - // verify results - $query = \OC_DB::prepare('SELECT * FROM `*PREFIX*share`'); - $result = $query->execute(array()); - - while ($row = $result->fetchRow()) { - if ($row['item_type'] === 'file') { - // for all files the delete permission should be removed - $this->assertSame(0, (int)$row['permissions'] & \OCP\PERMISSION_DELETE); - } else { - // for all other the permission shouldn't change - $this->assertSame(31, (int)$row['permissions'] & \OCP\PERMISSION_ALL); - } - } - - // cleanup - $this->cleanupSharedTable(); - } - - /** - * @medium - */ - function testRemoveBrokenFileShares() { - - $this->prepareFileCache(); - - // check if there are just 4 shares (see setUp - precondition: empty table) - $countAllShares = \OC_DB::prepare('SELECT COUNT(`id`) FROM `*PREFIX*share`'); - $result = $countAllShares->execute()->fetchOne(); - $this->assertEquals(4, $result); - - // check if there are just 3 file shares (see setUp - precondition: empty table) - $countFileShares = \OC_DB::prepare('SELECT COUNT(`id`) FROM `*PREFIX*share` WHERE `item_type` IN (\'file\', \'folder\')'); - $result = $countFileShares->execute()->fetchOne(); - $this->assertEquals(3, $result); - - // check if there are just 2 items (see setUp - precondition: empty table) - $countItems = \OC_DB::prepare('SELECT COUNT(`fileid`) FROM `*PREFIX*filecache`'); - $result = $countItems->execute()->fetchOne(); - $this->assertEquals(2, $result); - - // execute actual code which should be tested - \OC\Files\Cache\Shared_Updater::fixBrokenSharesOnAppUpdate(); - - // check if there are just 2 shares (one gets killed by the code as there is no filecache entry for this) - $result = $countFileShares->execute()->fetchOne(); - $this->assertEquals(2, $result); - - // check if the share of file '200' is removed as there is no entry for this in filecache table - $countFileShares = \OC_DB::prepare('SELECT COUNT(`id`) FROM `*PREFIX*share` WHERE `file_source` = 200'); - $result = $countFileShares->execute()->fetchOne(); - $this->assertEquals(0, $result); - - // check if there are just 2 items - $countItems = \OC_DB::prepare('SELECT COUNT(`fileid`) FROM `*PREFIX*filecache`'); - $result = $countItems->execute()->fetchOne(); - $this->assertEquals(2, $result); - - // the calendar share survived - $countOtherShares = \OC_DB::prepare('SELECT COUNT(`id`) FROM `*PREFIX*share` WHERE `item_source` = \'999\''); - $result = $countOtherShares->execute()->fetchOne(); - $this->assertEquals(1, $result); - } - - /** - * test update for the removal of the logical "Shared" folder. It should update - * the file_target for every share and create a physical "Shared" folder for each user - */ - function testRemoveSharedFolder() { - self::prepareDB(); - // run the update routine to remove the shared folder and replace it with a real folder - removeSharedFolder(false, 2); - - // verify results - $query = \OC_DB::prepare('SELECT * FROM `*PREFIX*share`'); - $result = $query->execute(array()); - - $newDBContent = $result->fetchAll(); - - foreach ($newDBContent as $row) { - if ((int)$row['share_type'] === \OCP\Share::SHARE_TYPE_USER) { - $this->assertSame('/Shared', substr($row['file_target'], 0, strlen('/Shared'))); - } else { - $this->assertSame('/ShouldNotChange', $row['file_target']); - } - } - - $shareFolder = \OCP\Config::getSystemValue('share_folder', '/'); - - $this->assertSame('/Shared', $shareFolder); - - // cleanup - $this->cleanupSharedTable(); - \OCP\Config::deleteSystemValue('share_folder'); - - } - - private function cleanupSharedTable() { - $query = \OC_DB::prepare('DELETE FROM `*PREFIX*share`'); - $query->execute(); - } - - /** - * prepare sharing table for testRemoveSharedFolder() - */ - private function prepareDB() { - $this->cleanupSharedTable(); - // add items except one - because this is the test case for the broken share table - $addItems = \OC_DB::prepare('INSERT INTO `*PREFIX*share` (`share_type`, `item_type`, ' . - '`share_with`, `uid_owner` , `file_target`) ' . - 'VALUES (?, ?, ?, ?, ?)'); - $items = array( - array(\OCP\Share::SHARE_TYPE_USER, 'file', 'user1', 'admin' , '/foo'), - array(\OCP\Share::SHARE_TYPE_USER, 'folder', 'user2', 'admin', '/foo2'), - array(\OCP\Share::SHARE_TYPE_USER, 'file', 'user3', 'admin', '/foo3'), - array(\OCP\Share::SHARE_TYPE_USER, 'folder', 'user4', 'admin', '/foo4'), - array(\OCP\Share::SHARE_TYPE_USER, 'folder', 'user4', 'admin', "/foo'4"), - array(\OCP\Share::SHARE_TYPE_LINK, 'file', 'user1', 'admin', '/ShouldNotChange'), - array(\OCP\Share::SHARE_TYPE_CONTACT, 'contact', 'admin', 'user1', '/ShouldNotChange'), - - ); - foreach($items as $item) { - // the number is used as path_hash - $addItems->execute($item); - } - } - - /** - * prepare sharing table for testUpdateFilePermissions() - */ - private function prepareDBUpdateFilePermissions() { - $this->cleanupSharedTable(); - // add items except one - because this is the test case for the broken share table - $addItems = \OC_DB::prepare('INSERT INTO `*PREFIX*share` (`share_type`, `item_type`, ' . - '`share_with`, `uid_owner` , `file_target`, `permissions`) ' . - 'VALUES (?, ?, ?, ?, ?, ?)'); - $items = array( - array(\OCP\Share::SHARE_TYPE_LINK, 'file', 'user1', 'admin', '/foo', \OCP\PERMISSION_ALL), - array(\OCP\Share::SHARE_TYPE_CONTACT, 'contact', 'admin', 'user1', '/foo', \OCP\PERMISSION_ALL), - array(\OCP\Share::SHARE_TYPE_USER, 'folder', 'user4', 'admin', '/foo', \OCP\PERMISSION_ALL), - array(\OCP\Share::SHARE_TYPE_USER, 'file', 'user3', 'admin', '/foo3', \OCP\PERMISSION_ALL), - array(\OCP\Share::SHARE_TYPE_USER, 'file', 'user1', 'admin' , '/foo', \OCP\PERMISSION_DELETE), - array(\OCP\Share::SHARE_TYPE_USER, 'file', 'user1', 'admin' , '/foo', \OCP\PERMISSION_READ & \OCP\PERMISSION_DELETE), - array(\OCP\Share::SHARE_TYPE_USER, 'file', 'user1', 'admin' , '/foo', \OCP\PERMISSION_SHARE & \OCP\PERMISSION_UPDATE), - array(\OCP\Share::SHARE_TYPE_USER, 'file', 'user1', 'admin' , '/foo', \OCP\PERMISSION_ALL), - array(\OCP\Share::SHARE_TYPE_USER, 'file', 'user1', 'admin' , '/foo', \OCP\PERMISSION_SHARE & \OCP\PERMISSION_READ & \OCP\PERMISSION_DELETE), - ); - foreach($items as $item) { - // the number is used as path_hash - $addItems->execute($item); - } - } - - /** - * prepare file cache for testRemoveBrokenShares() - */ - private function prepareFileCache() { - // some previous tests didn't clean up and therefore this has to be done here - // FIXME: DIRTY HACK - TODO: find tests, that don't clean up and fix it there - $this->tearDown(); - - // add items except one - because this is the test case for the broken share table - $addItems = \OC_DB::prepare('INSERT INTO `*PREFIX*filecache` (`storage`, `path_hash`, ' . - '`parent`, `mimetype`, `mimepart`, `size`, `mtime`, `storage_mtime`) ' . - 'VALUES (1, ?, 1, 1, 1, 1, 1, 1)'); - $items = array(1, 3); - $fileIds = array(); - foreach($items as $item) { - // the number is used as path_hash - $addItems->execute(array($item)); - $fileIds[] = \OC_DB::insertId('*PREFIX*filecache'); - } - - $addShares = \OC_DB::prepare('INSERT INTO `*PREFIX*share` (`file_source`, `item_type`, `uid_owner`) VALUES (?, \'file\', 1)'); - // the number is used as item_source - $addShares->execute(array($fileIds[0])); - $addShares->execute(array(200)); // id of "deleted" file - $addShares->execute(array($fileIds[1])); - - // add a few unrelated shares, calendar share that must be left untouched - $addShares = \OC_DB::prepare('INSERT INTO `*PREFIX*share` (`item_source`, `item_type`, `uid_owner`) VALUES (?, \'calendar\', 1)'); - // the number is used as item_source - $addShares->execute(array(999)); - } - -} diff --git a/apps/files_sharing/tests/updater.php b/apps/files_sharing/tests/updater.php index 07349c1334d..bc8deaf19b0 100644 --- a/apps/files_sharing/tests/updater.php +++ b/apps/files_sharing/tests/updater.php @@ -20,7 +20,6 @@ * */ -require_once __DIR__ . '/../appinfo/update.php'; /** * Class Test_Files_Sharing_Updater @@ -34,7 +33,7 @@ class Test_Files_Sharing_Updater extends OCA\Files_sharing\Tests\TestCase { \OCA\Files_Sharing\Helper::registerHooks(); } - function setUp() { + protected function setUp() { parent::setUp(); $this->folder = self::TEST_FOLDER_NAME; @@ -47,7 +46,7 @@ class Test_Files_Sharing_Updater extends OCA\Files_sharing\Tests\TestCase { $this->view->file_put_contents($this->folder . '/' . $this->filename, $this->data); } - function tearDown() { + protected function tearDown() { $this->view->unlink($this->filename); $this->view->deleteAll($this->folder); diff --git a/apps/files_sharing/tests/watcher.php b/apps/files_sharing/tests/watcher.php index 67f55394ae8..254b30c6470 100644 --- a/apps/files_sharing/tests/watcher.php +++ b/apps/files_sharing/tests/watcher.php @@ -42,7 +42,7 @@ class Test_Files_Sharing_Watcher extends OCA\Files_sharing\Tests\TestCase { */ private $sharedCache; - function setUp() { + protected function setUp() { parent::setUp(); self::loginHelper(self::TEST_FILES_SHARING_API_USER1); @@ -71,7 +71,7 @@ class Test_Files_Sharing_Watcher extends OCA\Files_sharing\Tests\TestCase { $this->sharedCache = $this->sharedStorage->getCache(); } - function tearDown() { + protected function tearDown() { $this->sharedCache->clear(); self::loginHelper(self::TEST_FILES_SHARING_API_USER1); diff --git a/apps/files_trashbin/appinfo/routes.php b/apps/files_trashbin/appinfo/routes.php index da268f4fdfd..56dbf382735 100644 --- a/apps/files_trashbin/appinfo/routes.php +++ b/apps/files_trashbin/appinfo/routes.php @@ -13,3 +13,7 @@ $this->create('files_trashbin_ajax_list', 'ajax/list.php') ->actionInclude('files_trashbin/ajax/list.php'); $this->create('files_trashbin_ajax_undelete', 'ajax/undelete.php') ->actionInclude('files_trashbin/ajax/undelete.php'); + + +// Register with the capabilities API +\OC_API::register('get', '/cloud/capabilities', array('OCA\Files_Trashbin\Capabilities', 'getCapabilities'), 'files_trashbin', \OC_API::USER_AUTH); diff --git a/apps/files_trashbin/js/app.js b/apps/files_trashbin/js/app.js index 376ee7b01ca..a9727542bad 100644 --- a/apps/files_trashbin/js/app.js +++ b/apps/files_trashbin/js/app.js @@ -8,7 +8,13 @@ * */ +/** + * @namespace OCA.Trashbin + */ OCA.Trashbin = {}; +/** + * @namespace OCA.Trashbin.App + */ OCA.Trashbin.App = { _initialized: false, diff --git a/apps/files_trashbin/js/filelist.js b/apps/files_trashbin/js/filelist.js index b8688d89765..a3631a2d0fe 100644 --- a/apps/files_trashbin/js/filelist.js +++ b/apps/files_trashbin/js/filelist.js @@ -14,8 +14,8 @@ * Convert a file name in the format filename.d12345 to the real file name. * This will use basename. * The name will not be changed if it has no ".d12345" suffix. - * @param name file name - * @return converted file name + * @param {String} name file name + * @return {String} converted file name */ function getDeletedFileName(name) { name = OC.basename(name); @@ -26,13 +26,26 @@ return name; } + /** + * @class OCA.Trashbin.FileList + * @augments OCA.Files.FileList + * @classdesc List of deleted files + * + * @param $el container element with existing markup for the #controls + * and a table + * @param [options] map of options + */ var FileList = function($el, options) { this.initialize($el, options); }; - FileList.prototype = _.extend({}, OCA.Files.FileList.prototype, { + FileList.prototype = _.extend({}, OCA.Files.FileList.prototype, + /** @lends OCA.Trashbin.FileList.prototype */ { id: 'trashbin', appName: t('files_trashbin', 'Deleted files'), + /** + * @private + */ initialize: function() { var result = OCA.Files.FileList.prototype.initialize.apply(this, arguments); this.$el.find('.undelete').click('click', _.bind(this._onClickRestoreSelected, this)); diff --git a/apps/files_trashbin/l10n/pt_PT.js b/apps/files_trashbin/l10n/pt_PT.js index 5d22e3bca21..303c8ad8c37 100644 --- a/apps/files_trashbin/l10n/pt_PT.js +++ b/apps/files_trashbin/l10n/pt_PT.js @@ -7,9 +7,9 @@ OC.L10N.register( "Restore" : "Restaurar", "Error" : "Erro", "restored" : "Restaurado", - "Nothing in here. Your trash bin is empty!" : "Não hà ficheiros. O lixo está vazio!", + "Nothing in here. Your trash bin is empty!" : "Não existe nada aqui. O seu caixote de lixo está vazio!", "Name" : "Nome", - "Deleted" : "Apagado", + "Deleted" : "Eliminado", "Delete" : "Eliminar" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/pt_PT.json b/apps/files_trashbin/l10n/pt_PT.json index 4feb75abd9a..431c381074a 100644 --- a/apps/files_trashbin/l10n/pt_PT.json +++ b/apps/files_trashbin/l10n/pt_PT.json @@ -5,9 +5,9 @@ "Restore" : "Restaurar", "Error" : "Erro", "restored" : "Restaurado", - "Nothing in here. Your trash bin is empty!" : "Não hà ficheiros. O lixo está vazio!", + "Nothing in here. Your trash bin is empty!" : "Não existe nada aqui. O seu caixote de lixo está vazio!", "Name" : "Nome", - "Deleted" : "Apagado", + "Deleted" : "Eliminado", "Delete" : "Eliminar" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/sk.php b/apps/files_trashbin/l10n/sk.php deleted file mode 100644 index 3129cf5c411..00000000000 --- a/apps/files_trashbin/l10n/sk.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php -$TRANSLATIONS = array( -"Delete" => "Odstrániť" -); -$PLURAL_FORMS = "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"; diff --git a/apps/files_trashbin/l10n/ur.php b/apps/files_trashbin/l10n/ur.php deleted file mode 100644 index 1b41db1d679..00000000000 --- a/apps/files_trashbin/l10n/ur.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php -$TRANSLATIONS = array( -"Error" => "خرابی" -); -$PLURAL_FORMS = "nplurals=2; plural=(n != 1);"; diff --git a/apps/files_trashbin/lib/capabilities.php b/apps/files_trashbin/lib/capabilities.php new file mode 100644 index 00000000000..3f137d22b6f --- /dev/null +++ b/apps/files_trashbin/lib/capabilities.php @@ -0,0 +1,32 @@ +<?php +/** + * Copyright (c) Lukas Reschke <lukas@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OCA\Files_Trashbin; + + +/** + * Class Capabilities + * + * @package OCA\Files_Trashbin + */ +class Capabilities { + + /** + * @return \OC_OCS_Result + */ + public static function getCapabilities() { + return new \OC_OCS_Result(array( + 'capabilities' => array( + 'files' => array( + 'undelete' => true, + ), + ), + )); + } + +} diff --git a/apps/files_trashbin/lib/helper.php b/apps/files_trashbin/lib/helper.php index c2b81e3dbc8..c99662480df 100644 --- a/apps/files_trashbin/lib/helper.php +++ b/apps/files_trashbin/lib/helper.php @@ -88,7 +88,7 @@ class Helper $entry = \OCA\Files\Helper::formatFileInfo($i); $entry['id'] = $id++; $entry['etag'] = $entry['mtime']; // add fake etag, it is only needed to identify the preview image - $entry['permissions'] = \OCP\PERMISSION_READ; + $entry['permissions'] = \OCP\Constants::PERMISSION_READ; if (\OCP\App::isEnabled('files_encryption')) { $entry['isPreviewAvailable'] = false; } diff --git a/apps/files_trashbin/tests/trashbin.php b/apps/files_trashbin/tests/trashbin.php index 6fdb53f7271..f572e22623e 100644 --- a/apps/files_trashbin/tests/trashbin.php +++ b/apps/files_trashbin/tests/trashbin.php @@ -25,7 +25,7 @@ use OCA\Files_Trashbin; /** * Class Test_Encryption_Crypt */ -class Test_Trashbin extends \PHPUnit_Framework_TestCase { +class Test_Trashbin extends \Test\TestCase { const TEST_TRASHBIN_USER1 = "test-trashbin-user1"; const TEST_TRASHBIN_USER2 = "test-trashbin-user2"; @@ -43,6 +43,8 @@ class Test_Trashbin extends \PHPUnit_Framework_TestCase { private $rootView; public static function setUpBeforeClass() { + parent::setUpBeforeClass(); + // reset backend \OC_User::clearBackends(); \OC_User::useBackend('database'); @@ -85,18 +87,24 @@ class Test_Trashbin extends \PHPUnit_Framework_TestCase { \OC_Config::setValue('trashbin_auto_expire', self::$rememberAutoExpire); \OC_Hook::clear(); + + parent::tearDownAfterClass(); } - public function setUp() { + protected function setUp() { + parent::setUp(); + $this->trashRoot1 = '/' . self::TEST_TRASHBIN_USER1 . '/files_trashbin'; $this->trashRoot2 = '/' . self::TEST_TRASHBIN_USER2 . '/files_trashbin'; $this->rootView = new \OC\Files\View(); self::loginHelper(self::TEST_TRASHBIN_USER1); } - public function tearDown() { + protected function tearDown() { $this->rootView->deleteAll($this->trashRoot1); $this->rootView->deleteAll($this->trashRoot2); + + parent::tearDown(); } /** diff --git a/apps/files_versions/js/versions.js b/apps/files_versions/js/versions.js index 64e0df76490..1a47c1749f9 100644 --- a/apps/files_versions/js/versions.js +++ b/apps/files_versions/js/versions.js @@ -11,6 +11,8 @@ /* global scanFiles, escapeHTML, formatDate */ $(document).ready(function(){ + // TODO: namespace all this as OCA.FileVersions + if ($('#isPublic').val()){ // no versions actions in public mode // beware of https://github.com/owncloud/core/issues/4545 diff --git a/apps/files_versions/tests/versions.php b/apps/files_versions/tests/versions.php index a3b8595a34b..6205a6881f0 100644 --- a/apps/files_versions/tests/versions.php +++ b/apps/files_versions/tests/versions.php @@ -27,7 +27,7 @@ require_once __DIR__ . '/../lib/versions.php'; * Class Test_Files_versions * this class provide basic files versions test */ -class Test_Files_Versioning extends \PHPUnit_Framework_TestCase { +class Test_Files_Versioning extends \Test\TestCase { const TEST_VERSIONS_USER = 'test-versions-user'; const TEST_VERSIONS_USER2 = 'test-versions-user2'; @@ -39,6 +39,7 @@ class Test_Files_Versioning extends \PHPUnit_Framework_TestCase { private $rootView; public static function setUpBeforeClass() { + parent::setUpBeforeClass(); // clear share hooks \OC_Hook::clear('OCP\\Share'); @@ -55,9 +56,13 @@ class Test_Files_Versioning extends \PHPUnit_Framework_TestCase { // cleanup test user \OC_User::deleteUser(self::TEST_VERSIONS_USER); \OC_User::deleteUser(self::TEST_VERSIONS_USER2); + + parent::tearDownAfterClass(); } - function setUp() { + protected function setUp() { + parent::setUp(); + self::loginHelper(self::TEST_VERSIONS_USER); $this->rootView = new \OC\Files\View(); if (!$this->rootView->file_exists(self::USERS_VERSIONS_ROOT)) { @@ -65,8 +70,10 @@ class Test_Files_Versioning extends \PHPUnit_Framework_TestCase { } } - function tearDown() { + protected function tearDown() { $this->rootView->deleteAll(self::USERS_VERSIONS_ROOT); + + parent::tearDown(); } /** @@ -74,7 +81,7 @@ class Test_Files_Versioning extends \PHPUnit_Framework_TestCase { * test expire logic * @dataProvider versionsProvider */ - function testGetExpireList($versions, $sizeOfAllDeletedFiles) { + public function testGetExpireList($versions, $sizeOfAllDeletedFiles) { // last interval end at 2592000 $startTime = 5000000; @@ -216,7 +223,7 @@ class Test_Files_Versioning extends \PHPUnit_Framework_TestCase { ); } - function testRename() { + public function testRename() { \OC\Files\Filesystem::file_put_contents("test.txt", "test file"); @@ -247,7 +254,7 @@ class Test_Files_Versioning extends \PHPUnit_Framework_TestCase { \OC\Files\Filesystem::unlink('test2.txt'); } - function testRenameInSharedFolder() { + public function testRenameInSharedFolder() { \OC\Files\Filesystem::mkdir('folder1'); \OC\Files\Filesystem::mkdir('folder1/folder2'); @@ -270,7 +277,7 @@ class Test_Files_Versioning extends \PHPUnit_Framework_TestCase { $this->rootView->file_put_contents($v1, 'version1'); $this->rootView->file_put_contents($v2, 'version2'); - \OCP\Share::shareItem('folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, self::TEST_VERSIONS_USER2, OCP\PERMISSION_ALL); + \OCP\Share::shareItem('folder', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, self::TEST_VERSIONS_USER2, \OCP\Constants::PERMISSION_ALL); self::loginHelper(self::TEST_VERSIONS_USER2); @@ -291,7 +298,7 @@ class Test_Files_Versioning extends \PHPUnit_Framework_TestCase { \OC\Files\Filesystem::unlink('/folder1/folder2/test.txt'); } - function testRenameSharedFile() { + public function testRenameSharedFile() { \OC\Files\Filesystem::file_put_contents("test.txt", "test file"); @@ -313,7 +320,7 @@ class Test_Files_Versioning extends \PHPUnit_Framework_TestCase { $this->rootView->file_put_contents($v1, 'version1'); $this->rootView->file_put_contents($v2, 'version2'); - \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, self::TEST_VERSIONS_USER2, OCP\PERMISSION_ALL); + \OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, self::TEST_VERSIONS_USER2, \OCP\Constants::PERMISSION_ALL); self::loginHelper(self::TEST_VERSIONS_USER2); @@ -334,7 +341,7 @@ class Test_Files_Versioning extends \PHPUnit_Framework_TestCase { \OC\Files\Filesystem::unlink('/test.txt'); } - function testCopy() { + public function testCopy() { \OC\Files\Filesystem::file_put_contents("test.txt", "test file"); diff --git a/apps/user_ldap/ajax/wizard.php b/apps/user_ldap/ajax/wizard.php index ef1241b9147..6d7d70c8c5a 100644 --- a/apps/user_ldap/ajax/wizard.php +++ b/apps/user_ldap/ajax/wizard.php @@ -62,6 +62,7 @@ switch($action) { case 'guessPortAndTLS': case 'guessBaseDN': case 'detectEmailAttribute': + case 'detectUserDisplayNameAttribute': case 'determineGroupMemberAssoc': case 'determineUserObjectClasses': case 'determineGroupObjectClasses': @@ -115,4 +116,3 @@ switch($action) { //TODO: return 4xx error break; } - diff --git a/apps/user_ldap/js/ldapFilter.js b/apps/user_ldap/js/ldapFilter.js index bb66c1df2ee..0f7d240adac 100644 --- a/apps/user_ldap/js/ldapFilter.js +++ b/apps/user_ldap/js/ldapFilter.js @@ -8,6 +8,7 @@ function LdapFilter(target, determineModeCallback) { this.determineModeCallback = determineModeCallback; this.foundFeatures = false; this.activated = false; + this.countPending = false; if( target === 'User' || target === 'Login' || @@ -25,9 +26,13 @@ LdapFilter.prototype.activate = function() { this.determineMode(); }; -LdapFilter.prototype.compose = function(callback) { +LdapFilter.prototype.compose = function(updateCount) { var action; + if(updateCount === true) { + this.countPending = updateCount; + } + if(this.locked) { this.lazyRunCompose = true; return false; @@ -54,22 +59,36 @@ LdapFilter.prototype.compose = function(callback) { LdapWizard.ajax(param, function(result) { - LdapWizard.applyChanges(result); - filter.updateCount(); - if(filter.target === 'Group') { - LdapWizard.detectGroupMemberAssoc(); - } - if(typeof callback !== 'undefined') { - callback(); - } + filter.afterComposeSuccess(result); }, function () { + filter.countPending = false; console.log('LDAP Wizard: could not compose filter. '+ 'Please check owncloud.log'); } ); }; +/** + * this function is triggered after attribute detectors have completed in + * LdapWizard + */ +LdapFilter.prototype.afterDetectorsRan = function() { + this.updateCount(); +}; + +/** + * this function is triggered after LDAP filters have been composed successfully + * @param {object} result returned by the ajax call + */ +LdapFilter.prototype.afterComposeSuccess = function(result) { + LdapWizard.applyChanges(result); + if(this.countPending) { + this.countPending = false; + this.updateCount(); + } +}; + LdapFilter.prototype.determineMode = function() { var param = 'action=get'+encodeURIComponent(this.target)+'FilterMode'+ '&ldap_serverconfig_chooser='+ @@ -145,10 +164,26 @@ LdapFilter.prototype.findFeatures = function() { } }; +/** + * this function is triggered before user and group counts are executed + * resolving the passed status variable will fire up counting + * @param {object} status an instance of $.Deferred + */ +LdapFilter.prototype.beforeUpdateCount = function() { + var status = $.Deferred(); + LdapWizard.runDetectors(this.target, function() { + status.resolve(); + }); + return status; +}; + LdapFilter.prototype.updateCount = function(doneCallback) { - if(this.target === 'User') { - LdapWizard.countUsers(doneCallback); - } else if (this.target === 'Group') { - LdapWizard.countGroups(doneCallback); - } + var filter = this; + $.when(this.beforeUpdateCount()).done(function() { + if(filter.target === 'User') { + LdapWizard.countUsers(doneCallback); + } else if (filter.target === 'Group') { + LdapWizard.countGroups(doneCallback); + } + }); }; diff --git a/apps/user_ldap/js/settings.js b/apps/user_ldap/js/settings.js index fa40aba73b4..6db210fe435 100644 --- a/apps/user_ldap/js/settings.js +++ b/apps/user_ldap/js/settings.js @@ -151,8 +151,10 @@ var LdapWizard = { ajaxRequests: {}, ajax: function(param, fnOnSuccess, fnOnError, reqID) { - if(reqID !== undefined) { + if(!_.isUndefined(reqID)) { if(LdapWizard.ajaxRequests.hasOwnProperty(reqID)) { + console.log('aborting ' + reqID); + console.log(param); LdapWizard.ajaxRequests[reqID].abort(); } } @@ -167,9 +169,10 @@ var LdapWizard = { } } ); - if(reqID !== undefined) { + if(!_.isUndefined(reqID)) { LdapWizard.ajaxRequests[reqID] = request; } + return request; }, applyChanges: function (result) { @@ -342,7 +345,7 @@ var LdapWizard = { }, _countThings: function(method, spinnerID, doneCallback) { - param = 'action='+method+ + var param = 'action='+method+ '&ldap_serverconfig_chooser='+ encodeURIComponent($('#ldap_serverconfig_chooser').val()); @@ -351,14 +354,14 @@ var LdapWizard = { function(result) { LdapWizard.applyChanges(result); LdapWizard.hideSpinner(spinnerID); - if(doneCallback !== undefined) { + if(!_.isUndefined(doneCallback)) { doneCallback(method); } }, function (result) { OC.Notification.show('Counting the entries failed with, ' + result.message); LdapWizard.hideSpinner(spinnerID); - if(doneCallback !== undefined) { + if(!_.isUndefined(doneCallback)) { doneCallback(method); } }, @@ -374,12 +377,54 @@ var LdapWizard = { LdapWizard._countThings('countUsers', '#ldap_user_count', doneCallback); }, + /** + * called after detectors have run + * @callback runDetectorsCallback + */ + + /** + * runs detectors to determine appropriate attributes, e.g. displayName + * @param {string} type either "User" or "Group" + * @param {runDetectorsCallback} triggered after all detectors have completed + */ + runDetectors: function(type, callback) { + if(type === 'Group') { + $.when(LdapWizard.detectGroupMemberAssoc()) + .then(callback, callback); + if( LdapWizard.admin.isExperienced + && !(LdapWizard.detectorsRunInXPMode & LdapWizard.groupDetectors)) { + LdapWizard.detectorsRunInXPMode += LdapWizard.groupDetectors; + } + } else if(type === 'User') { + var req1 = LdapWizard.detectUserDisplayNameAttribute(); + var req2 = LdapWizard.detectEmailAttribute(); + $.when(req1, req2) + .then(callback, callback); + if( LdapWizard.admin.isExperienced + && !(LdapWizard.detectorsRunInXPMode & LdapWizard.userDetectors)) { + LdapWizard.detectorsRunInXPMode += LdapWizard.userDetectors; + } + } + }, + + /** + * runs detector to find out a fitting user display name attribute + */ + detectUserDisplayNameAttribute: function() { + var param = 'action=detectUserDisplayNameAttribute' + + '&ldap_serverconfig_chooser='+ + encodeURIComponent($('#ldap_serverconfig_chooser').val()); + + //runs in the background, no callbacks necessary + return LdapWizard.ajax(param, LdapWizard.applyChanges, function(){}, 'detectUserDisplayNameAttribute'); + }, + detectEmailAttribute: function() { - param = 'action=detectEmailAttribute'+ + var param = 'action=detectEmailAttribute'+ '&ldap_serverconfig_chooser='+ encodeURIComponent($('#ldap_serverconfig_chooser').val()); //runs in the background, no callbacks necessary - LdapWizard.ajax(param, LdapWizard.applyChanges, function(){}, 'detectEmailAttribute'); + return LdapWizard.ajax(param, LdapWizard.applyChanges, function(){}, 'detectEmailAttribute'); }, detectGroupMemberAssoc: function() { @@ -387,7 +432,7 @@ var LdapWizard = { '&ldap_serverconfig_chooser='+ encodeURIComponent($('#ldap_serverconfig_chooser').val()); - LdapWizard.ajax(param, + return LdapWizard.ajax(param, function(result) { //pure background story }, @@ -409,7 +454,7 @@ var LdapWizard = { $('#ldap_loginfilter_attributes').find('option').remove(); for (var i in result.options['ldap_loginfilter_attributes']) { //FIXME: move HTML into template - attr = result.options['ldap_loginfilter_attributes'][i]; + var attr = result.options['ldap_loginfilter_attributes'][i]; $('#ldap_loginfilter_attributes').append( "<option value='"+attr+"'>"+attr+"</option>"); } @@ -566,8 +611,12 @@ var LdapWizard = { }, isConfigurationActiveControlLocked: true, + detectorsRunInXPMode: 0, + userDetectors: 1, + groupDetectors: 2, init: function() { + LdapWizard.detectorsRunInXPMode = 0; LdapWizard.instantiateFilters(); LdapWizard.admin.setExperienced($('#ldap_experienced_admin').is(':checked')); LdapWizard.basicStatusCheck(); @@ -620,8 +669,9 @@ var LdapWizard = { instantiateFilters: function() { delete LdapWizard.userFilter; LdapWizard.userFilter = new LdapFilter('User', function(mode) { - if(mode === LdapWizard.filterModeAssisted) { - LdapWizard.groupFilter.updateCount(); + if( !LdapWizard.admin.isExperienced() + || mode === LdapWizard.filterModeAssisted) { + LdapWizard.userFilter.updateCount(); } LdapWizard.userFilter.findFeatures(); }); @@ -630,7 +680,6 @@ var LdapWizard = { $('#ldap_user_count').text(''); LdapWizard.showSpinner('#rawUserFilterContainer .ldapGetEntryCount'); LdapWizard.userFilter.updateCount(LdapWizard.hideTestSpinner); - LdapWizard.detectEmailAttribute(); $('#ldap_user_count').removeClass('hidden'); }); @@ -641,7 +690,8 @@ var LdapWizard = { delete LdapWizard.groupFilter; LdapWizard.groupFilter = new LdapFilter('Group', function(mode) { - if(mode === LdapWizard.filterModeAssisted) { + if( !LdapWizard.admin.isExperienced() + || mode === LdapWizard.filterModeAssisted) { LdapWizard.groupFilter.updateCount(); } LdapWizard.groupFilter.findFeatures(); @@ -651,7 +701,6 @@ var LdapWizard = { $('#ldap_group_count').text(''); LdapWizard.showSpinner('#rawGroupFilterContainer .ldapGetEntryCount'); LdapWizard.groupFilter.updateCount(LdapWizard.hideTestSpinner); - LdapWizard.detectGroupMemberAssoc(); $('#ldap_group_count').removeClass('hidden'); }); }, @@ -668,7 +717,7 @@ var LdapWizard = { postInitUserFilter: function() { if(LdapWizard.userFilterObjectClassesHasRun && LdapWizard.userFilterAvailableGroupsHasRun) { - LdapWizard.userFilter.compose(LdapWizard.detectEmailAttribute); + LdapWizard.userFilter.compose(); } }, @@ -679,7 +728,7 @@ var LdapWizard = { //do not allow to switch tabs as long as a save process is active return false; } - newTabIndex = 0; + var newTabIndex = 0; if(ui.newTab[0].id === '#ldapWizard2') { LdapWizard.initUserFilter(); newTabIndex = 1; @@ -691,9 +740,23 @@ var LdapWizard = { newTabIndex = 3; } - curTabIndex = $('#ldapSettings').tabs('option', 'active'); + var curTabIndex = $('#ldapSettings').tabs('option', 'active'); if(curTabIndex >= 0 && curTabIndex <= 3) { LdapWizard.controlUpdate(newTabIndex); + //run detectors in XP mode, when "Test Filter" button has not been + //clicked in order to make sure that email, displayname, member- + //group association attributes are properly set. + if( curTabIndex === 1 + && LdapWizard.admin.isExperienced + && !(LdapWizard.detecorsRunInXPMode & LdapWizard.userDetectors) + ) { + LdapWizard.runDetectors('User', function(){}); + } else if( curTabIndex === 3 + && LdapWizard.admin.isExperienced + && !(LdapWizard.detecorsRunInXPMode & LdapWizard.groupDetectors) + ) { + LdapWizard.runDetectors('Group', function(){}); + } } }, @@ -711,15 +774,15 @@ var LdapWizard = { } } - if(triggerObj.id === 'ldap_userlist_filter' && !LdapWizard.admin.isExperienced()) { - LdapWizard.detectEmailAttribute(); - } else if(triggerObj.id === 'ldap_group_filter' && !LdapWizard.admin.isExperienced()) { - LdapWizard.detectGroupMemberAssoc(); - } - if(triggerObj.id === 'ldap_loginfilter_username' || triggerObj.id === 'ldap_loginfilter_email') { LdapWizard.loginFilter.compose(); + } else if (!LdapWizard.admin.isExperienced()) { + if(triggerObj.id === 'ldap_userlist_filter') { + LdapWizard.userFilter.updateCount(); + } else if (triggerObj.id === 'ldap_group_filter') { + LdapWizard.groupFilter.updateCount(); + } } if($('#ldapSettings').tabs('option', 'active') == 0) { @@ -749,7 +812,7 @@ var LdapWizard = { LdapWizard._save($('#'+originalObj)[0], $.trim(values)); if(originalObj === 'ldap_userfilter_objectclass' || originalObj === 'ldap_userfilter_groups') { - LdapWizard.userFilter.compose(LdapWizard.detectEmailAttribute); + LdapWizard.userFilter.compose(true); //when user filter is changed afterwards, login filter needs to //be adjusted, too if(!LdapWizard.loginFilter) { @@ -760,7 +823,7 @@ var LdapWizard = { LdapWizard.loginFilter.compose(); } else if(originalObj === 'ldap_groupfilter_objectclass' || originalObj === 'ldap_groupfilter_groups') { - LdapWizard.groupFilter.compose(); + LdapWizard.groupFilter.compose(true); } }, @@ -830,10 +893,10 @@ var LdapWizard = { LdapWizard._save({ id: modeKey }, LdapWizard.filterModeAssisted); if(isUser) { LdapWizard.blacklistRemove('ldap_userlist_filter'); - LdapWizard.userFilter.compose(LdapWizard.detectEmailAttribute); + LdapWizard.userFilter.compose(true); } else { LdapWizard.blacklistRemove('ldap_group_filter'); - LdapWizard.groupFilter.compose(); + LdapWizard.groupFilter.compose(true); } } }, diff --git a/apps/user_ldap/l10n/bg_BG.js b/apps/user_ldap/l10n/bg_BG.js index e6f45803985..91e48905138 100644 --- a/apps/user_ldap/l10n/bg_BG.js +++ b/apps/user_ldap/l10n/bg_BG.js @@ -76,6 +76,7 @@ OC.L10N.register( "Saving" : "Записване", "Back" : "Назад", "Continue" : "Продължи", + "LDAP" : "LDAP", "Expert" : "Експерт", "Advanced" : "Допълнителни", "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Предупреждение:</b> Приложенията user_ldap и user_webdavauth са несъвместими. Може да изпитате неочквано поведение. Моля, поискайте системния администратор да изключи едното приложение.", diff --git a/apps/user_ldap/l10n/bg_BG.json b/apps/user_ldap/l10n/bg_BG.json index f29aff72266..19ee8da4b33 100644 --- a/apps/user_ldap/l10n/bg_BG.json +++ b/apps/user_ldap/l10n/bg_BG.json @@ -74,6 +74,7 @@ "Saving" : "Записване", "Back" : "Назад", "Continue" : "Продължи", + "LDAP" : "LDAP", "Expert" : "Експерт", "Advanced" : "Допълнителни", "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Предупреждение:</b> Приложенията user_ldap и user_webdavauth са несъвместими. Може да изпитате неочквано поведение. Моля, поискайте системния администратор да изключи едното приложение.", diff --git a/apps/user_ldap/l10n/cs_CZ.js b/apps/user_ldap/l10n/cs_CZ.js index 793fd61c4b3..f4782d57d66 100644 --- a/apps/user_ldap/l10n/cs_CZ.js +++ b/apps/user_ldap/l10n/cs_CZ.js @@ -33,6 +33,7 @@ OC.L10N.register( "Confirm Deletion" : "Potvrdit smazání", "_%s group found_::_%s groups found_" : ["nalezena %s skupina","nalezeny %s skupiny","nalezeno %s skupin"], "_%s user found_::_%s users found_" : ["nalezen %s uživatel","nalezeni %s uživatelé","nalezeno %s uživatelů"], + "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Nelze detekovat atribut pro zobrazení jména uživatele. Upřesněte ho prosím sami v rozšířeném nastavení LDAP.", "Could not find the desired feature" : "Nelze nalézt požadovanou vlastnost", "Invalid Host" : "Neplatný hostitel", "Server" : "Server", @@ -69,7 +70,7 @@ OC.L10N.register( "One Base DN per line" : "Jedna základní DN na řádku", "You can specify Base DN for users and groups in the Advanced tab" : "V rozšířeném nastavení můžete určit základní DN pro uživatele a skupiny", "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Zabraňuje automatickým LDAP požadavkům. Výhodné pro objemná nastavení, ale vyžaduje znalosti o LDAP.", - "Manually enter LDAP filters (recommended for large directories)" : "Ručně vložit LDAP filtry (doporučené pro obsáhlé adresáře)", + "Manually enter LDAP filters (recommended for large directories)" : "Ručně vložit LDAP filtry (doporučeno pro obsáhlé adresáře)", "Limit %s access to users meeting these criteria:" : "Omezit přístup %s uživatelům splňujícím tyto podmínky:", "The filter specifies which LDAP users shall have access to the %s instance." : "Filtr určuje, kteří uživatelé LDAP mají mít přístup k instanci %s.", "users found" : "nalezení uživatelé", @@ -79,7 +80,7 @@ OC.L10N.register( "LDAP" : "LDAP", "Expert" : "Expertní", "Advanced" : "Pokročilé", - "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Varování:</b> Aplikace user_ldap a user_webdavauth jsou vzájemně nekompatibilní. Můžete zaznamenat neočekávané chování. Požádejte prosím vašeho systémového administrátora o zakázání jednoho z nich.", + "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Varování:</b> Aplikace user_ldap a user_webdavauth jsou vzájemně nekompatibilní. Můžete zaznamenat neočekávané chování. Požádejte prosím svého správce systému o zakázání jedné z nich.", "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Varování:</b> není nainstalován LDAP modul pro PHP, podpůrná vrstva nebude fungovat. Požádejte, prosím, správce systému, aby jej nainstaloval.", "Connection Settings" : "Nastavení spojení", "Configuration Active" : "Nastavení aktivní", diff --git a/apps/user_ldap/l10n/cs_CZ.json b/apps/user_ldap/l10n/cs_CZ.json index fb906cb7d9c..e3e51560987 100644 --- a/apps/user_ldap/l10n/cs_CZ.json +++ b/apps/user_ldap/l10n/cs_CZ.json @@ -31,6 +31,7 @@ "Confirm Deletion" : "Potvrdit smazání", "_%s group found_::_%s groups found_" : ["nalezena %s skupina","nalezeny %s skupiny","nalezeno %s skupin"], "_%s user found_::_%s users found_" : ["nalezen %s uživatel","nalezeni %s uživatelé","nalezeno %s uživatelů"], + "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Nelze detekovat atribut pro zobrazení jména uživatele. Upřesněte ho prosím sami v rozšířeném nastavení LDAP.", "Could not find the desired feature" : "Nelze nalézt požadovanou vlastnost", "Invalid Host" : "Neplatný hostitel", "Server" : "Server", @@ -67,7 +68,7 @@ "One Base DN per line" : "Jedna základní DN na řádku", "You can specify Base DN for users and groups in the Advanced tab" : "V rozšířeném nastavení můžete určit základní DN pro uživatele a skupiny", "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Zabraňuje automatickým LDAP požadavkům. Výhodné pro objemná nastavení, ale vyžaduje znalosti o LDAP.", - "Manually enter LDAP filters (recommended for large directories)" : "Ručně vložit LDAP filtry (doporučené pro obsáhlé adresáře)", + "Manually enter LDAP filters (recommended for large directories)" : "Ručně vložit LDAP filtry (doporučeno pro obsáhlé adresáře)", "Limit %s access to users meeting these criteria:" : "Omezit přístup %s uživatelům splňujícím tyto podmínky:", "The filter specifies which LDAP users shall have access to the %s instance." : "Filtr určuje, kteří uživatelé LDAP mají mít přístup k instanci %s.", "users found" : "nalezení uživatelé", @@ -77,7 +78,7 @@ "LDAP" : "LDAP", "Expert" : "Expertní", "Advanced" : "Pokročilé", - "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Varování:</b> Aplikace user_ldap a user_webdavauth jsou vzájemně nekompatibilní. Můžete zaznamenat neočekávané chování. Požádejte prosím vašeho systémového administrátora o zakázání jednoho z nich.", + "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Varování:</b> Aplikace user_ldap a user_webdavauth jsou vzájemně nekompatibilní. Můžete zaznamenat neočekávané chování. Požádejte prosím svého správce systému o zakázání jedné z nich.", "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Varování:</b> není nainstalován LDAP modul pro PHP, podpůrná vrstva nebude fungovat. Požádejte, prosím, správce systému, aby jej nainstaloval.", "Connection Settings" : "Nastavení spojení", "Configuration Active" : "Nastavení aktivní", diff --git a/apps/user_ldap/l10n/el.js b/apps/user_ldap/l10n/el.js index 8018ea00766..daa557ac2f2 100644 --- a/apps/user_ldap/l10n/el.js +++ b/apps/user_ldap/l10n/el.js @@ -76,6 +76,7 @@ OC.L10N.register( "Saving" : "Αποθήκευση", "Back" : "Επιστροφή", "Continue" : "Συνέχεια", + "LDAP" : "LDAP", "Expert" : "Ειδικός", "Advanced" : "Για προχωρημένους", "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Προσοχή:</b> Οι εφαρμογές user_ldap και user_webdavauth είναι ασύμβατες. Μπορεί να αντιμετωπίσετε απρόβλεπτη συμπεριφορά. Παρακαλώ ζητήστε από τον διαχειριστή συστήματος να απενεργοποιήσει μία από αυτές.", diff --git a/apps/user_ldap/l10n/el.json b/apps/user_ldap/l10n/el.json index bd8b6aa6170..717e2a686b7 100644 --- a/apps/user_ldap/l10n/el.json +++ b/apps/user_ldap/l10n/el.json @@ -74,6 +74,7 @@ "Saving" : "Αποθήκευση", "Back" : "Επιστροφή", "Continue" : "Συνέχεια", + "LDAP" : "LDAP", "Expert" : "Ειδικός", "Advanced" : "Για προχωρημένους", "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Προσοχή:</b> Οι εφαρμογές user_ldap και user_webdavauth είναι ασύμβατες. Μπορεί να αντιμετωπίσετε απρόβλεπτη συμπεριφορά. Παρακαλώ ζητήστε από τον διαχειριστή συστήματος να απενεργοποιήσει μία από αυτές.", diff --git a/apps/user_ldap/l10n/fr.js b/apps/user_ldap/l10n/fr.js index 74bc9533eb4..d363530f5c5 100644 --- a/apps/user_ldap/l10n/fr.js +++ b/apps/user_ldap/l10n/fr.js @@ -33,6 +33,7 @@ OC.L10N.register( "Confirm Deletion" : "Confirmer la suppression", "_%s group found_::_%s groups found_" : ["%s groupe trouvé","%s groupes trouvés"], "_%s user found_::_%s users found_" : ["%s utilisateur trouvé","%s utilisateurs trouvés"], + "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Impossible de détecter l'attribut contenant le nom d'affichage des utilisateurs. Veuillez l'indiquer vous-même dans les paramètres ldap avancés.", "Could not find the desired feature" : "Impossible de trouver la fonction souhaitée", "Invalid Host" : "Hôte invalide", "Server" : "Serveur", @@ -56,7 +57,7 @@ OC.L10N.register( "Other Attributes:" : "Autres attributs :", "Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Définit le filtre à appliquer lors d'une tentative de connexion. %%uid remplace le nom d'utilisateur lors de la connexion. Exemple : \"uid=%%uid\"", "1. Server" : "1. Serveur", - "%s. Server:" : "%s. Serveur:", + "%s. Server:" : "%s. Serveur :", "Add Server Configuration" : "Ajouter une configuration du serveur", "Delete Configuration" : "Suppression de la configuration", "Host" : "Hôte", @@ -108,7 +109,7 @@ OC.L10N.register( "Group Search Attributes" : "Recherche des attributs du groupe", "Group-Member association" : "Association groupe-membre", "Nested Groups" : "Groupes imbriqués", - "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Si activé, les groupes contenant d'autres groupes sont supportés (fonctionne uniquement si l'attribut membre du groupe contient des DNs).", + "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Si activé, les groupes contenant d'autres groupes sont pris en charge (fonctionne uniquement si l'attribut membre du groupe contient des DNs).", "Paging chunksize" : "Dimensionnement des paginations", "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "La taille d'une part (chunksize) est utilisée pour les recherches paginées de LDAP qui peuvent retourner des résultats par lots comme une énumération d'utilisateurs ou groupes. (Configurer à 0 pour désactiver les recherches paginées de LDAP.)", "Special Attributes" : "Attributs spéciaux", @@ -120,7 +121,7 @@ OC.L10N.register( "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Laisser vide ", "Internal Username" : "Nom d'utilisateur interne", "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Par défaut le nom d'utilisateur interne sera créé à partir de l'attribut UUID. Ceci permet d'assurer que le nom d'utilisateur est unique et que les caractères ne nécessitent pas de conversion. Le nom d'utilisateur interne doit contenir uniquement les caractères suivants : [ a-zA-Z0-9_.@- ]. Les autres caractères sont remplacés par leur correspondance ASCII ou simplement omis. En cas de collision, un nombre est incrémenté/décrémenté. Le nom d'utilisateur interne est utilisé pour identifier l'utilisateur au sein du système. C'est aussi le nom par défaut du répertoire utilisateur dans ownCloud. C'est aussi le port d'URLs distants, par exemple pour tous les services *DAV. Le comportement par défaut peut être modifié à l'aide de ce paramètre. Pour obtenir un comportement similaire aux versions précédentes à ownCloud 5, saisir le nom d'utilisateur à afficher dans le champ suivant. Laissez à blanc pour le comportement par défaut. Les modifications prendront effet seulement pour les nouveaux (ajoutés) utilisateurs LDAP.", - "Internal Username Attribute:" : "Nom d'utilisateur interne:", + "Internal Username Attribute:" : "Nom d'utilisateur interne :", "Override UUID detection" : "Surcharger la détection d'UUID", "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Par défaut, l'attribut UUID est automatiquement détecté. Cet attribut est utilisé pour identifier les utilisateurs et groupes de façon fiable. Un nom d'utilisateur interne basé sur l'UUID sera automatiquement créé, sauf s'il est spécifié autrement ci-dessus. Vous pouvez modifier ce comportement et définir l'attribut de votre choix. Vous devez alors vous assurer que l'attribut de votre choix peut être récupéré pour les utilisateurs ainsi que pour les groupes et qu'il soit unique. Laisser à blanc pour le comportement par défaut. Les modifications seront effectives uniquement pour les nouveaux (ajoutés) utilisateurs et groupes LDAP.", "UUID Attribute for Users:" : "Attribut UUID pour les utilisateurs :", diff --git a/apps/user_ldap/l10n/fr.json b/apps/user_ldap/l10n/fr.json index 777376eced0..9879534bac7 100644 --- a/apps/user_ldap/l10n/fr.json +++ b/apps/user_ldap/l10n/fr.json @@ -31,6 +31,7 @@ "Confirm Deletion" : "Confirmer la suppression", "_%s group found_::_%s groups found_" : ["%s groupe trouvé","%s groupes trouvés"], "_%s user found_::_%s users found_" : ["%s utilisateur trouvé","%s utilisateurs trouvés"], + "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Impossible de détecter l'attribut contenant le nom d'affichage des utilisateurs. Veuillez l'indiquer vous-même dans les paramètres ldap avancés.", "Could not find the desired feature" : "Impossible de trouver la fonction souhaitée", "Invalid Host" : "Hôte invalide", "Server" : "Serveur", @@ -54,7 +55,7 @@ "Other Attributes:" : "Autres attributs :", "Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Définit le filtre à appliquer lors d'une tentative de connexion. %%uid remplace le nom d'utilisateur lors de la connexion. Exemple : \"uid=%%uid\"", "1. Server" : "1. Serveur", - "%s. Server:" : "%s. Serveur:", + "%s. Server:" : "%s. Serveur :", "Add Server Configuration" : "Ajouter une configuration du serveur", "Delete Configuration" : "Suppression de la configuration", "Host" : "Hôte", @@ -106,7 +107,7 @@ "Group Search Attributes" : "Recherche des attributs du groupe", "Group-Member association" : "Association groupe-membre", "Nested Groups" : "Groupes imbriqués", - "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Si activé, les groupes contenant d'autres groupes sont supportés (fonctionne uniquement si l'attribut membre du groupe contient des DNs).", + "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Si activé, les groupes contenant d'autres groupes sont pris en charge (fonctionne uniquement si l'attribut membre du groupe contient des DNs).", "Paging chunksize" : "Dimensionnement des paginations", "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "La taille d'une part (chunksize) est utilisée pour les recherches paginées de LDAP qui peuvent retourner des résultats par lots comme une énumération d'utilisateurs ou groupes. (Configurer à 0 pour désactiver les recherches paginées de LDAP.)", "Special Attributes" : "Attributs spéciaux", @@ -118,7 +119,7 @@ "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Laisser vide ", "Internal Username" : "Nom d'utilisateur interne", "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "Par défaut le nom d'utilisateur interne sera créé à partir de l'attribut UUID. Ceci permet d'assurer que le nom d'utilisateur est unique et que les caractères ne nécessitent pas de conversion. Le nom d'utilisateur interne doit contenir uniquement les caractères suivants : [ a-zA-Z0-9_.@- ]. Les autres caractères sont remplacés par leur correspondance ASCII ou simplement omis. En cas de collision, un nombre est incrémenté/décrémenté. Le nom d'utilisateur interne est utilisé pour identifier l'utilisateur au sein du système. C'est aussi le nom par défaut du répertoire utilisateur dans ownCloud. C'est aussi le port d'URLs distants, par exemple pour tous les services *DAV. Le comportement par défaut peut être modifié à l'aide de ce paramètre. Pour obtenir un comportement similaire aux versions précédentes à ownCloud 5, saisir le nom d'utilisateur à afficher dans le champ suivant. Laissez à blanc pour le comportement par défaut. Les modifications prendront effet seulement pour les nouveaux (ajoutés) utilisateurs LDAP.", - "Internal Username Attribute:" : "Nom d'utilisateur interne:", + "Internal Username Attribute:" : "Nom d'utilisateur interne :", "Override UUID detection" : "Surcharger la détection d'UUID", "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Par défaut, l'attribut UUID est automatiquement détecté. Cet attribut est utilisé pour identifier les utilisateurs et groupes de façon fiable. Un nom d'utilisateur interne basé sur l'UUID sera automatiquement créé, sauf s'il est spécifié autrement ci-dessus. Vous pouvez modifier ce comportement et définir l'attribut de votre choix. Vous devez alors vous assurer que l'attribut de votre choix peut être récupéré pour les utilisateurs ainsi que pour les groupes et qu'il soit unique. Laisser à blanc pour le comportement par défaut. Les modifications seront effectives uniquement pour les nouveaux (ajoutés) utilisateurs et groupes LDAP.", "UUID Attribute for Users:" : "Attribut UUID pour les utilisateurs :", diff --git a/apps/user_ldap/l10n/hi_IN.php b/apps/user_ldap/l10n/hi_IN.php deleted file mode 100644 index 3a1e002311c..00000000000 --- a/apps/user_ldap/l10n/hi_IN.php +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$TRANSLATIONS = array( -"_%s group found_::_%s groups found_" => array("",""), -"_%s user found_::_%s users found_" => array("","") -); -$PLURAL_FORMS = "nplurals=2; plural=(n != 1);"; diff --git a/apps/user_ldap/l10n/id.js b/apps/user_ldap/l10n/id.js index cf5f37c5efb..26ca061c71a 100644 --- a/apps/user_ldap/l10n/id.js +++ b/apps/user_ldap/l10n/id.js @@ -72,6 +72,7 @@ OC.L10N.register( "Saving" : "Menyimpan", "Back" : "Kembali", "Continue" : "Lanjutkan", + "LDAP" : "LDAP", "Expert" : "Lanjutan", "Advanced" : "Lanjutan", "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Peringatan:</b> Modul LDAP PHP tidak terpasang, perangkat tidak akan bekerja. Silakan minta administrator sistem untuk memasangnya.", @@ -87,11 +88,13 @@ OC.L10N.register( "in seconds. A change empties the cache." : "dalam detik. perubahan mengosongkan cache", "Directory Settings" : "Pengaturan Direktori", "User Display Name Field" : "Bidang Tampilan Nama Pengguna", + "The LDAP attribute to use to generate the user's display name." : "Atribut LDAP digunakan untuk menghasilkan nama tampilan pengguna.", "Base User Tree" : "Pohon Pengguna Dasar", "One User Base DN per line" : "Satu Pengguna Base DN per baris", "User Search Attributes" : "Atribut Pencarian Pengguna", "Optional; one attribute per line" : "Pilihan; satu atribut per baris", "Group Display Name Field" : "Bidang Tampilan Nama Grup", + "The LDAP attribute to use to generate the groups's display name." : "Atribut LDAP digunakan untuk menghasilkan nama tampilan grup.", "Base Group Tree" : "Pohon Grup Dasar", "One Group Base DN per line" : "Satu Grup Base DN per baris", "Group Search Attributes" : "Atribut Pencarian Grup", @@ -102,6 +105,11 @@ OC.L10N.register( "in bytes" : "dalam bytes", "Email Field" : "Bidang Email", "User Home Folder Naming Rule" : "Aturan Penamaan Folder Home Pengguna", - "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Biarkan nama pengguna kosong (default). Atau tetapkan atribut LDAP/AD." + "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Biarkan nama pengguna kosong (default). Atau tetapkan atribut LDAP/AD.", + "Internal Username" : "Nama Pengguna Internal", + "Internal Username Attribute:" : "Atribut Nama Pengguna Internal:", + "Override UUID detection" : "Timpa deteksi UUID", + "UUID Attribute for Users:" : "Atribut UUID untuk Pengguna:", + "UUID Attribute for Groups:" : "Atribut UUID untuk Grup:" }, "nplurals=1; plural=0;"); diff --git a/apps/user_ldap/l10n/id.json b/apps/user_ldap/l10n/id.json index 2395e7f2a55..ad650fc0fb9 100644 --- a/apps/user_ldap/l10n/id.json +++ b/apps/user_ldap/l10n/id.json @@ -70,6 +70,7 @@ "Saving" : "Menyimpan", "Back" : "Kembali", "Continue" : "Lanjutkan", + "LDAP" : "LDAP", "Expert" : "Lanjutan", "Advanced" : "Lanjutan", "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Peringatan:</b> Modul LDAP PHP tidak terpasang, perangkat tidak akan bekerja. Silakan minta administrator sistem untuk memasangnya.", @@ -85,11 +86,13 @@ "in seconds. A change empties the cache." : "dalam detik. perubahan mengosongkan cache", "Directory Settings" : "Pengaturan Direktori", "User Display Name Field" : "Bidang Tampilan Nama Pengguna", + "The LDAP attribute to use to generate the user's display name." : "Atribut LDAP digunakan untuk menghasilkan nama tampilan pengguna.", "Base User Tree" : "Pohon Pengguna Dasar", "One User Base DN per line" : "Satu Pengguna Base DN per baris", "User Search Attributes" : "Atribut Pencarian Pengguna", "Optional; one attribute per line" : "Pilihan; satu atribut per baris", "Group Display Name Field" : "Bidang Tampilan Nama Grup", + "The LDAP attribute to use to generate the groups's display name." : "Atribut LDAP digunakan untuk menghasilkan nama tampilan grup.", "Base Group Tree" : "Pohon Grup Dasar", "One Group Base DN per line" : "Satu Grup Base DN per baris", "Group Search Attributes" : "Atribut Pencarian Grup", @@ -100,6 +103,11 @@ "in bytes" : "dalam bytes", "Email Field" : "Bidang Email", "User Home Folder Naming Rule" : "Aturan Penamaan Folder Home Pengguna", - "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Biarkan nama pengguna kosong (default). Atau tetapkan atribut LDAP/AD." + "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Biarkan nama pengguna kosong (default). Atau tetapkan atribut LDAP/AD.", + "Internal Username" : "Nama Pengguna Internal", + "Internal Username Attribute:" : "Atribut Nama Pengguna Internal:", + "Override UUID detection" : "Timpa deteksi UUID", + "UUID Attribute for Users:" : "Atribut UUID untuk Pengguna:", + "UUID Attribute for Groups:" : "Atribut UUID untuk Grup:" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/it.js b/apps/user_ldap/l10n/it.js index 92bab544984..d7a4e192ec6 100644 --- a/apps/user_ldap/l10n/it.js +++ b/apps/user_ldap/l10n/it.js @@ -63,7 +63,7 @@ OC.L10N.register( "You can omit the protocol, except you require SSL. Then start with ldaps://" : "È possibile omettere il protocollo, ad eccezione se è necessario SSL. Quindi inizia con ldaps://", "Port" : "Porta", "User DN" : "DN utente", - "The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "Il DN per il client dell'utente con cui deve essere associato, ad esempio uid=agent,dc=example,dc=com. Per l'accesso anonimo, lasciare vuoti i campi DN e Password", + "The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "Il DN per il client dell'utente con cui deve essere associato, ad esempio uid=agente,dc=esempio,dc=com. Per l'accesso anonimo, lasciare vuoti i campi DN e Password", "Password" : "Password", "For anonymous access, leave DN and Password empty." : "Per l'accesso anonimo, lasciare vuoti i campi DN e Password", "One Base DN per line" : "Un DN base per riga", diff --git a/apps/user_ldap/l10n/it.json b/apps/user_ldap/l10n/it.json index 31a694a4b1c..44a529bc0c5 100644 --- a/apps/user_ldap/l10n/it.json +++ b/apps/user_ldap/l10n/it.json @@ -61,7 +61,7 @@ "You can omit the protocol, except you require SSL. Then start with ldaps://" : "È possibile omettere il protocollo, ad eccezione se è necessario SSL. Quindi inizia con ldaps://", "Port" : "Porta", "User DN" : "DN utente", - "The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "Il DN per il client dell'utente con cui deve essere associato, ad esempio uid=agent,dc=example,dc=com. Per l'accesso anonimo, lasciare vuoti i campi DN e Password", + "The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "Il DN per il client dell'utente con cui deve essere associato, ad esempio uid=agente,dc=esempio,dc=com. Per l'accesso anonimo, lasciare vuoti i campi DN e Password", "Password" : "Password", "For anonymous access, leave DN and Password empty." : "Per l'accesso anonimo, lasciare vuoti i campi DN e Password", "One Base DN per line" : "Un DN base per riga", diff --git a/apps/user_ldap/l10n/nl.js b/apps/user_ldap/l10n/nl.js index 77646a90a88..ae280e1a05e 100644 --- a/apps/user_ldap/l10n/nl.js +++ b/apps/user_ldap/l10n/nl.js @@ -33,6 +33,7 @@ OC.L10N.register( "Confirm Deletion" : "Bevestig verwijderen", "_%s group found_::_%s groups found_" : ["%s groep gevonden","%s groepen gevonden"], "_%s user found_::_%s users found_" : ["%s gebruiker gevonden","%s gebruikers gevonden"], + "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Kon het weergavenaam attribuut van de gebruiker niet vinden. Geef het zelf op in de geavanceerde ldap instellingen.", "Could not find the desired feature" : "Kon de gewenste functie niet vinden", "Invalid Host" : "Ongeldige server", "Server" : "Server", @@ -95,7 +96,7 @@ OC.L10N.register( "Cache Time-To-Live" : "Cache time-to-live", "in seconds. A change empties the cache." : "in seconden. Een verandering maakt de cache leeg.", "Directory Settings" : "Mapinstellingen", - "User Display Name Field" : "Gebruikers Schermnaam Veld", + "User Display Name Field" : "Veld gebruikers weergavenaam", "The LDAP attribute to use to generate the user's display name." : "Het te gebruiken LDAP attribuut voor het genereren van de weergavenaam voor de gebruiker.", "Base User Tree" : "Basis Gebruikers Structuur", "One User Base DN per line" : "Een User Base DN per regel", @@ -103,7 +104,7 @@ OC.L10N.register( "Optional; one attribute per line" : "Optioneel; één attribuut per regel", "Group Display Name Field" : "Groep Schermnaam Veld", "The LDAP attribute to use to generate the groups's display name." : "Het te gebruiken LDAP attribuut voor het genereren van de weergavenaam voor de groepen.", - "Base Group Tree" : "Basis Groupen Structuur", + "Base Group Tree" : "Basis groepsstructuur", "One Group Base DN per line" : "Een Group Base DN per regel", "Group Search Attributes" : "Attributen voor groepszoekopdrachten", "Group-Member association" : "Groepslid associatie", diff --git a/apps/user_ldap/l10n/nl.json b/apps/user_ldap/l10n/nl.json index 6f0a9ec1c01..ed0ce08501a 100644 --- a/apps/user_ldap/l10n/nl.json +++ b/apps/user_ldap/l10n/nl.json @@ -31,6 +31,7 @@ "Confirm Deletion" : "Bevestig verwijderen", "_%s group found_::_%s groups found_" : ["%s groep gevonden","%s groepen gevonden"], "_%s user found_::_%s users found_" : ["%s gebruiker gevonden","%s gebruikers gevonden"], + "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Kon het weergavenaam attribuut van de gebruiker niet vinden. Geef het zelf op in de geavanceerde ldap instellingen.", "Could not find the desired feature" : "Kon de gewenste functie niet vinden", "Invalid Host" : "Ongeldige server", "Server" : "Server", @@ -93,7 +94,7 @@ "Cache Time-To-Live" : "Cache time-to-live", "in seconds. A change empties the cache." : "in seconden. Een verandering maakt de cache leeg.", "Directory Settings" : "Mapinstellingen", - "User Display Name Field" : "Gebruikers Schermnaam Veld", + "User Display Name Field" : "Veld gebruikers weergavenaam", "The LDAP attribute to use to generate the user's display name." : "Het te gebruiken LDAP attribuut voor het genereren van de weergavenaam voor de gebruiker.", "Base User Tree" : "Basis Gebruikers Structuur", "One User Base DN per line" : "Een User Base DN per regel", @@ -101,7 +102,7 @@ "Optional; one attribute per line" : "Optioneel; één attribuut per regel", "Group Display Name Field" : "Groep Schermnaam Veld", "The LDAP attribute to use to generate the groups's display name." : "Het te gebruiken LDAP attribuut voor het genereren van de weergavenaam voor de groepen.", - "Base Group Tree" : "Basis Groupen Structuur", + "Base Group Tree" : "Basis groepsstructuur", "One Group Base DN per line" : "Een Group Base DN per regel", "Group Search Attributes" : "Attributen voor groepszoekopdrachten", "Group-Member association" : "Groepslid associatie", diff --git a/apps/user_ldap/l10n/pt_BR.js b/apps/user_ldap/l10n/pt_BR.js index 32b7697df3e..a4a481524ba 100644 --- a/apps/user_ldap/l10n/pt_BR.js +++ b/apps/user_ldap/l10n/pt_BR.js @@ -33,6 +33,7 @@ OC.L10N.register( "Confirm Deletion" : "Confirmar Exclusão", "_%s group found_::_%s groups found_" : ["grupo% s encontrado","grupos% s encontrado"], "_%s user found_::_%s users found_" : ["usuário %s encontrado","usuários %s encontrados"], + "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Não foi possível detectar o nome de exibição do atributo do usuário. Por favor, indique-o você mesmo em configurações avançadas do LDAP.", "Could not find the desired feature" : "Não foi possível encontrar a função desejada", "Invalid Host" : "Host Inválido", "Server" : "Servidor", diff --git a/apps/user_ldap/l10n/pt_BR.json b/apps/user_ldap/l10n/pt_BR.json index ea59ed7b4d8..4dd9088b727 100644 --- a/apps/user_ldap/l10n/pt_BR.json +++ b/apps/user_ldap/l10n/pt_BR.json @@ -31,6 +31,7 @@ "Confirm Deletion" : "Confirmar Exclusão", "_%s group found_::_%s groups found_" : ["grupo% s encontrado","grupos% s encontrado"], "_%s user found_::_%s users found_" : ["usuário %s encontrado","usuários %s encontrados"], + "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Não foi possível detectar o nome de exibição do atributo do usuário. Por favor, indique-o você mesmo em configurações avançadas do LDAP.", "Could not find the desired feature" : "Não foi possível encontrar a função desejada", "Invalid Host" : "Host Inválido", "Server" : "Servidor", diff --git a/apps/user_ldap/l10n/sk.php b/apps/user_ldap/l10n/sk.php deleted file mode 100644 index e258ffac223..00000000000 --- a/apps/user_ldap/l10n/sk.php +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$TRANSLATIONS = array( -"_%s group found_::_%s groups found_" => array("","",""), -"_%s user found_::_%s users found_" => array("","",""), -"Save" => "Uložiť", -"Advanced" => "Pokročilé" -); -$PLURAL_FORMS = "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"; diff --git a/apps/user_ldap/l10n/sl.js b/apps/user_ldap/l10n/sl.js index f7fd2772fe8..1437afcf5ba 100644 --- a/apps/user_ldap/l10n/sl.js +++ b/apps/user_ldap/l10n/sl.js @@ -76,6 +76,7 @@ OC.L10N.register( "Saving" : "Poteka shranjevanje ...", "Back" : "Nazaj", "Continue" : "Nadaljuj", + "LDAP" : "LDAP", "Expert" : "Napredno", "Advanced" : "Napredne možnosti", "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Opozorilo:</b> določili user_ldap in user_webdavauth sta neskladni, kar lahko vpliva na delovanje sistema. O napaki pošljite poročilo skrbniku sistema in opozorite, da je treba eno izmed možnosti onemogočiti.", diff --git a/apps/user_ldap/l10n/sl.json b/apps/user_ldap/l10n/sl.json index aa1c9444651..56bf65210c3 100644 --- a/apps/user_ldap/l10n/sl.json +++ b/apps/user_ldap/l10n/sl.json @@ -74,6 +74,7 @@ "Saving" : "Poteka shranjevanje ...", "Back" : "Nazaj", "Continue" : "Nadaljuj", + "LDAP" : "LDAP", "Expert" : "Napredno", "Advanced" : "Napredne možnosti", "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Opozorilo:</b> določili user_ldap in user_webdavauth sta neskladni, kar lahko vpliva na delovanje sistema. O napaki pošljite poročilo skrbniku sistema in opozorite, da je treba eno izmed možnosti onemogočiti.", diff --git a/apps/user_ldap/l10n/sq.js b/apps/user_ldap/l10n/sq.js index 056458c24b6..b436bef7bf2 100644 --- a/apps/user_ldap/l10n/sq.js +++ b/apps/user_ldap/l10n/sq.js @@ -32,6 +32,7 @@ OC.L10N.register( "For anonymous access, leave DN and Password empty." : "Për tu lidhur në mënyre anonime, lini bosh hapsirat e DN dhe fjalëkalim", "One Base DN per line" : "Një baze DN për rrjesht", "You can specify Base DN for users and groups in the Advanced tab" : "Ju mund të specifikoni Bazen DN për përdorues dhe grupe në butonin 'Të Përparuara'", + "Continue" : "Vazhdo", "Advanced" : "E përparuar", "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Njoftim:</b> moduli PHP LDAP nuk është instaluar, motori nuk do të funksionojë.Kontaktoni me administratorin e sistemit.", "Connection Settings" : "Të dhënat e lidhjes", diff --git a/apps/user_ldap/l10n/sq.json b/apps/user_ldap/l10n/sq.json index a3e87869355..5b81af7100d 100644 --- a/apps/user_ldap/l10n/sq.json +++ b/apps/user_ldap/l10n/sq.json @@ -30,6 +30,7 @@ "For anonymous access, leave DN and Password empty." : "Për tu lidhur në mënyre anonime, lini bosh hapsirat e DN dhe fjalëkalim", "One Base DN per line" : "Një baze DN për rrjesht", "You can specify Base DN for users and groups in the Advanced tab" : "Ju mund të specifikoni Bazen DN për përdorues dhe grupe në butonin 'Të Përparuara'", + "Continue" : "Vazhdo", "Advanced" : "E përparuar", "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Njoftim:</b> moduli PHP LDAP nuk është instaluar, motori nuk do të funksionojë.Kontaktoni me administratorin e sistemit.", "Connection Settings" : "Të dhënat e lidhjes", diff --git a/apps/user_ldap/l10n/uk.js b/apps/user_ldap/l10n/uk.js index 538061db520..0b8e8946e0f 100644 --- a/apps/user_ldap/l10n/uk.js +++ b/apps/user_ldap/l10n/uk.js @@ -76,6 +76,7 @@ OC.L10N.register( "Saving" : "Збереження", "Back" : "Назад", "Continue" : "Продовжити", + "LDAP" : "LDAP", "Expert" : "Експерт", "Advanced" : "Додатково", "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Попередження:</b> Застосунки user_ldap та user_webdavauth не сумісні. Ви можете зіткнутися з несподіваною поведінкою. Будь ласка, зверніться до системного адміністратора, щоб відключити одну з них.", diff --git a/apps/user_ldap/l10n/uk.json b/apps/user_ldap/l10n/uk.json index f0b439ac979..9fb1ce119fb 100644 --- a/apps/user_ldap/l10n/uk.json +++ b/apps/user_ldap/l10n/uk.json @@ -74,6 +74,7 @@ "Saving" : "Збереження", "Back" : "Назад", "Continue" : "Продовжити", + "LDAP" : "LDAP", "Expert" : "Експерт", "Advanced" : "Додатково", "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Попередження:</b> Застосунки user_ldap та user_webdavauth не сумісні. Ви можете зіткнутися з несподіваною поведінкою. Будь ласка, зверніться до системного адміністратора, щоб відключити одну з них.", diff --git a/apps/user_ldap/l10n/ur.php b/apps/user_ldap/l10n/ur.php deleted file mode 100644 index c29e4dba209..00000000000 --- a/apps/user_ldap/l10n/ur.php +++ /dev/null @@ -1,7 +0,0 @@ -<?php -$TRANSLATIONS = array( -"Error" => "خرابی", -"_%s group found_::_%s groups found_" => array("",""), -"_%s user found_::_%s users found_" => array("","") -); -$PLURAL_FORMS = "nplurals=2; plural=(n != 1);"; diff --git a/apps/user_ldap/lib/access.php b/apps/user_ldap/lib/access.php index 12c6f8118d3..6f28a87d30c 100644 --- a/apps/user_ldap/lib/access.php +++ b/apps/user_ldap/lib/access.php @@ -813,7 +813,7 @@ class Access extends LDAPUtility implements user\IUserTools { } //check whether paged search should be attempted - $pagedSearchOK = $this->initPagedSearch($filter, $base, $attr, $limit, $offset); + $pagedSearchOK = $this->initPagedSearch($filter, $base, $attr, intval($limit), $offset); $linkResources = array_pad(array(), count($base), $cr); $sr = $this->ldap->search($linkResources, $base, $filter, $attr); @@ -887,8 +887,9 @@ class Access extends LDAPUtility implements user\IUserTools { private function count($filter, $base, $attr = null, $limit = null, $offset = null, $skipHandling = false) { \OCP\Util::writeLog('user_ldap', 'Count filter: '.print_r($filter, true), \OCP\Util::DEBUG); - if(is_null($limit) || $limit <= 0) { - $limit = intval($this->connection->ldapPagingSize); + $limitPerPage = intval($this->connection->ldapPagingSize); + if(!is_null($limit) && $limit < $limitPerPage && $limit > 0) { + $limitPerPage = $limit; } $counter = 0; @@ -898,19 +899,19 @@ class Access extends LDAPUtility implements user\IUserTools { do { $continue = false; $search = $this->executeSearch($filter, $base, $attr, - $limit, $offset); + $limitPerPage, $offset); if($search === false) { return $counter > 0 ? $counter : false; } list($sr, $pagedSearchOK) = $search; - $count = $this->countEntriesInSearchResults($sr, $limit, $continue); + $count = $this->countEntriesInSearchResults($sr, $limitPerPage, $continue); $counter += $count; - $this->processPagedSearchStatus($sr, $filter, $base, $count, $limit, + $this->processPagedSearchStatus($sr, $filter, $base, $count, $limitPerPage, $offset, $pagedSearchOK, $skipHandling); - $offset += $limit; - } while($continue); + $offset += $limitPerPage; + } while($continue && (is_null($limit) || $limit <= 0 || $limit > $counter)); return $counter; } @@ -928,7 +929,7 @@ class Access extends LDAPUtility implements user\IUserTools { foreach($searchResults as $res) { $count = intval($this->ldap->countEntries($cr, $res)); $counter += $count; - if($count === $limit) { + if($count > 0 && $count === $limit) { $hasHitLimit = true; } } @@ -1168,6 +1169,19 @@ class Access extends LDAPUtility implements user\IUserTools { } /** + * returns the filter used for counting users + * @return string + */ + public function getFilterForUserCount() { + $filter = $this->combineFilterWithAnd(array( + $this->connection->ldapUserFilter, + $this->connection->ldapUserDisplayName . '=*' + )); + + return $filter; + } + + /** * @param string $name * @param string $password * @return bool @@ -1457,7 +1471,7 @@ class Access extends LDAPUtility implements user\IUserTools { */ private function initPagedSearch($filter, $bases, $attr, $limit, $offset) { $pagedSearchOK = false; - if($this->connection->hasPagedResultSupport && !is_null($limit)) { + if($this->connection->hasPagedResultSupport && ($limit !== 0)) { $offset = intval($offset); //can be null \OCP\Util::writeLog('user_ldap', 'initializing paged search for Filter '.$filter.' base '.print_r($bases, true) diff --git a/apps/user_ldap/lib/wizard.php b/apps/user_ldap/lib/wizard.php index 1d7701440e9..578a920f00e 100644 --- a/apps/user_ldap/lib/wizard.php +++ b/apps/user_ldap/lib/wizard.php @@ -56,7 +56,7 @@ class Wizard extends LDAPUtility { Wizard::$l = \OC::$server->getL10N('user_ldap'); } $this->access = $access; - $this->result = new WizardResult; + $this->result = new WizardResult(); } public function __destruct() { @@ -120,7 +120,7 @@ class Wizard extends LDAPUtility { * @throws \Exception */ public function countUsers() { - $filter = $this->configuration->ldapUserFilter; + $filter = $this->access->getFilterForUserCount(); $usersTotal = $this->countEntries($filter, 'users'); $usersTotal = ($usersTotal !== false) ? $usersTotal : 0; @@ -132,9 +132,10 @@ class Wizard extends LDAPUtility { /** * counts users with a specified attribute * @param string $attr + * @param bool $existsCheck * @return int|bool */ - public function countUsersWithAttribute($attr) { + public function countUsersWithAttribute($attr, $existsCheck = false) { if(!$this->checkRequirements(array('ldapHost', 'ldapPort', 'ldapBase', @@ -148,7 +149,51 @@ class Wizard extends LDAPUtility { $attr . '=*' )); - return $this->access->countUsers($filter); + $limit = ($existsCheck === false) ? null : 1; + + return $this->access->countUsers($filter, array('dn'), $limit); + } + + /** + * detects the display name attribute. If a setting is already present that + * returns at least one hit, the detection will be canceled. + * @return WizardResult|bool + * @throws \Exception + */ + public function detectUserDisplayNameAttribute() { + if(!$this->checkRequirements(array('ldapHost', + 'ldapPort', + 'ldapBase', + 'ldapUserFilter', + ))) { + return false; + } + + $attr = $this->configuration->ldapUserDisplayName; + if($attr !== 'displayName' && !empty($attr)) { + // most likely not the default value with upper case N, + // verify it still produces a result + $count = intval($this->countUsersWithAttribute($attr, true)); + if($count > 0) { + //no change, but we sent it back to make sure the user interface + //is still correct, even if the ajax call was cancelled inbetween + $this->result->addChange('ldap_display_name', $attr); + return $this->result; + } + } + + // first attribute that has at least one result wins + $displayNameAttrs = array('displayname', 'cn'); + foreach ($displayNameAttrs as $attr) { + $count = intval($this->countUsersWithAttribute($attr, true)); + + if($count > 0) { + $this->applyFind('ldap_display_name', $attr); + return $this->result; + } + }; + + throw new \Exception(self::$l->t('Could not detect user display name attribute. Please specify it yourself in advanced ldap settings.')); } /** @@ -168,7 +213,7 @@ class Wizard extends LDAPUtility { $attr = $this->configuration->ldapEmailAttribute; if(!empty($attr)) { - $count = intval($this->countUsersWithAttribute($attr)); + $count = intval($this->countUsersWithAttribute($attr, true)); if($count > 0) { return false; } @@ -189,7 +234,7 @@ class Wizard extends LDAPUtility { } if($winner !== '') { - $this->result->addChange('ldap_email_attr', $winner); + $this->applyFind('ldap_email_attr', $winner); if($writeLog) { \OCP\Util::writeLog('user_ldap', 'The mail attribute has ' . 'automatically been reset, because the original value ' . diff --git a/apps/user_ldap/settings.php b/apps/user_ldap/settings.php index ca61a53b196..3b448aec757 100644 --- a/apps/user_ldap/settings.php +++ b/apps/user_ldap/settings.php @@ -28,9 +28,9 @@ OC_Util::checkAdminUser(); OCP\Util::addScript('user_ldap', 'ldapFilter'); OCP\Util::addScript('user_ldap', 'experiencedAdmin'); OCP\Util::addScript('user_ldap', 'settings'); -OCP\Util::addScript('core', 'jquery.multiselect'); +\OC_Util::addVendorScript('user_ldap', 'ui-multiselect/src/jquery.multiselect'); OCP\Util::addStyle('user_ldap', 'settings'); -OCP\Util::addStyle('core', 'jquery.multiselect'); +\OC_Util::addVendorStyle('user_ldap', 'ui-multiselect/jquery.multiselect'); OCP\Util::addStyle('core', 'jquery-ui-1.10.0.custom'); // fill template diff --git a/apps/user_ldap/tests/access.php b/apps/user_ldap/tests/access.php index 8ff39800808..85849229152 100644 --- a/apps/user_ldap/tests/access.php +++ b/apps/user_ldap/tests/access.php @@ -26,7 +26,7 @@ use \OCA\user_ldap\lib\Access; use \OCA\user_ldap\lib\Connection; use \OCA\user_ldap\lib\ILDAPWrapper; -class Test_Access extends \PHPUnit_Framework_TestCase { +class Test_Access extends \Test\TestCase { private function getConnecterAndLdapMock() { static $conMethods; static $accMethods; diff --git a/apps/user_ldap/tests/connection.php b/apps/user_ldap/tests/connection.php index f51b0c83017..e3f29cec982 100644 --- a/apps/user_ldap/tests/connection.php +++ b/apps/user_ldap/tests/connection.php @@ -22,7 +22,7 @@ namespace OCA\user_ldap\tests; -class Test_Connection extends \PHPUnit_Framework_TestCase { +class Test_Connection extends \Test\TestCase { public function testOriginalAgentUnchangedOnClone() { //background: upon login a bind is done with the user credentials diff --git a/apps/user_ldap/tests/group_ldap.php b/apps/user_ldap/tests/group_ldap.php index d1262e4f5b8..0e01eb3ba6f 100644 --- a/apps/user_ldap/tests/group_ldap.php +++ b/apps/user_ldap/tests/group_ldap.php @@ -22,14 +22,12 @@ namespace OCA\user_ldap\tests; -namespace OCA\user_ldap\tests; - use \OCA\user_ldap\GROUP_LDAP as GroupLDAP; use \OCA\user_ldap\lib\Access; use \OCA\user_ldap\lib\Connection; use \OCA\user_ldap\lib\ILDAPWrapper; -class Test_Group_Ldap extends \PHPUnit_Framework_TestCase { +class Test_Group_Ldap extends \Test\TestCase { private function getAccessMock() { static $conMethods; static $accMethods; diff --git a/apps/user_ldap/tests/helper.php b/apps/user_ldap/tests/helper.php index 07c24d64499..a70a57051c8 100644 --- a/apps/user_ldap/tests/helper.php +++ b/apps/user_ldap/tests/helper.php @@ -11,7 +11,7 @@ namespace OCA\user_ldap\tests; use OCA\user_ldap\lib\Helper; -class Test_Helper extends \PHPUnit_Framework_TestCase { +class Test_Helper extends \Test\TestCase { public function testTableTruncate() { diff --git a/apps/user_ldap/tests/user/manager.php b/apps/user_ldap/tests/user/manager.php index 7d687867213..b3e52084dba 100644 --- a/apps/user_ldap/tests/user/manager.php +++ b/apps/user_ldap/tests/user/manager.php @@ -24,7 +24,7 @@ namespace OCA\user_ldap\tests; use OCA\user_ldap\lib\user\Manager; -class Test_User_Manager extends \PHPUnit_Framework_TestCase { +class Test_User_Manager extends \Test\TestCase { private function getTestInstances() { $access = $this->getMock('\OCA\user_ldap\lib\user\IUserTools'); diff --git a/apps/user_ldap/tests/user/user.php b/apps/user_ldap/tests/user/user.php index b66a9237266..e110921d2d3 100644 --- a/apps/user_ldap/tests/user/user.php +++ b/apps/user_ldap/tests/user/user.php @@ -24,7 +24,7 @@ namespace OCA\user_ldap\tests; use OCA\user_ldap\lib\user\User; -class Test_User_User extends \PHPUnit_Framework_TestCase { +class Test_User_User extends \Test\TestCase { private function getTestInstances() { $access = $this->getMock('\OCA\user_ldap\lib\user\IUserTools'); diff --git a/apps/user_ldap/tests/user_ldap.php b/apps/user_ldap/tests/user_ldap.php index e51f6cb5bb9..33cec0247b6 100644 --- a/apps/user_ldap/tests/user_ldap.php +++ b/apps/user_ldap/tests/user_ldap.php @@ -27,11 +27,13 @@ use \OCA\user_ldap\lib\Access; use \OCA\user_ldap\lib\Connection; use \OCA\user_ldap\lib\ILDAPWrapper; -class Test_User_Ldap_Direct extends \PHPUnit_Framework_TestCase { +class Test_User_Ldap_Direct extends \Test\TestCase { protected $backend; protected $access; - public function setUp() { + protected function setUp() { + parent::setUp(); + \OC_User::clearBackends(); \OC_Group::clearBackends(); } @@ -98,9 +100,10 @@ class Test_User_Ldap_Direct extends \PHPUnit_Framework_TestCase { /** * Prepares the Access mock for checkPassword tests * @param \OCA\user_ldap\lib\Access $access mock + * @param bool noDisplayName * @return void */ - private function prepareAccessForCheckPassword(&$access) { + private function prepareAccessForCheckPassword(&$access, $noDisplayName = false) { $access->expects($this->once()) ->method('escapeFilterPart') ->will($this->returnCallback(function($uid) { @@ -125,10 +128,14 @@ class Test_User_Ldap_Direct extends \PHPUnit_Framework_TestCase { return array(); })); + $retVal = 'gunslinger'; + if($noDisplayName === true) { + $retVal = false; + } $access->expects($this->any()) ->method('dn2username') ->with($this->equalTo('dnOfRoland,dc=test')) - ->will($this->returnValue('gunslinger')); + ->will($this->returnValue($retVal)); $access->expects($this->any()) ->method('stringResemblesDN') @@ -178,6 +185,21 @@ class Test_User_Ldap_Direct extends \PHPUnit_Framework_TestCase { $this->assertFalse($result); } + public function testCheckPasswordNoDisplayName() { + $access = $this->getAccessMock(); + + $this->prepareAccessForCheckPassword($access, true); + $access->expects($this->once()) + ->method('username2dn') + ->will($this->returnValue(false)); + + $backend = new UserLDAP($access); + \OC_User::useBackend($backend); + + $result = $backend->checkPassword('roland', 'dt19'); + $this->assertFalse($result); + } + public function testCheckPasswordPublicAPI() { $access = $this->getAccessMock(); $this->prepareAccessForCheckPassword($access); @@ -530,23 +552,9 @@ class Test_User_Ldap_Direct extends \PHPUnit_Framework_TestCase { public function testCountUsers() { $access = $this->getAccessMock(); - $access->connection->expects($this->once()) - ->method('__get') - ->will($this->returnCallback(function($name) { - if($name === 'ldapLoginFilter') { - return 'uid=%uid'; - } - return null; - })); - $access->expects($this->once()) ->method('countUsers') - ->will($this->returnCallback(function($filter, $a, $b, $c) { - if($filter !== 'uid=*') { - return false; - } - return 5; - })); + ->will($this->returnValue(5)); $backend = new UserLDAP($access); @@ -557,23 +565,9 @@ class Test_User_Ldap_Direct extends \PHPUnit_Framework_TestCase { public function testCountUsersFailing() { $access = $this->getAccessMock(); - $access->connection->expects($this->once()) - ->method('__get') - ->will($this->returnCallback(function($name) { - if($name === 'ldapLoginFilter') { - return 'invalidFilter'; - } - return null; - })); - $access->expects($this->once()) ->method('countUsers') - ->will($this->returnCallback(function($filter, $a, $b, $c) { - if($filter !== 'uid=*') { - return false; - } - return 5; - })); + ->will($this->returnValue(false)); $backend = new UserLDAP($access); diff --git a/apps/user_ldap/tests/wizard.php b/apps/user_ldap/tests/wizard.php index 1f420f9ee8a..7284e466536 100644 --- a/apps/user_ldap/tests/wizard.php +++ b/apps/user_ldap/tests/wizard.php @@ -29,8 +29,9 @@ use \OCA\user_ldap\lib\Wizard; // use \OCA\user_ldap\lib\Configuration; // use \OCA\user_ldap\lib\ILDAPWrapper; -class Test_Wizard extends \PHPUnit_Framework_TestCase { - public function setUp() { +class Test_Wizard extends \Test\TestCase { + protected function setUp() { + parent::setUp(); //we need to make sure the consts are defined, otherwise tests will fail //on systems without php5_ldap $ldapConsts = array('LDAP_OPT_PROTOCOL_VERSION', diff --git a/apps/user_ldap/user_ldap.php b/apps/user_ldap/user_ldap.php index ae4dfec5118..c2f87ebeb22 100644 --- a/apps/user_ldap/user_ldap.php +++ b/apps/user_ldap/user_ldap.php @@ -64,8 +64,14 @@ class USER_LDAP extends BackendUtility implements \OCP\UserInterface { return false; } $dn = $ldap_users[0]; - $user = $this->access->userManager->get($dn); + if(is_null($user)) { + \OCP\Util::writeLog('user_ldap', + 'LDAP Login: Could not get user object for DN ' . $dn . + '. Maybe the LDAP entry has no set display name attribute?', + \OCP\Util::WARN); + return false; + } if($user->getUsername() !== false) { //are the credentials OK? if(!$this->access->areCredentialsValid($dn, $password)) { @@ -284,8 +290,7 @@ class USER_LDAP extends BackendUtility implements \OCP\UserInterface { * @return int|bool */ public function countUsers() { - $filter = \OCP\Util::mb_str_replace( - '%uid', '*', $this->access->connection->ldapLoginFilter, 'UTF-8'); + $filter = $this->access->getFilterForUserCount(); $entries = $this->access->countUsers($filter); return $entries; } diff --git a/apps/user_ldap/vendor/ui-multiselect/MIT-LICENSE b/apps/user_ldap/vendor/ui-multiselect/MIT-LICENSE new file mode 100644 index 00000000000..2dc8e79e3ad --- /dev/null +++ b/apps/user_ldap/vendor/ui-multiselect/MIT-LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2011 Eric Hynds + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/core/css/jquery.multiselect.css b/apps/user_ldap/vendor/ui-multiselect/jquery.multiselect.css index 9b81c3bdcfb..9b81c3bdcfb 100644 --- a/core/css/jquery.multiselect.css +++ b/apps/user_ldap/vendor/ui-multiselect/jquery.multiselect.css diff --git a/core/js/jquery.multiselect.js b/apps/user_ldap/vendor/ui-multiselect/src/jquery.multiselect.js index 16ae4264177..16ae4264177 100644 --- a/core/js/jquery.multiselect.js +++ b/apps/user_ldap/vendor/ui-multiselect/src/jquery.multiselect.js diff --git a/apps/user_webdavauth/l10n/id.js b/apps/user_webdavauth/l10n/id.js index a7902dbf3b2..d71da240e27 100644 --- a/apps/user_webdavauth/l10n/id.js +++ b/apps/user_webdavauth/l10n/id.js @@ -2,7 +2,8 @@ OC.L10N.register( "user_webdavauth", { "WebDAV Authentication" : "Otentikasi WebDAV", + "Address:" : "Alamat:", "Save" : "Simpan", - "The user credentials will be sent to this address. This plugin checks the response and will interpret the HTTP statuscodes 401 and 403 as invalid credentials, and all other responses as valid credentials." : "Kredensial pengguna akan dikirim ke alamat ini. Pengaya ini memeriksa respon dan akan menafsirkan kode status HTTP 401 dan 403 sebagai kredensial yang tidak valid, dan semua tanggapan lain akan dianggap sebagai kredensial yang valid." + "The user credentials will be sent to this address. This plugin checks the response and will interpret the HTTP statuscodes 401 and 403 as invalid credentials, and all other responses as valid credentials." : "Kredensial pengguna akan dikirim ke alamat ini. Pengaya ini memeriksa respon dan akan mengartikan kode status HTTP 401 dan 403 sebagai kredensial yang tidak valid, dan semua tanggapan lain akan dianggap sebagai kredensial yang valid." }, "nplurals=1; plural=0;"); diff --git a/apps/user_webdavauth/l10n/id.json b/apps/user_webdavauth/l10n/id.json index 88638eb47c6..ba327c72dda 100644 --- a/apps/user_webdavauth/l10n/id.json +++ b/apps/user_webdavauth/l10n/id.json @@ -1,6 +1,7 @@ { "translations": { "WebDAV Authentication" : "Otentikasi WebDAV", + "Address:" : "Alamat:", "Save" : "Simpan", - "The user credentials will be sent to this address. This plugin checks the response and will interpret the HTTP statuscodes 401 and 403 as invalid credentials, and all other responses as valid credentials." : "Kredensial pengguna akan dikirim ke alamat ini. Pengaya ini memeriksa respon dan akan menafsirkan kode status HTTP 401 dan 403 sebagai kredensial yang tidak valid, dan semua tanggapan lain akan dianggap sebagai kredensial yang valid." + "The user credentials will be sent to this address. This plugin checks the response and will interpret the HTTP statuscodes 401 and 403 as invalid credentials, and all other responses as valid credentials." : "Kredensial pengguna akan dikirim ke alamat ini. Pengaya ini memeriksa respon dan akan mengartikan kode status HTTP 401 dan 403 sebagai kredensial yang tidak valid, dan semua tanggapan lain akan dianggap sebagai kredensial yang valid." },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/user_webdavauth/l10n/sk.php b/apps/user_webdavauth/l10n/sk.php deleted file mode 100644 index 9efe9fe6549..00000000000 --- a/apps/user_webdavauth/l10n/sk.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php -$TRANSLATIONS = array( -"Save" => "Uložiť" -); -$PLURAL_FORMS = "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"; diff --git a/autotest.sh b/autotest.sh index 8edb5f3915a..83a20699d01 100755 --- a/autotest.sh +++ b/autotest.sh @@ -40,7 +40,7 @@ if ! [ $PHPUNIT_MAJOR_VERSION -gt 3 -o \( $PHPUNIT_MAJOR_VERSION -eq 3 -a $PHPUN exit 4 fi -if ! [ -w config -a -w config/config.php ]; then +if ! [ \( -w config -a ! -f config/config.php \) -o \( -f config/config.php -a -w config/config.php \) ]; then echo "Please enable write permissions on config and config/config.php" >&2 exit 1 fi diff --git a/buildjsdocs.sh b/buildjsdocs.sh new file mode 100755 index 00000000000..ef18dc8c9a9 --- /dev/null +++ b/buildjsdocs.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# +# ownCloud +# +# Run JS tests +# +# @author Vincent Petry +# @copyright 2014 Vincent Petry <pvince81@owncloud.com> +# +NPM="$(which npm 2>/dev/null)" +PREFIX="build" +OUTPUT_DIR="build/jsdocs" + +JS_FILES="core/js/*.js apps/*/js/*.js" + +if test -z "$NPM" +then + echo 'Node JS >= 0.8 is required to build the documentation' >&2 + exit 1 +fi + +# update/install test packages +mkdir -p "$PREFIX" && $NPM install --link --prefix "$PREFIX" jsdoc || exit 3 + +JSDOC_BIN="$(which jsdoc 2>/dev/null)" + +# If not installed globally, try local version +if test -z "$JSDOC_BIN" +then + JSDOC_BIN="$PREFIX/node_modules/jsdoc/jsdoc.js" +fi + +if test -z "$JSDOC_BIN" +then + echo 'jsdoc executable not found' >&2 + exit 2 +fi + +mkdir -p "$OUTPUT_DIR" + +NODE_PATH="$PREFIX/node_modules" $JSDOC_BIN -d "$OUTPUT_DIR" $JS_FILES + diff --git a/config/config.sample.php b/config/config.sample.php index 59f892d133b..2a9b43d5690 100644 --- a/config/config.sample.php +++ b/config/config.sample.php @@ -71,7 +71,7 @@ $CONFIG = array( 'trusted_domains' => array ( 'demo.example.org', - 'otherdomain.example.org:8080', + 'otherdomain.example.org', ), @@ -134,6 +134,12 @@ $CONFIG = array( ), /** + * sqlite3 journal mode can be specified using this config parameter - can be 'WAL' or 'DELETE' + * see for more details https://www.sqlite.org/wal.html + */ +'sqlite.journal_mode' => 'DELETE', + +/** * Indicates whether the ownCloud instance was installed successfully; ``true`` * indicates a successful installation, and ``false`` indicates an unsuccessful * installation. @@ -617,7 +623,7 @@ $CONFIG = array( * concerns: * * - OC\Preview\Illustrator - * - OC\Preview\Movies + * - OC\Preview\Movie * - OC\Preview\MSOffice2003 * - OC\Preview\MSOffice2007 * - OC\Preview\MSOfficeDoc @@ -672,6 +678,12 @@ $CONFIG = array( 'forcessl' => false, /** + * Change this to ``true`` to require HTTPS connections also for all subdomains. + * Works only together when `forcessl` is set to true. + */ +'forceSSLforSubdomains' => false, + +/** * Extra SSL options to be used for configuration. */ 'openssl' => array( diff --git a/core/application.php b/core/application.php index 33801847758..c36ab559c27 100644 --- a/core/application.php +++ b/core/application.php @@ -10,13 +10,22 @@ namespace OC\Core; +use OC\AppFramework\Utility\SimpleContainer; use \OCP\AppFramework\App; use OC\Core\LostPassword\Controller\LostController; use OC\Core\User\UserController; +use \OCP\Util; +/** + * Class Application + * + * @package OC\Core + */ class Application extends App { - + /** + * @param array $urlParams + */ public function __construct(array $urlParams=array()){ parent::__construct('core', $urlParams); @@ -25,29 +34,56 @@ class Application extends App { /** * Controllers */ - $container->registerService('LostController', function($c) { + $container->registerService('LostController', function(SimpleContainer $c) { return new LostController( $c->query('AppName'), $c->query('Request'), - $c->query('ServerContainer')->getURLGenerator(), - $c->query('ServerContainer')->getUserManager(), - new \OC_Defaults(), - $c->query('ServerContainer')->getL10N('core'), - $c->query('ServerContainer')->getConfig(), - $c->query('ServerContainer')->getUserSession(), - \OCP\Util::getDefaultEmailAddress('lostpassword-noreply'), - \OC_App::isEnabled('files_encryption') + $c->query('URLGenerator'), + $c->query('UserManager'), + $c->query('Defaults'), + $c->query('L10N'), + $c->query('Config'), + $c->query('SecureRandom'), + $c->query('DefaultEmailAddress'), + $c->query('IsEncryptionEnabled') ); }); - $container->registerService('UserController', function($c) { + $container->registerService('UserController', function(SimpleContainer $c) { return new UserController( $c->query('AppName'), $c->query('Request'), - $c->query('ServerContainer')->getUserManager(), - new \OC_Defaults() + $c->query('UserManager'), + $c->query('Defaults') ); }); - } + /** + * Core class wrappers + */ + $container->registerService('IsEncryptionEnabled', function() { + return \OC_App::isEnabled('files_encryption'); + }); + $container->registerService('URLGenerator', function(SimpleContainer $c) { + return $c->query('ServerContainer')->getURLGenerator(); + }); + $container->registerService('UserManager', function(SimpleContainer $c) { + return $c->query('ServerContainer')->getUserManager(); + }); + $container->registerService('Config', function(SimpleContainer $c) { + return $c->query('ServerContainer')->getConfig(); + }); + $container->registerService('L10N', function(SimpleContainer $c) { + return $c->query('ServerContainer')->getL10N('core'); + }); + $container->registerService('SecureRandom', function(SimpleContainer $c) { + return $c->query('ServerContainer')->getSecureRandom(); + }); + $container->registerService('Defaults', function() { + return new \OC_Defaults; + }); + $container->registerService('DefaultEmailAddress', function() { + return Util::getDefaultEmailAddress('lostpassword-noreply'); + }); + } } diff --git a/core/command/db/converttype.php b/core/command/db/converttype.php index 2188b1135bb..617910b3a90 100644 --- a/core/command/db/converttype.php +++ b/core/command/db/converttype.php @@ -10,7 +10,7 @@ namespace OC\Core\Command\Db; -use OC\Config; +use \OCP\IConfig; use OC\DB\Connection; use OC\DB\ConnectionFactory; @@ -22,7 +22,7 @@ use Symfony\Component\Console\Output\OutputInterface; class ConvertType extends Command { /** - * @var \OC\Config + * @var \OCP\IConfig */ protected $config; @@ -32,10 +32,10 @@ class ConvertType extends Command { protected $connectionFactory; /** - * @param \OC\Config $config + * @param \OCP\IConfig $config * @param \OC\DB\ConnectionFactory $connectionFactory */ - public function __construct(Config $config, ConnectionFactory $connectionFactory) { + public function __construct(IConfig $config, ConnectionFactory $connectionFactory) { $this->config = $config; $this->connectionFactory = $connectionFactory; parent::__construct(); @@ -104,7 +104,7 @@ class ConvertType extends Command { 'Converting to Microsoft SQL Server (mssql) is currently not supported.' ); } - if ($type === $this->config->getValue('dbtype', '')) { + if ($type === $this->config->getSystemValue('dbtype', '')) { throw new \InvalidArgumentException(sprintf( 'Can not convert from %1$s to %1$s.', $type @@ -209,7 +209,7 @@ class ConvertType extends Command { 'user' => $input->getArgument('username'), 'password' => $input->getOption('password'), 'dbname' => $input->getArgument('database'), - 'tablePrefix' => $this->config->getValue('dbtableprefix', 'oc_'), + 'tablePrefix' => $this->config->getSystemValue('dbtableprefix', 'oc_'), ); if ($input->getOption('port')) { $connectionParams['port'] = $input->getOption('port'); @@ -256,7 +256,7 @@ class ConvertType extends Command { } protected function convertDB(Connection $fromDB, Connection $toDB, array $tables, InputInterface $input, OutputInterface $output) { - $this->config->setValue('maintenance', true); + $this->config->setSystemValue('maintenance', true); try { // copy table rows foreach($tables as $table) { @@ -270,10 +270,10 @@ class ConvertType extends Command { // save new database config $this->saveDBInfo($input); } catch(\Exception $e) { - $this->config->setValue('maintenance', false); + $this->config->setSystemValue('maintenance', false); throw $e; } - $this->config->setValue('maintenance', false); + $this->config->setSystemValue('maintenance', false); } protected function saveDBInfo(InputInterface $input) { @@ -286,10 +286,10 @@ class ConvertType extends Command { $dbhost .= ':'.$input->getOption('port'); } - $this->config->setValue('dbtype', $type); - $this->config->setValue('dbname', $dbname); - $this->config->setValue('dbhost', $dbhost); - $this->config->setValue('dbuser', $username); - $this->config->setValue('dbpassword', $password); + $this->config->setSystemValue('dbtype', $type); + $this->config->setSystemValue('dbname', $dbname); + $this->config->setSystemValue('dbhost', $dbhost); + $this->config->setSystemValue('dbuser', $username); + $this->config->setSystemValue('dbpassword', $password); } } diff --git a/core/command/maintenance/mode.php b/core/command/maintenance/mode.php index f26a11384a8..f48a9d012c4 100644 --- a/core/command/maintenance/mode.php +++ b/core/command/maintenance/mode.php @@ -9,7 +9,7 @@ namespace OC\Core\Command\Maintenance; -use OC\Config; +use \OCP\IConfig; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; @@ -18,9 +18,10 @@ use Symfony\Component\Console\Output\OutputInterface; class Mode extends Command { + /** @var IConfig */ protected $config; - public function __construct(Config $config) { + public function __construct(IConfig $config) { $this->config = $config; parent::__construct(); } @@ -45,13 +46,13 @@ class Mode extends Command { protected function execute(InputInterface $input, OutputInterface $output) { if ($input->getOption('on')) { - $this->config->setValue('maintenance', true); + $this->config->setSystemValue('maintenance', true); $output->writeln('Maintenance mode enabled'); } elseif ($input->getOption('off')) { - $this->config->setValue('maintenance', false); + $this->config->setSystemValue('maintenance', false); $output->writeln('Maintenance mode disabled'); } else { - if ($this->config->getValue('maintenance', false)) { + if ($this->config->getSystemValue('maintenance', false)) { $output->writeln('Maintenance mode is currently enabled'); } else { $output->writeln('Maintenance mode is currently disabled'); diff --git a/core/command/maintenance/repair.php b/core/command/maintenance/repair.php index 7c0cf71d3b6..bf94b2647ce 100644 --- a/core/command/maintenance/repair.php +++ b/core/command/maintenance/repair.php @@ -17,12 +17,14 @@ class Repair extends Command { * @var \OC\Repair $repair */ protected $repair; + /** @var \OCP\IConfig */ + protected $config; /** * @param \OC\Repair $repair - * @param \OC\Config $config + * @param \OCP\IConfig $config */ - public function __construct(\OC\Repair $repair, \OC\Config $config) { + public function __construct(\OC\Repair $repair, \OCP\IConfig $config) { $this->repair = $repair; $this->config = $config; parent::__construct(); @@ -35,8 +37,8 @@ class Repair extends Command { } protected function execute(InputInterface $input, OutputInterface $output) { - $maintenanceMode = $this->config->getValue('maintenance', false); - $this->config->setValue('maintenance', true); + $maintenanceMode = $this->config->getSystemValue('maintenance', false); + $this->config->setSystemValue('maintenance', true); $this->repair->listen('\OC\Repair', 'step', function ($description) use ($output) { $output->writeln(' - ' . $description); @@ -50,6 +52,6 @@ class Repair extends Command { $this->repair->run(); - $this->config->setValue('maintenance', $maintenanceMode); + $this->config->setSystemValue('maintenance', $maintenanceMode); } } diff --git a/core/css/apps.css b/core/css/apps.css index ce2e15595af..e5cf6201688 100644 --- a/core/css/apps.css +++ b/core/css/apps.css @@ -55,6 +55,7 @@ } #app-navigation li:hover > a, +#app-navigation li:focus > a, #app-navigation .selected, #app-navigation .selected a { background-color: #ddd; @@ -96,10 +97,12 @@ outline: none !important; box-shadow: none; } -#app-navigation .collapsible:hover > a { +#app-navigation .collapsible:hover > a, +#app-navigation .collapsible:focus > a { background-image: none; } -#app-navigation .collapsible:hover > .collapse { +#app-navigation .collapsible:hover > .collapse, +#app-navigation .collapsible:focus > .collapse { display: block; } @@ -139,7 +142,8 @@ background-image: -ms-linear-gradient(top, rgb(238,238,238) 0%, rgb(245,245,245) 100%); } -#app-navigation > ul .collapsible.open:hover { +#app-navigation > ul .collapsible.open:hover, +#app-navigation > ul .collapsible.open:focus { box-shadow: inset 0 0 3px #ddd; } @@ -179,7 +183,8 @@ opacity: .5; } - #app-navigation .app-navigation-entry-deleted-button:hover { + #app-navigation .app-navigation-entry-deleted-button:hover, + #app-navigation .app-navigation-entry-deleted-button:focus { opacity: 1; } diff --git a/core/css/header.css b/core/css/header.css index 33eb7e25cc6..026240ea1b0 100644 --- a/core/css/header.css +++ b/core/css/header.css @@ -48,6 +48,9 @@ height: 120px; margin: 0 auto; } +#header .logo h1 { + display: none; +} #header .logo-wide { background-image: url(../img/logo-wide.svg); diff --git a/core/css/styles.css b/core/css/styles.css index 9604cb0fa4a..2859399b59e 100644 --- a/core/css/styles.css +++ b/core/css/styles.css @@ -353,6 +353,12 @@ input[type="submit"].enabled { filter: alpha(opacity=60); opacity: .6; } +/* overrides another !important statement that sets this to unreadable black */ +#body-login form .warning input[type="checkbox"]:hover+label, +#body-login form .warning input[type="checkbox"]:focus+label, +#body-login form .warning input[type="checkbox"]+label { + color: #fff !important; +} #body-login .update h2 { font-size: 20px; @@ -731,12 +737,44 @@ label.infield { margin-left: 1em; } -tr .action:not(.permanent), .selectedActions a { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter:alpha(opacity=0); opacity:0; } -tr:hover .action, tr .action.permanent, .selectedActions a { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; filter:alpha(opacity=50); opacity:.5; } -tr .action { width:16px; height:16px; } -.header-action { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; filter:alpha(opacity=80); opacity:.8; } -tr:hover .action:hover, .selectedActions a:hover, .header-action:hover { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; filter:alpha(opacity=100); opacity:1; } -tbody tr:hover, tr:active { background-color:#f8f8f8; } +tr .action:not(.permanent), +.selectedActions a { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + opacity: 0; +} +tr:hover .action, +tr:focus .action, +tr .action.permanent, +.selectedActions a { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50); + opacity: .5; +} +tr .action { + width: 16px; + height: 16px; +} +.header-action { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80); + opacity: .8; +} +tr:hover .action:hover, +tr:focus .action:focus, +.selectedActions a:hover, +.selectedActions a:focus, +.header-action:hover, +.header-action:focus { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; + filter: alpha(opacity=100); + opacity: 1; +} +tbody tr:hover, +tbody tr:focus, +tbody tr:active { + background-color: #f8f8f8; +} code { font-family:"Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", monospace; } diff --git a/core/js/config.js b/core/js/config.js index 52d1c3aee25..b034b7e8cd3 100644 --- a/core/js/config.js +++ b/core/js/config.js @@ -4,6 +4,9 @@ * See the COPYING-README file. */ +/** + * @namespace + */ OC.AppConfig={ url:OC.filePath('core','ajax','appconfig.php'), getCall:function(action,data,callback){ diff --git a/core/js/eventsource.js b/core/js/eventsource.js index 46bd9f60bb5..6f23cebb685 100644 --- a/core/js/eventsource.js +++ b/core/js/eventsource.js @@ -34,6 +34,8 @@ * Create a new event source * @param {string} src * @param {object} [data] to be send as GET + * + * @constructs OC.EventSource */ OC.EventSource=function(src,data){ var dataStr=''; @@ -92,6 +94,16 @@ OC.EventSource.prototype={ iframe:null, listeners:{},//only for fallback useFallBack:false, + /** + * Fallback callback for browsers that don't have the + * native EventSource object. + * + * Calls the registered listeners. + * + * @private + * @param {String} type event type + * @param {Object} data received data + */ fallBackCallBack:function(type,data){ var i; // ignore messages that might appear after closing @@ -111,6 +123,12 @@ OC.EventSource.prototype={ } }, lastLength:0,//for fallback + /** + * Listen to a given type of events. + * + * @param {String} type event type + * @param {Function} callback event callback + */ listen:function(type,callback){ if(callback && callback.call){ @@ -134,6 +152,9 @@ OC.EventSource.prototype={ } } }, + /** + * Closes this event source. + */ close:function(){ this.closed = true; if (typeof this.source !== 'undefined') { diff --git a/core/js/js.js b/core/js/js.js index b1a61ddf502..eb2f10b51f0 100644 --- a/core/js/js.js +++ b/core/js/js.js @@ -5,6 +5,7 @@ * To the end of config/config.php to enable debug mode. * The undefined checks fix the broken ie8 console */ + var oc_debug; var oc_webroot; @@ -57,6 +58,7 @@ function fileDownloadPath(dir, file) { return OC.filePath('files', 'ajax', 'download.php')+'?files='+encodeURIComponent(file)+'&dir='+encodeURIComponent(dir); } +/** @namespace */ var OC={ PERMISSION_CREATE:4, PERMISSION_READ:1, @@ -251,14 +253,33 @@ var OC={ }, /** - * @todo Write the documentation + * Loads translations for the given app asynchronously. + * + * @param {String} app app name + * @param {Function} callback callback to call after loading + * @return {Promise} + */ + addTranslations: function(app, callback) { + return OC.L10N.load(app, callback); + }, + + /** + * Returns the base name of the given path. + * For example for "/abc/somefile.txt" it will return "somefile.txt" + * + * @param {String} path + * @return {String} base name */ basename: function(path) { return path.replace(/\\/g,'/').replace( /.*\//, '' ); }, /** - * @todo Write the documentation + * Returns the dir name of the given path. + * For example for "/abc/somefile.txt" it will return "/abc" + * + * @param {String} path + * @return {String} dir name */ dirname: function(path) { return path.replace(/\\/g,'/').replace(/\/[^\/]*$/, ''); @@ -277,12 +298,16 @@ var OC={ }); } }, 500), + /** + * Dialog helper for jquery dialogs. + * + * @namespace OC.dialogs + */ dialogs:OCdialogs, - /** * Parses a URL query string into a JS map * @param {string} queryString query string in the format param1=1234¶m2=abcde¶m3=xyz - * @return map containing key/values matching the URL parameters + * @return {Object.<string, string>} map containing key/values matching the URL parameters */ parseQueryString:function(queryString){ var parts, @@ -334,7 +359,7 @@ var OC={ /** * Builds a URL query from a JS map. - * @param params parameter map + * @param {Object.<string, string>} params map containing key/values matching the URL parameters * @return {string} String containing a URL query (without question) mark */ buildQueryString: function(params) { @@ -454,16 +479,28 @@ var OC={ * * This is makes it possible for unit tests to * stub matchMedia (which doesn't work in PhantomJS) - * @todo Write documentation + * @private */ _matchMedia: function(media) { if (window.matchMedia) { return window.matchMedia(media); } return false; + }, + + /** + * Returns the user's locale + * + * @return {String} locale string + */ + getLocale: function() { + return $('html').prop('lang'); } }; +/** + * @namespace OC.search + */ OC.search.customResults={}; OC.search.currentResult=-1; OC.search.lastQuery=''; @@ -531,6 +568,7 @@ OC.msg={ /** * @todo Write documentation + * @namespace */ OC.Notification={ queuedNotifications: [], @@ -607,7 +645,12 @@ OC.Notification={ }; /** - * @todo Write documentation + * Breadcrumb class + * + * @namespace + * + * @deprecated will be replaced by the breadcrumb implementation + * of the files app in the future */ OC.Breadcrumb={ container:null, @@ -721,6 +764,7 @@ OC.Breadcrumb={ if(typeof localStorage !=='undefined' && localStorage !== null){ /** * User and instance aware localstorage + * @namespace */ OC.localStorage={ namespace:'oc_'+OC.currentUser+'_'+OC.webroot+'_', @@ -845,9 +889,9 @@ function object(o) { function initCore() { /** - * Set users local to moment.js as soon as possible + * Set users locale to moment.js as soon as possible */ - moment.locale($('html').prop('lang')); + moment.locale(OC.getLocale()); /** @@ -1164,6 +1208,7 @@ function relative_modified_date(timestamp) { /** * Utility functions + * @namespace */ OC.Util = { // TODO: remove original functions from global namespace @@ -1314,6 +1359,8 @@ OC.Util = { * Utility class for the history API, * includes fallback to using the URL hash when * the browser doesn't support the history API. + * + * @namespace */ OC.Util.History = { _handlers: [], @@ -1473,6 +1520,7 @@ OC.set=function(name, value) { /** * Namespace for apps + * @namespace OCA */ window.OCA = {}; diff --git a/core/js/l10n.js b/core/js/l10n.js index e375b7eca80..0c660584322 100644 --- a/core/js/l10n.js +++ b/core/js/l10n.js @@ -27,6 +27,38 @@ OC.L10N = { _pluralFunctions: {}, /** + * Load an app's translation bundle if not loaded already. + * + * @param {String} appName name of the app + * @param {Function} callback callback to be called when + * the translations are loaded + * @return {Promise} promise + */ + load: function(appName, callback) { + // already available ? + if (this._bundles[appName] || OC.getLocale() === 'en') { + var deferred = $.Deferred(); + var promise = deferred.promise(); + promise.then(callback); + deferred.resolve(); + return promise; + } + + var self = this; + var url = OC.filePath(appName, 'l10n', OC.getLocale() + '.json'); + + // load JSON translation bundle per AJAX + return $.get(url) + .then( + function(result) { + if (result.translations) { + self.register(appName, result.translations, result.pluralForm); + } + }) + .then(callback); + }, + + /** * Register an app's translation bundle. * * @param {String} appName name of the app diff --git a/core/js/lostpassword.js b/core/js/lostpassword.js index ad221cb30fc..294a9d8c1cf 100644 --- a/core/js/lostpassword.js +++ b/core/js/lostpassword.js @@ -8,19 +8,12 @@ OC.Lostpassword = { + ('<br /><input type="checkbox" id="encrypted-continue" value="Yes" />') + '<label for="encrypted-continue">' + t('core', 'I know what I\'m doing') - + '</label><br />' - + '<a id="lost-password-encryption" href>' - + t('core', 'Reset password') - + '</a>', + + '</label><br />', resetErrorMsg : t('core', 'Password can not be changed. Please contact your administrator.'), init : function() { - if ($('#lost-password-encryption').length){ - $('#lost-password-encryption').click(OC.Lostpassword.sendLink); - } else { - $('#lost-password').click(OC.Lostpassword.sendLink); - } + $('#lost-password').click(OC.Lostpassword.sendLink); $('#reset-password #submit').click(OC.Lostpassword.resetPassword); }, @@ -32,8 +25,7 @@ OC.Lostpassword = { $.post( OC.generateUrl('/lostpassword/email'), { - user : $('#user').val(), - proceed: $('#encrypted-continue').attr('checked') ? 'Yes' : 'No' + user : $('#user').val() }, OC.Lostpassword.sendLinkDone ); @@ -84,11 +76,16 @@ OC.Lostpassword = { $.post( $('#password').parents('form').attr('action'), { - password : $('#password').val() + password : $('#password').val(), + proceed: $('#encrypted-continue').attr('checked') ? 'true' : 'false' }, OC.Lostpassword.resetDone ); } + if($('#encrypted-continue').attr('checked')) { + $('#reset-password #submit').hide(); + $('#reset-password #float-spinner').removeClass('hidden'); + } }, resetDone : function(result){ @@ -115,7 +112,11 @@ OC.Lostpassword = { }, redirect : function(msg){ - window.location = OC.webroot; + if(OC.webroot !== '') { + window.location = OC.webroot; + } else { + window.location = '/'; + } }, resetError : function(msg){ @@ -126,7 +127,7 @@ OC.Lostpassword = { getResetStatusNode : function (){ if (!$('#lost-password').length){ - $('<p id="lost-password"></p>').insertAfter($('#submit')); + $('<p id="lost-password"></p>').insertBefore($('#reset-password fieldset')); } else { $('#lost-password').replaceWith($('<p id="lost-password"></p>')); } diff --git a/core/js/oc-dialogs.js b/core/js/oc-dialogs.js index bd6fd2e5007..9e5afea1a6f 100644 --- a/core/js/oc-dialogs.js +++ b/core/js/oc-dialogs.js @@ -23,6 +23,7 @@ /** * this class to ease the usage of jquery dialogs + * @lends OC.dialogs */ var OCdialogs = { // dialog button types diff --git a/core/js/oc-requesttoken.js b/core/js/oc-requesttoken.js index 02175a3d674..2f7548ecb77 100644 --- a/core/js/oc-requesttoken.js +++ b/core/js/oc-requesttoken.js @@ -1,3 +1,4 @@ $(document).on('ajaxSend',function(elm, xhr) { xhr.setRequestHeader('requesttoken', oc_requesttoken); -});
\ No newline at end of file + xhr.setRequestHeader('OCS-APIREQUEST', 'true'); +}); diff --git a/core/js/setup.js b/core/js/setup.js index 1eceb8ced70..e65b795646e 100644 --- a/core/js/setup.js +++ b/core/js/setup.js @@ -103,4 +103,18 @@ $(document).ready(function() { t('core', 'Strong password') ] }); + + // centers the database chooser if it is too wide + if($('#databaseBackend').width() > 300) { + // this somehow needs to wait 250 milliseconds + // otherwise it gets overwritten + setTimeout(function(){ + // calculate negative left margin + // half of the difference of width and default bix width of 300 + // add 10 to clear left side padding of button group + var leftMargin = (($('#databaseBackend').width() - 300) / 2 + 10 ) * -1; + + $('#databaseBackend').css('margin-left', Math.floor(leftMargin) + 'px'); + }, 250); + } }); diff --git a/core/js/snap.js b/core/js/snap.js deleted file mode 100644 index 19942e866a9..00000000000 --- a/core/js/snap.js +++ /dev/null @@ -1,785 +0,0 @@ -/*! Snap.js v2.0.0-rc1 */ -(function(win, doc) { - - 'use strict'; - - // Our export - var Namespace = 'Snap'; - - // Our main toolbelt - var utils = { - - /** - * Deeply extends two objects - * @param {Object} destination The destination object - * @param {Object} source The custom options to extend destination by - * @return {Object} The desination object - */ - extend: function(destination, source) { - var property; - for (property in source) { - if (source[property] && source[property].constructor && source[property].constructor === Object) { - destination[property] = destination[property] || {}; - utils.extend(destination[property], source[property]); - } else { - destination[property] = source[property]; - } - } - return destination; - } - }; - - /** - * Our Snap global that initializes our instance - * @param {Object} opts The custom Snap.js options - */ - var Core = function( opts ) { - - var self = this; - - /** - * Our default settings for a Snap instance - * @type {Object} - */ - var settings = self.settings = { - element: null, - dragger: null, - disable: 'none', - addBodyClasses: true, - hyperextensible: true, - resistance: 0.5, - flickThreshold: 50, - transitionSpeed: 0.3, - easing: 'ease', - maxPosition: 266, - minPosition: -266, - tapToClose: true, - touchToDrag: true, - clickToDrag: true, - slideIntent: 40, // degrees - minDragDistance: 5 - }; - - /** - * Stores internally global data - * @type {Object} - */ - var cache = self.cache = { - isDragging: false, - simpleStates: { - opening: null, - towards: null, - hyperExtending: null, - halfway: null, - flick: null, - translation: { - absolute: 0, - relative: 0, - sinceDirectionChange: 0, - percentage: 0 - } - } - }; - - var eventList = self.eventList = {}; - - utils.extend(utils, { - - /** - * Determines if we are interacting with a touch device - * @type {Boolean} - */ - hasTouch: ('ontouchstart' in doc.documentElement || win.navigator.msPointerEnabled), - - /** - * Returns the appropriate event type based on whether we are a touch device or not - * @param {String} action The "action" event you're looking for: up, down, move, out - * @return {String} The browsers supported event name - */ - eventType: function(action) { - var eventTypes = { - down: (utils.hasTouch ? 'touchstart' : settings.clickToDrag ? 'mousedown' : ''), - move: (utils.hasTouch ? 'touchmove' : settings.clickToDrag ? 'mousemove' : ''), - up: (utils.hasTouch ? 'touchend' : settings.clickToDrag ? 'mouseup': ''), - out: (utils.hasTouch ? 'touchcancel' : settings.clickToDrag ? 'mouseout' : '') - }; - return eventTypes[action]; - }, - - /** - * Returns the correct "cursor" position on both browser and mobile - * @param {String} t The coordinate to retrieve, either "X" or "Y" - * @param {Object} e The event object being triggered - * @return {Number} The desired coordiante for the events interaction - */ - page: function(t, e){ - return (utils.hasTouch && e.touches.length && e.touches[0]) ? e.touches[0]['page'+t] : e['page'+t]; - }, - - - klass: { - - /** - * Checks if an element has a class name - * @param {Object} el The element to check - * @param {String} name The class name to search for - * @return {Boolean} Returns true if the class exists - */ - has: function(el, name){ - return (el.className).indexOf(name) !== -1; - }, - - /** - * Adds a class name to an element - * @param {Object} el The element to add to - * @param {String} name The class name to add - */ - add: function(el, name){ - if(!utils.klass.has(el, name) && settings.addBodyClasses){ - el.className += " "+name; - } - }, - - /** - * Removes a class name - * @param {Object} el The element to remove from - * @param {String} name The class name to remove - */ - remove: function(el, name){ - if(utils.klass.has(el, name) && settings.addBodyClasses){ - el.className = (el.className).replace(name, "").replace(/^\s+|\s+$/g, ''); - } - } - }, - - /** - * Dispatch a custom Snap.js event - * @param {String} type The event name - */ - dispatchEvent: function(type) { - if( typeof eventList[type] === 'function') { - return eventList[type].apply(); - } - }, - - /** - * Determines the browsers vendor prefix for CSS3 - * @return {String} The browsers vendor prefix - */ - vendor: function(){ - var tmp = doc.createElement("div"), - prefixes = 'webkit Moz O ms'.split(' '), - i; - for (i in prefixes) { - if (typeof tmp.style[prefixes[i] + 'Transition'] !== 'undefined') { - return prefixes[i]; - } - } - }, - - /** - * Determines the browsers vendor prefix for transition callback events - * @return {String} The event name - */ - transitionCallback: function(){ - return (cache.vendor==='Moz' || cache.vendor==='ms') ? 'transitionend' : cache.vendor+'TransitionEnd'; - }, - - /** - * Determines if the users browser supports CSS3 transformations - * @return {[type]} [description] - */ - canTransform: function(){ - return typeof settings.element.style[cache.vendor+'Transform'] !== 'undefined'; - }, - - /** - * Determines an angle between two points - * @param {Number} x The X coordinate - * @param {Number} y The Y coordinate - * @return {Number} The number of degrees between the two points - */ - angleOfDrag: function(x, y) { - var degrees, theta; - // Calc Theta - theta = Math.atan2(-(cache.startDragY - y), (cache.startDragX - x)); - if (theta < 0) { - theta += 2 * Math.PI; - } - // Calc Degrees - degrees = Math.floor(theta * (180 / Math.PI) - 180); - if (degrees < 0 && degrees > -180) { - degrees = 360 - Math.abs(degrees); - } - return Math.abs(degrees); - }, - - - events: { - - /** - * Adds an event to an element - * @param {Object} element Element to add event to - * @param {String} eventName The event name - * @param {Function} func Callback function - */ - addEvent: function addEvent(element, eventName, func) { - if (element.addEventListener) { - return element.addEventListener(eventName, func, false); - } else if (element.attachEvent) { - return element.attachEvent("on" + eventName, func); - } - }, - - /** - * Removes an event to an element - * @param {Object} element Element to remove event from - * @param {String} eventName The event name - * @param {Function} func Callback function - */ - removeEvent: function addEvent(element, eventName, func) { - if (element.addEventListener) { - return element.removeEventListener(eventName, func, false); - } else if (element.attachEvent) { - return element.detachEvent("on" + eventName, func); - } - }, - - /** - * Prevents the default event - * @param {Object} e The event object - */ - prevent: function(e) { - if (e.preventDefault) { - e.preventDefault(); - } else { - e.returnValue = false; - } - } - }, - - /** - * Searches the parent element until a specified attribute has been matched - * @param {Object} el The element to search from - * @param {String} attr The attribute to search for - * @return {Object|null} Returns a matched element if it exists, else, null - */ - parentUntil: function(el, attr) { - var isStr = typeof attr === 'string'; - while (el.parentNode) { - if (isStr && el.getAttribute && el.getAttribute(attr)){ - return el; - } else if(!isStr && el === attr){ - return el; - } - el = el.parentNode; - } - return null; - } - }); - - - var action = self.action = { - - /** - * Handles translating the elements position - * @type {Object} - */ - translate: { - get: { - - /** - * Returns the amount an element is translated - * @param {Number} index The index desired from the CSS3 values of translate3d - * @return {Number} The amount of pixels an element is translated - */ - matrix: function(index) { - - if( !cache.canTransform ){ - return parseInt(settings.element.style.left, 10); - } else { - var matrix = win.getComputedStyle(settings.element)[cache.vendor+'Transform'].match(/\((.*)\)/), - ieOffset = 8; - if (matrix) { - matrix = matrix[1].split(','); - - // Internet Explorer likes to give us 16 fucking values - if(matrix.length===16){ - index+=ieOffset; - } - return parseInt(matrix[index], 10); - } - return 0; - } - } - }, - - /** - * Called when the element has finished transitioning - */ - easeCallback: function(fn){ - settings.element.style[cache.vendor+'Transition'] = ''; - cache.translation = action.translate.get.matrix(4); - cache.easing = false; - - if(cache.easingTo===0){ - utils.klass.remove(doc.body, 'snapjs-right'); - utils.klass.remove(doc.body, 'snapjs-left'); - } - - if( cache.once ){ - cache.once.call(self, self.state()); - delete cache.once; - } - - utils.dispatchEvent('animated'); - utils.events.removeEvent(settings.element, utils.transitionCallback(), action.translate.easeCallback); - - }, - - /** - * Animates the pane by the specified amount of pixels - * @param {Number} n The amount of pixels to move the pane - */ - easeTo: function(n, cb) { - - if( !cache.canTransform ){ - cache.translation = n; - action.translate.x(n); - } else { - cache.easing = true; - cache.easingTo = n; - - settings.element.style[cache.vendor+'Transition'] = 'all ' + settings.transitionSpeed + 's ' + settings.easing; - - cache.once = cb; - - utils.events.addEvent(settings.element, utils.transitionCallback(), action.translate.easeCallback); - action.translate.x(n); - } - if(n===0){ - settings.element.style[cache.vendor+'Transform'] = ''; - } - }, - - /** - * Immediately translates the element on its X axis - * @param {Number} n Amount of pixels to translate - */ - x: function(n) { - if( (settings.disable==='left' && n>0) || - (settings.disable==='right' && n<0) - ){ return; } - - if( !settings.hyperextensible ){ - if( n===settings.maxPosition || n>settings.maxPosition ){ - n=settings.maxPosition; - } else if( n===settings.minPosition || n<settings.minPosition ){ - n=settings.minPosition; - } - } - - n = parseInt(n, 10); - if(isNaN(n)){ - n = 0; - } - - if( cache.canTransform ){ - var theTranslate = 'translate3d(' + n + 'px, 0,0)'; - settings.element.style[cache.vendor+'Transform'] = theTranslate; - } else { - settings.element.style.width = (win.innerWidth || doc.documentElement.clientWidth)+'px'; - - settings.element.style.left = n+'px'; - settings.element.style.right = ''; - } - } - }, - - /** - * Handles all the events that interface with dragging - * @type {Object} - */ - drag: { - - /** - * Begins listening for drag events on our element - */ - listen: function() { - cache.translation = 0; - cache.easing = false; - utils.events.addEvent(self.settings.element, utils.eventType('down'), action.drag.startDrag); - utils.events.addEvent(self.settings.element, utils.eventType('move'), action.drag.dragging); - utils.events.addEvent(self.settings.element, utils.eventType('up'), action.drag.endDrag); - }, - - /** - * Stops listening for drag events on our element - */ - stopListening: function() { - utils.events.removeEvent(settings.element, utils.eventType('down'), action.drag.startDrag); - utils.events.removeEvent(settings.element, utils.eventType('move'), action.drag.dragging); - utils.events.removeEvent(settings.element, utils.eventType('up'), action.drag.endDrag); - }, - - /** - * Fired immediately when the user begins to drag the content pane - * @param {Object} e Event object - */ - startDrag: function(e) { - // No drag on ignored elements - var target = e.target ? e.target : e.srcElement, - ignoreParent = utils.parentUntil(target, 'data-snap-ignore'); - - if (ignoreParent) { - utils.dispatchEvent('ignore'); - return; - } - - - if(settings.dragger){ - var dragParent = utils.parentUntil(target, settings.dragger); - - // Only use dragger if we're in a closed state - if( !dragParent && - (cache.translation !== settings.minPosition && - cache.translation !== settings.maxPosition - )){ - return; - } - } - - utils.dispatchEvent('start'); - settings.element.style[cache.vendor+'Transition'] = ''; - cache.isDragging = true; - - cache.intentChecked = false; - cache.startDragX = utils.page('X', e); - cache.startDragY = utils.page('Y', e); - cache.dragWatchers = { - current: 0, - last: 0, - hold: 0, - state: '' - }; - cache.simpleStates = { - opening: null, - towards: null, - hyperExtending: null, - halfway: null, - flick: null, - translation: { - absolute: 0, - relative: 0, - sinceDirectionChange: 0, - percentage: 0 - } - }; - }, - - /** - * Fired while the user is moving the content pane - * @param {Object} e Event object - */ - dragging: function(e) { - - if (cache.isDragging && settings.touchToDrag) { - - var thePageX = utils.page('X', e), - thePageY = utils.page('Y', e), - translated = cache.translation, - absoluteTranslation = action.translate.get.matrix(4), - whileDragX = thePageX - cache.startDragX, - openingLeft = absoluteTranslation > 0, - translateTo = whileDragX, - diff; - - // Shown no intent already - if((cache.intentChecked && !cache.hasIntent)){ - return; - } - - if(settings.addBodyClasses){ - if((absoluteTranslation)>0){ - utils.klass.add(doc.body, 'snapjs-left'); - utils.klass.remove(doc.body, 'snapjs-right'); - } else if((absoluteTranslation)<0){ - utils.klass.add(doc.body, 'snapjs-right'); - utils.klass.remove(doc.body, 'snapjs-left'); - } - } - - if (cache.hasIntent === false || cache.hasIntent === null) { - - var deg = utils.angleOfDrag(thePageX, thePageY), - inRightRange = (deg >= 0 && deg <= settings.slideIntent) || (deg <= 360 && deg > (360 - settings.slideIntent)), - inLeftRange = (deg >= 180 && deg <= (180 + settings.slideIntent)) || (deg <= 180 && deg >= (180 - settings.slideIntent)); - if (!inLeftRange && !inRightRange) { - cache.hasIntent = false; - } else { - cache.hasIntent = true; - } - cache.intentChecked = true; - } - - if ( - (settings.minDragDistance>=Math.abs(thePageX-cache.startDragX)) || // Has user met minimum drag distance? - (cache.hasIntent === false) - ) { - return; - } - - utils.events.prevent(e); - utils.dispatchEvent('drag'); - - cache.dragWatchers.current = thePageX; - - // Determine which direction we are going - if (cache.dragWatchers.last > thePageX) { - if (cache.dragWatchers.state !== 'left') { - cache.dragWatchers.state = 'left'; - cache.dragWatchers.hold = thePageX; - } - cache.dragWatchers.last = thePageX; - } else if (cache.dragWatchers.last < thePageX) { - if (cache.dragWatchers.state !== 'right') { - cache.dragWatchers.state = 'right'; - cache.dragWatchers.hold = thePageX; - } - cache.dragWatchers.last = thePageX; - } - if (openingLeft) { - // Pulling too far to the right - if (settings.maxPosition < absoluteTranslation) { - diff = (absoluteTranslation - settings.maxPosition) * settings.resistance; - translateTo = whileDragX - diff; - } - cache.simpleStates = { - opening: 'left', - towards: cache.dragWatchers.state, - hyperExtending: settings.maxPosition < absoluteTranslation, - halfway: absoluteTranslation > (settings.maxPosition / 2), - flick: Math.abs(cache.dragWatchers.current - cache.dragWatchers.hold) > settings.flickThreshold, - translation: { - absolute: absoluteTranslation, - relative: whileDragX, - sinceDirectionChange: (cache.dragWatchers.current - cache.dragWatchers.hold), - percentage: (absoluteTranslation/settings.maxPosition)*100 - } - }; - } else { - // Pulling too far to the left - if (settings.minPosition > absoluteTranslation) { - diff = (absoluteTranslation - settings.minPosition) * settings.resistance; - translateTo = whileDragX - diff; - } - cache.simpleStates = { - opening: 'right', - towards: cache.dragWatchers.state, - hyperExtending: settings.minPosition > absoluteTranslation, - halfway: absoluteTranslation < (settings.minPosition / 2), - flick: Math.abs(cache.dragWatchers.current - cache.dragWatchers.hold) > settings.flickThreshold, - translation: { - absolute: absoluteTranslation, - relative: whileDragX, - sinceDirectionChange: (cache.dragWatchers.current - cache.dragWatchers.hold), - percentage: (absoluteTranslation/settings.minPosition)*100 - } - }; - } - action.translate.x(translateTo + translated); - } - }, - - /** - * Fired when the user releases the content pane - * @param {Object} e Event object - */ - endDrag: function(e) { - if (cache.isDragging) { - utils.dispatchEvent('end'); - var translated = action.translate.get.matrix(4); - - // Tap Close - if (cache.dragWatchers.current === 0 && translated !== 0 && settings.tapToClose) { - utils.dispatchEvent('close'); - utils.events.prevent(e); - action.translate.easeTo(0); - cache.isDragging = false; - cache.startDragX = 0; - return; - } - - // Revealing Left - if (cache.simpleStates.opening === 'left') { - // Halfway, Flicking, or Too Far Out - if ((cache.simpleStates.halfway || cache.simpleStates.hyperExtending || cache.simpleStates.flick)) { - if (cache.simpleStates.flick && cache.simpleStates.towards === 'left') { // Flicking Closed - action.translate.easeTo(0); - } else if ( - (cache.simpleStates.flick && cache.simpleStates.towards === 'right') || // Flicking Open OR - (cache.simpleStates.halfway || cache.simpleStates.hyperExtending) // At least halfway open OR hyperextending - ) { - action.translate.easeTo(settings.maxPosition); // Open Left - } - } else { - action.translate.easeTo(0); // Close Left - } - // Revealing Right - } else if (cache.simpleStates.opening === 'right') { - // Halfway, Flicking, or Too Far Out - if ((cache.simpleStates.halfway || cache.simpleStates.hyperExtending || cache.simpleStates.flick)) { - if (cache.simpleStates.flick && cache.simpleStates.towards === 'right') { // Flicking Closed - action.translate.easeTo(0); - } else if ( - (cache.simpleStates.flick && cache.simpleStates.towards === 'left') || // Flicking Open OR - (cache.simpleStates.halfway || cache.simpleStates.hyperExtending) // At least halfway open OR hyperextending - ) { - action.translate.easeTo(settings.minPosition); // Open Right - } - } else { - action.translate.easeTo(0); // Close Right - } - } - cache.isDragging = false; - cache.startDragX = utils.page('X', e); - } - } - } - }; - - - // Initialize - if (opts.element) { - utils.extend(settings, opts); - cache.vendor = utils.vendor(); - cache.canTransform = utils.canTransform(); - action.drag.listen(); - } - }; - - - utils.extend(Core.prototype, { - - /** - * Opens the specified side menu - * @param {String} side Must be "left" or "right" - */ - open: function(side, cb) { - utils.dispatchEvent('open'); - utils.klass.remove(doc.body, 'snapjs-expand-left'); - utils.klass.remove(doc.body, 'snapjs-expand-right'); - - if (side === 'left') { - this.cache.simpleStates.opening = 'left'; - this.cache.simpleStates.towards = 'right'; - utils.klass.add(doc.body, 'snapjs-left'); - utils.klass.remove(doc.body, 'snapjs-right'); - this.action.translate.easeTo(this.settings.maxPosition, cb); - } else if (side === 'right') { - this.cache.simpleStates.opening = 'right'; - this.cache.simpleStates.towards = 'left'; - utils.klass.remove(doc.body, 'snapjs-left'); - utils.klass.add(doc.body, 'snapjs-right'); - this.action.translate.easeTo(this.settings.minPosition, cb); - } - }, - - /** - * Closes the pane - */ - close: function(cb) { - utils.dispatchEvent('close'); - this.action.translate.easeTo(0, cb); - }, - - /** - * Hides the content pane completely allowing for full menu visibility - * @param {String} side Must be "left" or "right" - */ - expand: function(side){ - var to = win.innerWidth || doc.documentElement.clientWidth; - - if(side==='left'){ - utils.dispatchEvent('expandLeft'); - utils.klass.add(doc.body, 'snapjs-expand-left'); - utils.klass.remove(doc.body, 'snapjs-expand-right'); - } else { - utils.dispatchEvent('expandRight'); - utils.klass.add(doc.body, 'snapjs-expand-right'); - utils.klass.remove(doc.body, 'snapjs-expand-left'); - to *= -1; - } - this.action.translate.easeTo(to); - }, - - /** - * Listen in to custom Snap events - * @param {String} evt The snap event name - * @param {Function} fn Callback function - * @return {Object} Snap instance - */ - on: function(evt, fn) { - this.eventList[evt] = fn; - return this; - }, - - /** - * Stops listening to custom Snap events - * @param {String} evt The snap event name - */ - off: function(evt) { - if (this.eventList[evt]) { - this.eventList[evt] = false; - } - }, - - /** - * Enables Snap.js events - */ - enable: function() { - utils.dispatchEvent('enable'); - this.action.drag.listen(); - }, - - /** - * Disables Snap.js events - */ - disable: function() { - utils.dispatchEvent('disable'); - this.action.drag.stopListening(); - }, - - /** - * Updates the instances settings - * @param {Object} opts The Snap options to set - */ - settings: function(opts){ - utils.extend(this.settings, opts); - }, - - /** - * Returns information about the state of the content pane - * @return {Object} Information regarding the state of the pane - */ - state: function() { - var state, - fromLeft = this.action.translate.get.matrix(4); - if (fromLeft === this.settings.maxPosition) { - state = 'left'; - } else if (fromLeft === this.settings.minPosition) { - state = 'right'; - } else { - state = 'closed'; - } - return { - state: state, - info: this.cache.simpleStates - }; - } - }); - - // Assign to the global namespace - this[Namespace] = Core; - -}).call(this, window, document); diff --git a/core/js/tests/specs/l10nSpec.js b/core/js/tests/specs/l10nSpec.js index d5b0363ea38..cf7c8b11b1c 100644 --- a/core/js/tests/specs/l10nSpec.js +++ b/core/js/tests/specs/l10nSpec.js @@ -11,8 +11,12 @@ describe('OC.L10N tests', function() { var TEST_APP = 'jsunittestapp'; + beforeEach(function() { + OC.appswebroots[TEST_APP] = OC.webroot + '/apps3/jsunittestapp'; + }); afterEach(function() { delete OC.L10N._bundles[TEST_APP]; + delete OC.appswebroots[TEST_APP]; }); describe('text translation', function() { @@ -98,4 +102,52 @@ describe('OC.L10N tests', function() { checkPlurals(); }); }); + describe('async loading of translations', function() { + it('loads bundle for given app and calls callback', function() { + var localeStub = sinon.stub(OC, 'getLocale').returns('zh_CN'); + var callbackStub = sinon.stub(); + var promiseStub = sinon.stub(); + OC.L10N.load(TEST_APP, callbackStub).then(promiseStub); + expect(callbackStub.notCalled).toEqual(true); + expect(promiseStub.notCalled).toEqual(true); + expect(fakeServer.requests.length).toEqual(1); + var req = fakeServer.requests[0]; + expect(req.url).toEqual( + OC.webroot + '/apps3/' + TEST_APP + '/l10n/zh_CN.json' + ); + req.respond( + 200, + { 'Content-Type': 'application/json' }, + JSON.stringify({ + translations: {'Hello world!': '你好世界!'}, + pluralForm: 'nplurals=2; plural=(n != 1);' + }) + ); + + expect(callbackStub.calledOnce).toEqual(true); + expect(promiseStub.calledOnce).toEqual(true); + expect(t(TEST_APP, 'Hello world!')).toEqual('你好世界!'); + localeStub.restore(); + }); + it('calls callback if translation already available', function() { + var promiseStub = sinon.stub(); + var callbackStub = sinon.stub(); + OC.L10N.register(TEST_APP, { + 'Hello world!': 'Hallo Welt!' + }); + OC.L10N.load(TEST_APP, callbackStub).then(promiseStub); + expect(callbackStub.calledOnce).toEqual(true); + expect(promiseStub.calledOnce).toEqual(true); + expect(fakeServer.requests.length).toEqual(0); + }); + it('calls callback if locale is en', function() { + var localeStub = sinon.stub(OC, 'getLocale').returns('en'); + var promiseStub = sinon.stub(); + var callbackStub = sinon.stub(); + OC.L10N.load(TEST_APP, callbackStub).then(promiseStub); + expect(callbackStub.calledOnce).toEqual(true); + expect(promiseStub.calledOnce).toEqual(true); + expect(fakeServer.requests.length).toEqual(0); + }); + }); }); diff --git a/core/l10n/af_ZA.js b/core/l10n/af_ZA.js index bb9b876ae73..8250b9c9d7f 100644 --- a/core/l10n/af_ZA.js +++ b/core/l10n/af_ZA.js @@ -38,7 +38,6 @@ OC.L10N.register( "Couldn't send reset email. Please contact your administrator." : "Die herstel epos kon nie gestuur word nie. Kontak asseblief die stelsel administrateur.", "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Die \"link\" vir die herstel van jou wagwoord is na jou epos gestuur. As jy dit nie binne 'n redelike tyd ontvang nie, soek deur jou \"spam/junk\" omslagte.<br>As dit nie daar is nie vra jou administrateur vir hulp.", "I know what I'm doing" : "Ek weet wat ek doen", - "Reset password" : "Herstel wagwoord", "Password can not be changed. Please contact your administrator." : "Wagwoord kan nie verander word nie. Kontak asseblief jou stelsel administrateur.", "No" : "Nee", "Yes" : "Ja", @@ -90,10 +89,8 @@ OC.L10N.register( "The update was successful. Redirecting you to ownCloud now." : "Die opdatering was suksesvol. Jy word nou aan ownCloud terug gelei.", "%s password reset" : "%s wagwoord herstel", "Use the following link to reset your password: {link}" : "Gebruik die volgende skakel om jou wagwoord te herstel: {link}", - "You will receive a link to reset your password via Email." : "Jy sal `n skakel via e-pos ontvang om jou wagwoord te herstel.", - "Username" : "Gebruikersnaam", - "Yes, I really want to reset my password now" : "Ja, Ek wil regtig my wagwoord herstel", "New password" : "Nuwe wagwoord", + "Reset password" : "Herstel wagwoord", "For the best results, please consider using a GNU/Linux server instead." : "Oorweeg die gebruik van 'n GNU/Linux bediener vir die beste resultate.", "Personal" : "Persoonlik", "Users" : "Gebruikers", @@ -107,6 +104,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Jou data gids en lêers is moontlik toeganklik vanaf die internet omdat die .htaccess lêer nie werk nie.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Vir inligting oor hoe om jou bediener behoorlik op te stel, sien asseblief die<a href=\"%s\" target=\"_blank\">dokumentasie</a>.", "Create an <strong>admin account</strong>" : "Skep `n <strong>admin-rekening</strong>", + "Username" : "Gebruikersnaam", "Password" : "Wagwoord", "Data folder" : "Data omslag", "Configure the database" : "Stel databasis op", diff --git a/core/l10n/af_ZA.json b/core/l10n/af_ZA.json index 373d3dff8b4..f95495870e8 100644 --- a/core/l10n/af_ZA.json +++ b/core/l10n/af_ZA.json @@ -36,7 +36,6 @@ "Couldn't send reset email. Please contact your administrator." : "Die herstel epos kon nie gestuur word nie. Kontak asseblief die stelsel administrateur.", "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Die \"link\" vir die herstel van jou wagwoord is na jou epos gestuur. As jy dit nie binne 'n redelike tyd ontvang nie, soek deur jou \"spam/junk\" omslagte.<br>As dit nie daar is nie vra jou administrateur vir hulp.", "I know what I'm doing" : "Ek weet wat ek doen", - "Reset password" : "Herstel wagwoord", "Password can not be changed. Please contact your administrator." : "Wagwoord kan nie verander word nie. Kontak asseblief jou stelsel administrateur.", "No" : "Nee", "Yes" : "Ja", @@ -88,10 +87,8 @@ "The update was successful. Redirecting you to ownCloud now." : "Die opdatering was suksesvol. Jy word nou aan ownCloud terug gelei.", "%s password reset" : "%s wagwoord herstel", "Use the following link to reset your password: {link}" : "Gebruik die volgende skakel om jou wagwoord te herstel: {link}", - "You will receive a link to reset your password via Email." : "Jy sal `n skakel via e-pos ontvang om jou wagwoord te herstel.", - "Username" : "Gebruikersnaam", - "Yes, I really want to reset my password now" : "Ja, Ek wil regtig my wagwoord herstel", "New password" : "Nuwe wagwoord", + "Reset password" : "Herstel wagwoord", "For the best results, please consider using a GNU/Linux server instead." : "Oorweeg die gebruik van 'n GNU/Linux bediener vir die beste resultate.", "Personal" : "Persoonlik", "Users" : "Gebruikers", @@ -105,6 +102,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Jou data gids en lêers is moontlik toeganklik vanaf die internet omdat die .htaccess lêer nie werk nie.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Vir inligting oor hoe om jou bediener behoorlik op te stel, sien asseblief die<a href=\"%s\" target=\"_blank\">dokumentasie</a>.", "Create an <strong>admin account</strong>" : "Skep `n <strong>admin-rekening</strong>", + "Username" : "Gebruikersnaam", "Password" : "Wagwoord", "Data folder" : "Data omslag", "Configure the database" : "Stel databasis op", diff --git a/core/l10n/ar.js b/core/l10n/ar.js index 2d7bcda9398..c48414bfdfe 100644 --- a/core/l10n/ar.js +++ b/core/l10n/ar.js @@ -25,7 +25,6 @@ OC.L10N.register( "December" : "كانون الاول", "Settings" : "إعدادات", "Saving..." : "جاري الحفظ...", - "Reset password" : "تعديل كلمة السر", "No" : "لا", "Yes" : "نعم", "Choose" : "اختيار", @@ -76,10 +75,8 @@ OC.L10N.register( "The update was successful. Redirecting you to ownCloud now." : "تم التحديث بنجاح , يتم اعادة توجيهك الان الى Owncloud", "%s password reset" : "تمت إعادة ضبط كلمة مرور %s", "Use the following link to reset your password: {link}" : "استخدم هذه الوصلة لاسترجاع كلمة السر: {link}", - "You will receive a link to reset your password via Email." : "سوف نرسل لك بريد يحتوي على وصلة لتجديد كلمة السر.", - "Username" : "إسم المستخدم", - "Yes, I really want to reset my password now" : "نعم، أريد إعادة ضبظ كلمة مروري", "New password" : "كلمات سر جديدة", + "Reset password" : "تعديل كلمة السر", "Personal" : "شخصي", "Users" : "المستخدمين", "Apps" : "التطبيقات", @@ -92,6 +89,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "مجلدات البيانات والملفات الخاصة قد تكون قابلة للوصول اليها عن طريق شبكة الانترنت وذلك بسبب ان ملف .htaccess لا يعمل بشكل صحيح.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "لمزيد من المعلومات عن كيفية إعداد خادمك، يرجى الاطلاع على <a href=\"%s\" target=\"_blank\">صفحة المساعدة</a>.", "Create an <strong>admin account</strong>" : "أضف </strong>مستخدم رئيسي <strong>", + "Username" : "إسم المستخدم", "Password" : "كلمة المرور", "Data folder" : "مجلد المعلومات", "Configure the database" : "أسس قاعدة البيانات", diff --git a/core/l10n/ar.json b/core/l10n/ar.json index fd5c1275e41..439a60aec2a 100644 --- a/core/l10n/ar.json +++ b/core/l10n/ar.json @@ -23,7 +23,6 @@ "December" : "كانون الاول", "Settings" : "إعدادات", "Saving..." : "جاري الحفظ...", - "Reset password" : "تعديل كلمة السر", "No" : "لا", "Yes" : "نعم", "Choose" : "اختيار", @@ -74,10 +73,8 @@ "The update was successful. Redirecting you to ownCloud now." : "تم التحديث بنجاح , يتم اعادة توجيهك الان الى Owncloud", "%s password reset" : "تمت إعادة ضبط كلمة مرور %s", "Use the following link to reset your password: {link}" : "استخدم هذه الوصلة لاسترجاع كلمة السر: {link}", - "You will receive a link to reset your password via Email." : "سوف نرسل لك بريد يحتوي على وصلة لتجديد كلمة السر.", - "Username" : "إسم المستخدم", - "Yes, I really want to reset my password now" : "نعم، أريد إعادة ضبظ كلمة مروري", "New password" : "كلمات سر جديدة", + "Reset password" : "تعديل كلمة السر", "Personal" : "شخصي", "Users" : "المستخدمين", "Apps" : "التطبيقات", @@ -90,6 +87,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "مجلدات البيانات والملفات الخاصة قد تكون قابلة للوصول اليها عن طريق شبكة الانترنت وذلك بسبب ان ملف .htaccess لا يعمل بشكل صحيح.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "لمزيد من المعلومات عن كيفية إعداد خادمك، يرجى الاطلاع على <a href=\"%s\" target=\"_blank\">صفحة المساعدة</a>.", "Create an <strong>admin account</strong>" : "أضف </strong>مستخدم رئيسي <strong>", + "Username" : "إسم المستخدم", "Password" : "كلمة المرور", "Data folder" : "مجلد المعلومات", "Configure the database" : "أسس قاعدة البيانات", diff --git a/core/l10n/ast.js b/core/l10n/ast.js index fbb0ba765b0..9bf258b0f60 100644 --- a/core/l10n/ast.js +++ b/core/l10n/ast.js @@ -6,6 +6,7 @@ OC.L10N.register( "Turned off maintenance mode" : "Apagáu'l mou de caltenimientu", "Updated database" : "Base de datos anovada", "Checked database schema update" : "Anovamientu del esquema de base de datos revisáu", + "Checked database schema update for apps" : "Anovamientu del esquema de base de datos p'aplicaciones revisáu", "Updated \"%s\" to %s" : "Anováu \"%s\" a %s", "Disabled incompatible apps: %s" : "Aplicaciones incompatibles desactivaes: %s", "No image or file provided" : "Nun s'especificó nenguna imaxe o ficheru", @@ -38,7 +39,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Unviósete al corréu l'enllaz pa reaniciar la to contraseña. Si nun lu recibes nuna cantidá razonable de tiempu, comprueba les tos carpetes de corréu puxarra. <br>Si nun ta ehí, entruga al to alministrador llocal", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Los tos ficheros tán crifraos. Si nun habilitesti la clave de recuperación, nun habrá forma de recuperar los tos datos dempués de que se reanicie la to contraseña.<br />Si nun tas seguru de qué facer, por favor contauta col to alministrador enantes que sigas. <br />¿De xuru quies siguir?", "I know what I'm doing" : "Sé lo que toi faciendo", - "Reset password" : "Restablecer contraseña", "Password can not be changed. Please contact your administrator." : "Nun pue camudase la contraseña. Por favor, contauta col alministrador.", "No" : "Non", "Yes" : "Sí", @@ -117,13 +117,9 @@ OC.L10N.register( "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Nun pudo unviase'l corréu porque nun hai direición de corréu pa esti nome d'usuariu. Por favor, contauta col alministrador", "%s password reset" : "%s restablecer contraseña", "Use the following link to reset your password: {link}" : "Usa'l siguiente enllaz pa restablecer la to contraseña: {link}", - "You will receive a link to reset your password via Email." : "Vas recibir un enllaz vía Corréu-e pa restablecer la to contraseña", - "Username" : "Nome d'usuariu", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Los ficheros tán cifraos. Si nun habilitesti la clave de recuperación, nun habrá forma de recuperar los tos datos dempués de que la contraseña se reanicie. Si nun tas seguru de qué facer, por favor contauta col alministrador enantes de siguir. ¿De xuru quies continuar?", - "Yes, I really want to reset my password now" : "Sí, quiero reaniciar daveres la mio contraseña agora", - "Reset" : "Reaniciar", "New password" : "Contraseña nueva", "New Password" : "Contraseña nueva", + "Reset password" : "Restablecer contraseña", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X nun ta sofitáu y %s nun furrulará afayadizamente nesta plataforma. ¡Úsalu baxo'l to riesgu!", "For the best results, please consider using a GNU/Linux server instead." : "Pa los meyores resultaos, por favor considera l'usu d'un sirvidor GNU/Linux nel so llugar.", "Personal" : "Personal", @@ -148,6 +144,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "El to direutoriu de datos y ficheros seique ye accesible dende internet por mor qu'el ficheru .htaccess nun furrula.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Pa informase de cómo configurar el so sirvidor, por favor güeya la <a href=\"%s\" target=\"_blank\">documentación</a>.", "Create an <strong>admin account</strong>" : "Crea una <strong>cuenta d'alministrador</strong>", + "Username" : "Nome d'usuariu", "Password" : "Contraseña", "Storage & database" : "Almacenamientu y Base de datos", "Data folder" : "Carpeta de datos", diff --git a/core/l10n/ast.json b/core/l10n/ast.json index e255cad1774..8422c2948ee 100644 --- a/core/l10n/ast.json +++ b/core/l10n/ast.json @@ -4,6 +4,7 @@ "Turned off maintenance mode" : "Apagáu'l mou de caltenimientu", "Updated database" : "Base de datos anovada", "Checked database schema update" : "Anovamientu del esquema de base de datos revisáu", + "Checked database schema update for apps" : "Anovamientu del esquema de base de datos p'aplicaciones revisáu", "Updated \"%s\" to %s" : "Anováu \"%s\" a %s", "Disabled incompatible apps: %s" : "Aplicaciones incompatibles desactivaes: %s", "No image or file provided" : "Nun s'especificó nenguna imaxe o ficheru", @@ -36,7 +37,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Unviósete al corréu l'enllaz pa reaniciar la to contraseña. Si nun lu recibes nuna cantidá razonable de tiempu, comprueba les tos carpetes de corréu puxarra. <br>Si nun ta ehí, entruga al to alministrador llocal", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Los tos ficheros tán crifraos. Si nun habilitesti la clave de recuperación, nun habrá forma de recuperar los tos datos dempués de que se reanicie la to contraseña.<br />Si nun tas seguru de qué facer, por favor contauta col to alministrador enantes que sigas. <br />¿De xuru quies siguir?", "I know what I'm doing" : "Sé lo que toi faciendo", - "Reset password" : "Restablecer contraseña", "Password can not be changed. Please contact your administrator." : "Nun pue camudase la contraseña. Por favor, contauta col alministrador.", "No" : "Non", "Yes" : "Sí", @@ -115,13 +115,9 @@ "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Nun pudo unviase'l corréu porque nun hai direición de corréu pa esti nome d'usuariu. Por favor, contauta col alministrador", "%s password reset" : "%s restablecer contraseña", "Use the following link to reset your password: {link}" : "Usa'l siguiente enllaz pa restablecer la to contraseña: {link}", - "You will receive a link to reset your password via Email." : "Vas recibir un enllaz vía Corréu-e pa restablecer la to contraseña", - "Username" : "Nome d'usuariu", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Los ficheros tán cifraos. Si nun habilitesti la clave de recuperación, nun habrá forma de recuperar los tos datos dempués de que la contraseña se reanicie. Si nun tas seguru de qué facer, por favor contauta col alministrador enantes de siguir. ¿De xuru quies continuar?", - "Yes, I really want to reset my password now" : "Sí, quiero reaniciar daveres la mio contraseña agora", - "Reset" : "Reaniciar", "New password" : "Contraseña nueva", "New Password" : "Contraseña nueva", + "Reset password" : "Restablecer contraseña", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X nun ta sofitáu y %s nun furrulará afayadizamente nesta plataforma. ¡Úsalu baxo'l to riesgu!", "For the best results, please consider using a GNU/Linux server instead." : "Pa los meyores resultaos, por favor considera l'usu d'un sirvidor GNU/Linux nel so llugar.", "Personal" : "Personal", @@ -146,6 +142,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "El to direutoriu de datos y ficheros seique ye accesible dende internet por mor qu'el ficheru .htaccess nun furrula.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Pa informase de cómo configurar el so sirvidor, por favor güeya la <a href=\"%s\" target=\"_blank\">documentación</a>.", "Create an <strong>admin account</strong>" : "Crea una <strong>cuenta d'alministrador</strong>", + "Username" : "Nome d'usuariu", "Password" : "Contraseña", "Storage & database" : "Almacenamientu y Base de datos", "Data folder" : "Carpeta de datos", diff --git a/core/l10n/az.js b/core/l10n/az.js index f3a5b138641..10316b67f2a 100644 --- a/core/l10n/az.js +++ b/core/l10n/az.js @@ -35,13 +35,12 @@ OC.L10N.register( "Delete" : "Sil", "Add" : "Əlavə etmək", "_download %n file_::_download %n files_" : ["",""], - "Username" : "İstifadəçi adı", - "Reset" : "Sıfırla", "Personal" : "Şəxsi", "Users" : "İstifadəçilər", "Admin" : "İnzibatçı", "Help" : "Kömək", "Security Warning" : "Təhlükəsizlik xəbərdarlığı", + "Username" : "İstifadəçi adı", "Password" : "Şifrə", "You are accessing the server from an untrusted domain." : "Siz serverə inamsız domain-dən girməyə çalışırsız.", "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domain\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Xahiş olunur inzibatçı ilə əlaqə saxlayasınız. Eger siz bu xidmətin inzibatçısısınizsa, \"trusted_domain\" configini config/config.php faylinda düzgün qeyd edin. Config nüsxəsi config/config.sample.php faylında qeyd edilmişdir." diff --git a/core/l10n/az.json b/core/l10n/az.json index 7f4f7d8bb95..7a0c92543f3 100644 --- a/core/l10n/az.json +++ b/core/l10n/az.json @@ -33,13 +33,12 @@ "Delete" : "Sil", "Add" : "Əlavə etmək", "_download %n file_::_download %n files_" : ["",""], - "Username" : "İstifadəçi adı", - "Reset" : "Sıfırla", "Personal" : "Şəxsi", "Users" : "İstifadəçilər", "Admin" : "İnzibatçı", "Help" : "Kömək", "Security Warning" : "Təhlükəsizlik xəbərdarlığı", + "Username" : "İstifadəçi adı", "Password" : "Şifrə", "You are accessing the server from an untrusted domain." : "Siz serverə inamsız domain-dən girməyə çalışırsız.", "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domain\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Xahiş olunur inzibatçı ilə əlaqə saxlayasınız. Eger siz bu xidmətin inzibatçısısınizsa, \"trusted_domain\" configini config/config.php faylinda düzgün qeyd edin. Config nüsxəsi config/config.sample.php faylında qeyd edilmişdir." diff --git a/core/l10n/bg_BG.js b/core/l10n/bg_BG.js index fc93aad24da..cf7369129ba 100644 --- a/core/l10n/bg_BG.js +++ b/core/l10n/bg_BG.js @@ -39,7 +39,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Връзката за възстановяване на паролата е изпратена на твоя имейл. Ако не я получиш в разумен период от време, провери папката си за спам.<br>Ако не е там се свържи с администратора.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Файловете ти са криптирани. Ако не си насторил ключ за възстановяване, няма да има възможност да възстановиш информацията си след като промениш паролата.<br /> Ако не си сигурен какво да направиш, моля свържи се с администратора преди да продължиш.<br/>Наистина ли си сигурен, че искаш да продължиш?", "I know what I'm doing" : "Знам какво правя!", - "Reset password" : "Възстановяване на парола", "Password can not be changed. Please contact your administrator." : "Паролата не може да бъде промена. Моля, свържи се с администратора.", "No" : "Не", "Yes" : "Да", @@ -110,7 +109,11 @@ OC.L10N.register( "Edit tags" : "Промяна на етикетите", "Error loading dialog template: {error}" : "Грешка при зареждането на шаблоn за диалог: {error}.", "No tags selected for deletion." : "Не са избрани етикети за изтриване.", - "_download %n file_::_download %n files_" : ["",""], + "unknown text" : "непознат текст", + "Hello world!" : "Здравей Свят!", + "sunny" : "слънчево", + "Hello {name}, the weather is {weather}" : "Здравей {name}, времето е {weather}", + "_download %n file_::_download %n files_" : ["изтегли %n файл","изтегли %n файла"], "Updating {productName} to version {version}, this may take a while." : "Обновява се {productName} на версия {version}, това може да отнеме време.", "Please reload the page." : "Моля, презареди страницата.", "The update was unsuccessful." : "Обновяването неуспешно.", @@ -120,13 +123,9 @@ OC.L10N.register( "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Неуспешно изпращане на имейл за възстановяване на паролата, защото липсва имейл свързан с това потребителско име. Моля свържи се с админстратора.", "%s password reset" : "Паролата на %s е променена.", "Use the following link to reset your password: {link}" : "Използвай следната връзка, за да възстановиш паролата си: {link}", - "You will receive a link to reset your password via Email." : "Ще получиш връзка за възстановяване на паролата посредством емейл.", - "Username" : "Потребител", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Файловете ти са криптирани. Ако не си насторил ключ за възстановяване, няма да има възможност да възстановиш информацията си след като промениш паролата. Ако не си сигурен какво да направиш, моля свържи се с администратора преди да продължиш. Наистина ли си сигурен, че искаш да продължиш?", - "Yes, I really want to reset my password now" : "Да, наистина желая да възстановя паролата си сега.", - "Reset" : "Възстанови", "New password" : "Нова парола", "New Password" : "Нова Парола", + "Reset password" : "Възстановяване на парола", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X не се подържа и %s няма да работи правилно на тази платформа. Използвай го на свой риск!", "For the best results, please consider using a GNU/Linux server instead." : "За най-добри резултати, моля помисли дали не би желал да използваш GNU/Linux сървър.", "Personal" : "Лични", @@ -166,6 +165,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Твоята директория за данни и файлове вероятно са достъпни от интернет поради това, че .htaccess файла не функционира.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "За информация как правилно да настроиш сървъра си, моля прегледай <a href=\"%s\" target=\"_blank\">документацията</a>.", "Create an <strong>admin account</strong>" : "Създаване на <strong>админ профил</strong>.", + "Username" : "Потребител", "Password" : "Парола", "Storage & database" : "Дисково пространство и база данни", "Data folder" : "Директория за данни", diff --git a/core/l10n/bg_BG.json b/core/l10n/bg_BG.json index 7a74dfd6a2c..8b6b7e057d2 100644 --- a/core/l10n/bg_BG.json +++ b/core/l10n/bg_BG.json @@ -37,7 +37,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Връзката за възстановяване на паролата е изпратена на твоя имейл. Ако не я получиш в разумен период от време, провери папката си за спам.<br>Ако не е там се свържи с администратора.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Файловете ти са криптирани. Ако не си насторил ключ за възстановяване, няма да има възможност да възстановиш информацията си след като промениш паролата.<br /> Ако не си сигурен какво да направиш, моля свържи се с администратора преди да продължиш.<br/>Наистина ли си сигурен, че искаш да продължиш?", "I know what I'm doing" : "Знам какво правя!", - "Reset password" : "Възстановяване на парола", "Password can not be changed. Please contact your administrator." : "Паролата не може да бъде промена. Моля, свържи се с администратора.", "No" : "Не", "Yes" : "Да", @@ -108,7 +107,11 @@ "Edit tags" : "Промяна на етикетите", "Error loading dialog template: {error}" : "Грешка при зареждането на шаблоn за диалог: {error}.", "No tags selected for deletion." : "Не са избрани етикети за изтриване.", - "_download %n file_::_download %n files_" : ["",""], + "unknown text" : "непознат текст", + "Hello world!" : "Здравей Свят!", + "sunny" : "слънчево", + "Hello {name}, the weather is {weather}" : "Здравей {name}, времето е {weather}", + "_download %n file_::_download %n files_" : ["изтегли %n файл","изтегли %n файла"], "Updating {productName} to version {version}, this may take a while." : "Обновява се {productName} на версия {version}, това може да отнеме време.", "Please reload the page." : "Моля, презареди страницата.", "The update was unsuccessful." : "Обновяването неуспешно.", @@ -118,13 +121,9 @@ "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Неуспешно изпращане на имейл за възстановяване на паролата, защото липсва имейл свързан с това потребителско име. Моля свържи се с админстратора.", "%s password reset" : "Паролата на %s е променена.", "Use the following link to reset your password: {link}" : "Използвай следната връзка, за да възстановиш паролата си: {link}", - "You will receive a link to reset your password via Email." : "Ще получиш връзка за възстановяване на паролата посредством емейл.", - "Username" : "Потребител", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Файловете ти са криптирани. Ако не си насторил ключ за възстановяване, няма да има възможност да възстановиш информацията си след като промениш паролата. Ако не си сигурен какво да направиш, моля свържи се с администратора преди да продължиш. Наистина ли си сигурен, че искаш да продължиш?", - "Yes, I really want to reset my password now" : "Да, наистина желая да възстановя паролата си сега.", - "Reset" : "Възстанови", "New password" : "Нова парола", "New Password" : "Нова Парола", + "Reset password" : "Възстановяване на парола", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X не се подържа и %s няма да работи правилно на тази платформа. Използвай го на свой риск!", "For the best results, please consider using a GNU/Linux server instead." : "За най-добри резултати, моля помисли дали не би желал да използваш GNU/Linux сървър.", "Personal" : "Лични", @@ -164,6 +163,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Твоята директория за данни и файлове вероятно са достъпни от интернет поради това, че .htaccess файла не функционира.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "За информация как правилно да настроиш сървъра си, моля прегледай <a href=\"%s\" target=\"_blank\">документацията</a>.", "Create an <strong>admin account</strong>" : "Създаване на <strong>админ профил</strong>.", + "Username" : "Потребител", "Password" : "Парола", "Storage & database" : "Дисково пространство и база данни", "Data folder" : "Директория за данни", diff --git a/core/l10n/bn_BD.js b/core/l10n/bn_BD.js index ac4ba299468..422175f9e81 100644 --- a/core/l10n/bn_BD.js +++ b/core/l10n/bn_BD.js @@ -29,7 +29,6 @@ OC.L10N.register( "December" : "ডিসেম্বর", "Settings" : "নিয়ামকসমূহ", "Saving..." : "সংরক্ষণ করা হচ্ছে..", - "Reset password" : "কূটশব্দ পূনঃনির্ধারণ কর", "No" : "না", "Yes" : "হ্যাঁ", "Choose" : "বেছে নিন", @@ -80,11 +79,9 @@ OC.L10N.register( "_download %n file_::_download %n files_" : ["",""], "Please reload the page." : "দয়া করে পৃষ্ঠাটি পূনরায় লোড করুন।", "Use the following link to reset your password: {link}" : "আপনার কূটশব্দটি পূনঃনির্ধারণ করার জন্য নিম্নোক্ত লিংকটি ব্যবহার করুনঃ {link}", - "You will receive a link to reset your password via Email." : "কূটশব্দ পূনঃনির্ধারণের জন্য একটি টূনঃনির্ধারণ লিংকটি আপনাকে ই-মেইলে পাঠানো হয়েছে ।", - "Username" : "ব্যবহারকারী", - "Reset" : "পূণঃনির্ধানণ", "New password" : "নতুন কূটশব্দ", "New Password" : "নতুন কূটশব্দ", + "Reset password" : "কূটশব্দ পূনঃনির্ধারণ কর", "Personal" : "ব্যক্তিগত", "Users" : "ব্যবহারকারী", "Apps" : "অ্যাপ", @@ -99,6 +96,7 @@ OC.L10N.register( "Cheers!" : "শুভেচ্ছা!", "Security Warning" : "নিরাপত্তাজনিত সতর্কতা", "Create an <strong>admin account</strong>" : "<strong>প্রশাসক একাউন্ট</strong> তৈরী করুন", + "Username" : "ব্যবহারকারী", "Password" : "কূটশব্দ", "Data folder" : "ডাটা ফোল্ডার ", "Configure the database" : "ডাটাবেচ কনফিগার করুন", diff --git a/core/l10n/bn_BD.json b/core/l10n/bn_BD.json index 9eee32ba3c2..811c1087002 100644 --- a/core/l10n/bn_BD.json +++ b/core/l10n/bn_BD.json @@ -27,7 +27,6 @@ "December" : "ডিসেম্বর", "Settings" : "নিয়ামকসমূহ", "Saving..." : "সংরক্ষণ করা হচ্ছে..", - "Reset password" : "কূটশব্দ পূনঃনির্ধারণ কর", "No" : "না", "Yes" : "হ্যাঁ", "Choose" : "বেছে নিন", @@ -78,11 +77,9 @@ "_download %n file_::_download %n files_" : ["",""], "Please reload the page." : "দয়া করে পৃষ্ঠাটি পূনরায় লোড করুন।", "Use the following link to reset your password: {link}" : "আপনার কূটশব্দটি পূনঃনির্ধারণ করার জন্য নিম্নোক্ত লিংকটি ব্যবহার করুনঃ {link}", - "You will receive a link to reset your password via Email." : "কূটশব্দ পূনঃনির্ধারণের জন্য একটি টূনঃনির্ধারণ লিংকটি আপনাকে ই-মেইলে পাঠানো হয়েছে ।", - "Username" : "ব্যবহারকারী", - "Reset" : "পূণঃনির্ধানণ", "New password" : "নতুন কূটশব্দ", "New Password" : "নতুন কূটশব্দ", + "Reset password" : "কূটশব্দ পূনঃনির্ধারণ কর", "Personal" : "ব্যক্তিগত", "Users" : "ব্যবহারকারী", "Apps" : "অ্যাপ", @@ -97,6 +94,7 @@ "Cheers!" : "শুভেচ্ছা!", "Security Warning" : "নিরাপত্তাজনিত সতর্কতা", "Create an <strong>admin account</strong>" : "<strong>প্রশাসক একাউন্ট</strong> তৈরী করুন", + "Username" : "ব্যবহারকারী", "Password" : "কূটশব্দ", "Data folder" : "ডাটা ফোল্ডার ", "Configure the database" : "ডাটাবেচ কনফিগার করুন", diff --git a/core/l10n/bn_IN.js b/core/l10n/bn_IN.js index a72a91078ae..0cd405630cb 100644 --- a/core/l10n/bn_IN.js +++ b/core/l10n/bn_IN.js @@ -11,7 +11,6 @@ OC.L10N.register( "Delete" : "মুছে ফেলা", "Add" : "যোগ করা", "_download %n file_::_download %n files_" : ["",""], - "Username" : "ইউজারনেম", - "Reset" : "রিসেট করুন" + "Username" : "ইউজারনেম" }, "nplurals=2; plural=(n != 1);"); diff --git a/core/l10n/bn_IN.json b/core/l10n/bn_IN.json index 4e29d0774f6..5c7ce4ef0d7 100644 --- a/core/l10n/bn_IN.json +++ b/core/l10n/bn_IN.json @@ -9,7 +9,6 @@ "Delete" : "মুছে ফেলা", "Add" : "যোগ করা", "_download %n file_::_download %n files_" : ["",""], - "Username" : "ইউজারনেম", - "Reset" : "রিসেট করুন" + "Username" : "ইউজারনেম" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/core/l10n/ca.js b/core/l10n/ca.js index afa434d3570..ee837ea7b7f 100644 --- a/core/l10n/ca.js +++ b/core/l10n/ca.js @@ -39,7 +39,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "L'enllaç per reiniciar la vostra contrasenya s'ha enviat al vostre correu. Si no el rebeu en un temps raonable comproveu les carpetes de spam. <br>Si no és allà, pregunteu a l'administrador local.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Els vostres fitxers estan encriptats. Si no heu habilitat la clau de recuperació no hi haurà manera de recuperar les dades després que reestabliu la contrasenya. <br />Si sabeu què fer, contacteu amb l'administrador abans de continuar.<br />Voleu continuar?", "I know what I'm doing" : "Sé el que faig", - "Reset password" : "Reinicialitza la contrasenya", "Password can not be changed. Please contact your administrator." : "La contrasenya no es pot canviar. Contacteu amb l'administrador.", "No" : "No", "Yes" : "Sí", @@ -120,13 +119,9 @@ OC.L10N.register( "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "No s'ha pogut enviar el correu de restabliment perquè no hi ha cap correu electrònic per aquest usuari. Contacteu amb l'administrador.", "%s password reset" : "restableix la contrasenya %s", "Use the following link to reset your password: {link}" : "Useu l'enllaç següent per restablir la contrasenya: {link}", - "You will receive a link to reset your password via Email." : "Rebreu un enllaç al correu electrònic per reiniciar la contrasenya.", - "Username" : "Nom d'usuari", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Els vostres fitxers estan encriptats. Si no heu habilitat la clau de recuperació no hi haurà manera de recuperar les dades després que reestabliu la contrasenya. Si sabeu què fer, contacteu amb l'administrador abans de continuar. Voleu continuar?", - "Yes, I really want to reset my password now" : "Sí, vull restablir ara la contrasenya", - "Reset" : "Estableix de nou", "New password" : "Contrasenya nova", "New Password" : "Contrasenya nova", + "Reset password" : "Reinicialitza la contrasenya", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X no té suport i %s no funcionarà correctament en aquesta plataforma. Useu-ho al vostre risc!", "For the best results, please consider using a GNU/Linux server instead." : "Per millors resultats, millor considereu utilitzar un servidor GNU/Linux.", "Personal" : "Personal", @@ -161,6 +156,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "La carpeta de dades i els seus fitxers probablement són accessibles des d'internet perquè el fitxer .htaccess no funciona.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Per informació de com configurar el servidor, comproveu la <a href=\"%s\" target=\"_blank\">documentació</a>.", "Create an <strong>admin account</strong>" : "Crea un <strong>compte d'administrador</strong>", + "Username" : "Nom d'usuari", "Password" : "Contrasenya", "Storage & database" : "Emmagatzematge i base de dades", "Data folder" : "Carpeta de dades", diff --git a/core/l10n/ca.json b/core/l10n/ca.json index c1ea86b4223..374e9a51440 100644 --- a/core/l10n/ca.json +++ b/core/l10n/ca.json @@ -37,7 +37,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "L'enllaç per reiniciar la vostra contrasenya s'ha enviat al vostre correu. Si no el rebeu en un temps raonable comproveu les carpetes de spam. <br>Si no és allà, pregunteu a l'administrador local.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Els vostres fitxers estan encriptats. Si no heu habilitat la clau de recuperació no hi haurà manera de recuperar les dades després que reestabliu la contrasenya. <br />Si sabeu què fer, contacteu amb l'administrador abans de continuar.<br />Voleu continuar?", "I know what I'm doing" : "Sé el que faig", - "Reset password" : "Reinicialitza la contrasenya", "Password can not be changed. Please contact your administrator." : "La contrasenya no es pot canviar. Contacteu amb l'administrador.", "No" : "No", "Yes" : "Sí", @@ -118,13 +117,9 @@ "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "No s'ha pogut enviar el correu de restabliment perquè no hi ha cap correu electrònic per aquest usuari. Contacteu amb l'administrador.", "%s password reset" : "restableix la contrasenya %s", "Use the following link to reset your password: {link}" : "Useu l'enllaç següent per restablir la contrasenya: {link}", - "You will receive a link to reset your password via Email." : "Rebreu un enllaç al correu electrònic per reiniciar la contrasenya.", - "Username" : "Nom d'usuari", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Els vostres fitxers estan encriptats. Si no heu habilitat la clau de recuperació no hi haurà manera de recuperar les dades després que reestabliu la contrasenya. Si sabeu què fer, contacteu amb l'administrador abans de continuar. Voleu continuar?", - "Yes, I really want to reset my password now" : "Sí, vull restablir ara la contrasenya", - "Reset" : "Estableix de nou", "New password" : "Contrasenya nova", "New Password" : "Contrasenya nova", + "Reset password" : "Reinicialitza la contrasenya", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X no té suport i %s no funcionarà correctament en aquesta plataforma. Useu-ho al vostre risc!", "For the best results, please consider using a GNU/Linux server instead." : "Per millors resultats, millor considereu utilitzar un servidor GNU/Linux.", "Personal" : "Personal", @@ -159,6 +154,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "La carpeta de dades i els seus fitxers probablement són accessibles des d'internet perquè el fitxer .htaccess no funciona.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Per informació de com configurar el servidor, comproveu la <a href=\"%s\" target=\"_blank\">documentació</a>.", "Create an <strong>admin account</strong>" : "Crea un <strong>compte d'administrador</strong>", + "Username" : "Nom d'usuari", "Password" : "Contrasenya", "Storage & database" : "Emmagatzematge i base de dades", "Data folder" : "Carpeta de dades", diff --git a/core/l10n/cs_CZ.js b/core/l10n/cs_CZ.js index c9aed4a7c45..787b0b10e4a 100644 --- a/core/l10n/cs_CZ.js +++ b/core/l10n/cs_CZ.js @@ -35,12 +35,11 @@ OC.L10N.register( "December" : "Prosinec", "Settings" : "Nastavení", "Saving..." : "Ukládám...", - "Couldn't send reset email. Please contact your administrator." : "Nepodařilo se odeslat email pro změnu hesla. Kontaktujte vašeho administrátora.", - "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Odkaz na obnovení hesla byl odeslán na vaši e-mailovou adresu. Pokud jej v krátké době neobdržíte, zkontrolujte složku nevyžádané pošty a koš.<br>Pokud jej nenaleznete, kontaktujte svého administrátora.", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Vaše soubory jsou šifrovány. Pokud jste nepovolili klíč pro obnovení, neexistuje způsob jak získat po změně hesla vaše data.<br />Pokud si nejste jisti co dělat, kontaktujte nejprve svého administrátora než budete pokračovat. <br />Opravdu si přejete pokračovat?", + "Couldn't send reset email. Please contact your administrator." : "Nepodařilo se odeslat email pro změnu hesla. Kontaktujte svého správce systému.", + "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Odkaz na obnovení hesla byl odeslán na vaši e-mailovou adresu. Pokud jej v krátké době neobdržíte, zkontrolujte složku nevyžádané pošty a koš.<br>Pokud jej nenaleznete, kontaktujte svého správce systému.", + "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Vaše soubory jsou šifrovány. Pokud jste nepovolili klíč pro obnovení, neexistuje způsob jak získat po změně hesla vaše data zpět.<br />Pokud si nejste jisti co dělat, kontaktujte nejprve svého správce systému, než budete pokračovat. <br />Opravdu si přejete pokračovat?", "I know what I'm doing" : "Vím co dělám", - "Reset password" : "Obnovit heslo", - "Password can not be changed. Please contact your administrator." : "Heslo nelze změnit. Kontaktujte prosím svého administrátora.", + "Password can not be changed. Please contact your administrator." : "Heslo nelze změnit. Kontaktujte prosím svého správce systému.", "No" : "Ne", "Yes" : "Ano", "Choose" : "Vybrat", @@ -121,16 +120,12 @@ OC.L10N.register( "The update was successful. Redirecting you to ownCloud now." : "Aktualizace byla úspěšná. Přesměrovávám na ownCloud.", "Couldn't reset password because the token is invalid" : "Heslo nebylo změněno kvůli neplatnému tokenu", "Couldn't send reset email. Please make sure your username is correct." : "Nelze odeslat email pro změnu hesla. Ujistěte se prosím, že zadáváte správné uživatelské jméno.", - "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Nelze odeslat email pro změnu hesla, protože u tohoto uživatelského jména není uvedena e-mailová adresa. Kontaktujte prosím svého administrátora.", + "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Nelze odeslat email pro změnu hesla, protože u tohoto uživatelského jména není uvedena e-mailová adresa. Kontaktujte prosím svého správce systému.", "%s password reset" : "reset hesla %s", "Use the following link to reset your password: {link}" : "Heslo obnovíte použitím následujícího odkazu: {link}", - "You will receive a link to reset your password via Email." : "E-mailem Vám bude zaslán odkaz pro obnovu hesla.", - "Username" : "Uživatelské jméno", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Vaše soubory jsou šifrovány. Pokud nemáte povolen klíč pro obnovu, neexistuje způsob jak získat, po změně hesla, vaše data. Pokud si nejste jisti co dělat, kontaktujte nejprve svého správce. Opravdu si přejete pokračovat?", - "Yes, I really want to reset my password now" : "Ano, opravdu si nyní přeji obnovit mé heslo", - "Reset" : "Restartovat složku", "New password" : "Nové heslo", "New Password" : "Nové heslo", + "Reset password" : "Obnovit heslo", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X není podporován a %s nebude na této platformě správně fungovat. Používejte pouze na vlastní nebezpečí!", "For the best results, please consider using a GNU/Linux server instead." : "Místo toho zvažte pro nejlepší funkčnost použití GNU/Linux serveru.", "Personal" : "Osobní", @@ -154,7 +149,7 @@ OC.L10N.register( "Cheers!" : "Ať slouží!", "Internal Server Error" : "Vnitřní chyba serveru", "The server encountered an internal error and was unable to complete your request." : "Server zaznamenal interní chybu a nebyl schopen dokončit váš požadavek.", - "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Kontaktujte prosím administrátora serveru, pokud se bude tato chyba opakovat. Připojte do svého hlášení níže zobrazené technické detaily.", + "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Kontaktujte prosím správce serveru, pokud se bude tato chyba opakovat. Připojte do svého hlášení níže zobrazené technické detaily.", "More details can be found in the server log." : "Více podrobností k nalezení v serverovém logu.", "Technical details" : "Technické detaily", "Remote Address: %s" : "Vzdálená adresa: %s", @@ -170,6 +165,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Váš adresář s daty a soubory jsou dostupné z internetu, protože soubor .htaccess nefunguje.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Pro informace, jak správně nastavit váš server, se podívejte do <a href=\"%s\" target=\"_blank\">dokumentace</a>.", "Create an <strong>admin account</strong>" : "Vytvořit <strong>účet správce</strong>", + "Username" : "Uživatelské jméno", "Password" : "Heslo", "Storage & database" : "Úložiště & databáze", "Data folder" : "Složka s daty", @@ -195,11 +191,11 @@ OC.L10N.register( "Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Hej ty,<br><br>jen ti dávám vědět, že %s sdílí <strong>%s</strong> s tebou.<br><a href=\"%s\">Zobrazit!</a><br><br>", "This ownCloud instance is currently in single user mode." : "Tato instalace ownCloudu je momentálně v jednouživatelském módu.", "This means only administrators can use the instance." : "To znamená, že pouze správci systému mohou aplikaci používat.", - "Contact your system administrator if this message persists or appeared unexpectedly." : "Kontaktujte, prosím, správce systému, pokud se tato zpráva objevuje opakovaně nebo nečekaně.", - "Thank you for your patience." : "Děkuji za trpělivost.", + "Contact your system administrator if this message persists or appeared unexpectedly." : "Kontaktujte prosím správce systému, pokud se tato zpráva objevuje opakovaně nebo nečekaně.", + "Thank you for your patience." : "Děkujeme za vaši trpělivost.", "You are accessing the server from an untrusted domain." : "Přistupujete na server z nedůvěryhodné domény.", "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domain\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Kontaktujte prosím správce. Pokud jste správce této instalace, nastavte \"trusted_domain\" v souboru config/config.php. Příklad konfigurace najdete v souboru config/config.sample.php.", - "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "V závislosti na vaší konfiguraci vám může být, jako administrátorovi, umožněno použití tlačítka níže k označení této domény jako důvěryhodné.", + "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "V závislosti na vaší konfiguraci vám může být, jako správci, umožněno použití tlačítka níže k označení této domény jako důvěryhodné.", "Add \"%s\" as trusted domain" : "Přidat \"%s\" jako důvěryhodnou doménu", "%s will be updated to version %s." : "%s bude aktualizován na verzi %s.", "The following apps will be disabled:" : "Následující aplikace budou zakázány:", @@ -207,7 +203,7 @@ OC.L10N.register( "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Před provedením dalšího kroku se prosím ujistěte, že databáze a konfigurační a datový adresář byly zazálohovány. ", "Start update" : "Spustit aktualizaci", "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Abyste zabránili vypršení časového limitu u větších instalací, můžete namísto toho spustit následující příkaz v hlavním adresáři:", - "This %s instance is currently being updated, which may take a while." : "Tato instalace %s je právě aktualizována a to může chvíli trvat.", + "This %s instance is currently being updated, which may take a while." : "Tato instalace %s je právě aktualizována. Mějte chvíli strpení.", "This page will refresh itself when the %s instance is available again." : "Tato stránka se automaticky načte poté, co bude opět dostupná instance %s." }, "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); diff --git a/core/l10n/cs_CZ.json b/core/l10n/cs_CZ.json index 67250ae52e7..8de2fd338c1 100644 --- a/core/l10n/cs_CZ.json +++ b/core/l10n/cs_CZ.json @@ -33,12 +33,11 @@ "December" : "Prosinec", "Settings" : "Nastavení", "Saving..." : "Ukládám...", - "Couldn't send reset email. Please contact your administrator." : "Nepodařilo se odeslat email pro změnu hesla. Kontaktujte vašeho administrátora.", - "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Odkaz na obnovení hesla byl odeslán na vaši e-mailovou adresu. Pokud jej v krátké době neobdržíte, zkontrolujte složku nevyžádané pošty a koš.<br>Pokud jej nenaleznete, kontaktujte svého administrátora.", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Vaše soubory jsou šifrovány. Pokud jste nepovolili klíč pro obnovení, neexistuje způsob jak získat po změně hesla vaše data.<br />Pokud si nejste jisti co dělat, kontaktujte nejprve svého administrátora než budete pokračovat. <br />Opravdu si přejete pokračovat?", + "Couldn't send reset email. Please contact your administrator." : "Nepodařilo se odeslat email pro změnu hesla. Kontaktujte svého správce systému.", + "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Odkaz na obnovení hesla byl odeslán na vaši e-mailovou adresu. Pokud jej v krátké době neobdržíte, zkontrolujte složku nevyžádané pošty a koš.<br>Pokud jej nenaleznete, kontaktujte svého správce systému.", + "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Vaše soubory jsou šifrovány. Pokud jste nepovolili klíč pro obnovení, neexistuje způsob jak získat po změně hesla vaše data zpět.<br />Pokud si nejste jisti co dělat, kontaktujte nejprve svého správce systému, než budete pokračovat. <br />Opravdu si přejete pokračovat?", "I know what I'm doing" : "Vím co dělám", - "Reset password" : "Obnovit heslo", - "Password can not be changed. Please contact your administrator." : "Heslo nelze změnit. Kontaktujte prosím svého administrátora.", + "Password can not be changed. Please contact your administrator." : "Heslo nelze změnit. Kontaktujte prosím svého správce systému.", "No" : "Ne", "Yes" : "Ano", "Choose" : "Vybrat", @@ -119,16 +118,12 @@ "The update was successful. Redirecting you to ownCloud now." : "Aktualizace byla úspěšná. Přesměrovávám na ownCloud.", "Couldn't reset password because the token is invalid" : "Heslo nebylo změněno kvůli neplatnému tokenu", "Couldn't send reset email. Please make sure your username is correct." : "Nelze odeslat email pro změnu hesla. Ujistěte se prosím, že zadáváte správné uživatelské jméno.", - "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Nelze odeslat email pro změnu hesla, protože u tohoto uživatelského jména není uvedena e-mailová adresa. Kontaktujte prosím svého administrátora.", + "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Nelze odeslat email pro změnu hesla, protože u tohoto uživatelského jména není uvedena e-mailová adresa. Kontaktujte prosím svého správce systému.", "%s password reset" : "reset hesla %s", "Use the following link to reset your password: {link}" : "Heslo obnovíte použitím následujícího odkazu: {link}", - "You will receive a link to reset your password via Email." : "E-mailem Vám bude zaslán odkaz pro obnovu hesla.", - "Username" : "Uživatelské jméno", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Vaše soubory jsou šifrovány. Pokud nemáte povolen klíč pro obnovu, neexistuje způsob jak získat, po změně hesla, vaše data. Pokud si nejste jisti co dělat, kontaktujte nejprve svého správce. Opravdu si přejete pokračovat?", - "Yes, I really want to reset my password now" : "Ano, opravdu si nyní přeji obnovit mé heslo", - "Reset" : "Restartovat složku", "New password" : "Nové heslo", "New Password" : "Nové heslo", + "Reset password" : "Obnovit heslo", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X není podporován a %s nebude na této platformě správně fungovat. Používejte pouze na vlastní nebezpečí!", "For the best results, please consider using a GNU/Linux server instead." : "Místo toho zvažte pro nejlepší funkčnost použití GNU/Linux serveru.", "Personal" : "Osobní", @@ -152,7 +147,7 @@ "Cheers!" : "Ať slouží!", "Internal Server Error" : "Vnitřní chyba serveru", "The server encountered an internal error and was unable to complete your request." : "Server zaznamenal interní chybu a nebyl schopen dokončit váš požadavek.", - "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Kontaktujte prosím administrátora serveru, pokud se bude tato chyba opakovat. Připojte do svého hlášení níže zobrazené technické detaily.", + "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Kontaktujte prosím správce serveru, pokud se bude tato chyba opakovat. Připojte do svého hlášení níže zobrazené technické detaily.", "More details can be found in the server log." : "Více podrobností k nalezení v serverovém logu.", "Technical details" : "Technické detaily", "Remote Address: %s" : "Vzdálená adresa: %s", @@ -168,6 +163,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Váš adresář s daty a soubory jsou dostupné z internetu, protože soubor .htaccess nefunguje.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Pro informace, jak správně nastavit váš server, se podívejte do <a href=\"%s\" target=\"_blank\">dokumentace</a>.", "Create an <strong>admin account</strong>" : "Vytvořit <strong>účet správce</strong>", + "Username" : "Uživatelské jméno", "Password" : "Heslo", "Storage & database" : "Úložiště & databáze", "Data folder" : "Složka s daty", @@ -193,11 +189,11 @@ "Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Hej ty,<br><br>jen ti dávám vědět, že %s sdílí <strong>%s</strong> s tebou.<br><a href=\"%s\">Zobrazit!</a><br><br>", "This ownCloud instance is currently in single user mode." : "Tato instalace ownCloudu je momentálně v jednouživatelském módu.", "This means only administrators can use the instance." : "To znamená, že pouze správci systému mohou aplikaci používat.", - "Contact your system administrator if this message persists or appeared unexpectedly." : "Kontaktujte, prosím, správce systému, pokud se tato zpráva objevuje opakovaně nebo nečekaně.", - "Thank you for your patience." : "Děkuji za trpělivost.", + "Contact your system administrator if this message persists or appeared unexpectedly." : "Kontaktujte prosím správce systému, pokud se tato zpráva objevuje opakovaně nebo nečekaně.", + "Thank you for your patience." : "Děkujeme za vaši trpělivost.", "You are accessing the server from an untrusted domain." : "Přistupujete na server z nedůvěryhodné domény.", "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domain\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Kontaktujte prosím správce. Pokud jste správce této instalace, nastavte \"trusted_domain\" v souboru config/config.php. Příklad konfigurace najdete v souboru config/config.sample.php.", - "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "V závislosti na vaší konfiguraci vám může být, jako administrátorovi, umožněno použití tlačítka níže k označení této domény jako důvěryhodné.", + "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "V závislosti na vaší konfiguraci vám může být, jako správci, umožněno použití tlačítka níže k označení této domény jako důvěryhodné.", "Add \"%s\" as trusted domain" : "Přidat \"%s\" jako důvěryhodnou doménu", "%s will be updated to version %s." : "%s bude aktualizován na verzi %s.", "The following apps will be disabled:" : "Následující aplikace budou zakázány:", @@ -205,7 +201,7 @@ "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Před provedením dalšího kroku se prosím ujistěte, že databáze a konfigurační a datový adresář byly zazálohovány. ", "Start update" : "Spustit aktualizaci", "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Abyste zabránili vypršení časového limitu u větších instalací, můžete namísto toho spustit následující příkaz v hlavním adresáři:", - "This %s instance is currently being updated, which may take a while." : "Tato instalace %s je právě aktualizována a to může chvíli trvat.", + "This %s instance is currently being updated, which may take a while." : "Tato instalace %s je právě aktualizována. Mějte chvíli strpení.", "This page will refresh itself when the %s instance is available again." : "Tato stránka se automaticky načte poté, co bude opět dostupná instance %s." },"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" }
\ No newline at end of file diff --git a/core/l10n/cy_GB.js b/core/l10n/cy_GB.js index b5fbab1efb6..06d8b6a1817 100644 --- a/core/l10n/cy_GB.js +++ b/core/l10n/cy_GB.js @@ -22,7 +22,6 @@ OC.L10N.register( "December" : "Rhagfyr", "Settings" : "Gosodiadau", "Saving..." : "Yn cadw...", - "Reset password" : "Ailosod cyfrinair", "No" : "Na", "Yes" : "Ie", "Choose" : "Dewisiwch", @@ -64,9 +63,8 @@ OC.L10N.register( "_download %n file_::_download %n files_" : ["","","",""], "The update was successful. Redirecting you to ownCloud now." : "Roedd y diweddariad yn llwyddiannus. Cewch eich ailgyfeirio i ownCloud nawr.", "Use the following link to reset your password: {link}" : "Defnyddiwch y ddolen hon i ailosod eich cyfrinair: {link}", - "You will receive a link to reset your password via Email." : "Byddwch yn derbyn dolen drwy e-bost i ailosod eich cyfrinair.", - "Username" : "Enw defnyddiwr", "New password" : "Cyfrinair newydd", + "Reset password" : "Ailosod cyfrinair", "Personal" : "Personol", "Users" : "Defnyddwyr", "Apps" : "Pecynnau", @@ -77,6 +75,7 @@ OC.L10N.register( "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" : "Mae eich fersiwn PHP yn agored i ymosodiad NULL Byte (CVE-2006-7243)", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Mwy na thebyg fod modd cyrraedd eich cyfeiriadur data a ffeilau o'r rhyngrwyd oherwydd nid yw'r ffeil .htaccess yn gweithio. ", "Create an <strong>admin account</strong>" : "Crewch <strong>gyfrif gweinyddol</strong>", + "Username" : "Enw defnyddiwr", "Password" : "Cyfrinair", "Data folder" : "Plygell data", "Configure the database" : "Cyflunio'r gronfa ddata", diff --git a/core/l10n/cy_GB.json b/core/l10n/cy_GB.json index c3749e52468..a2df02a5e75 100644 --- a/core/l10n/cy_GB.json +++ b/core/l10n/cy_GB.json @@ -20,7 +20,6 @@ "December" : "Rhagfyr", "Settings" : "Gosodiadau", "Saving..." : "Yn cadw...", - "Reset password" : "Ailosod cyfrinair", "No" : "Na", "Yes" : "Ie", "Choose" : "Dewisiwch", @@ -62,9 +61,8 @@ "_download %n file_::_download %n files_" : ["","","",""], "The update was successful. Redirecting you to ownCloud now." : "Roedd y diweddariad yn llwyddiannus. Cewch eich ailgyfeirio i ownCloud nawr.", "Use the following link to reset your password: {link}" : "Defnyddiwch y ddolen hon i ailosod eich cyfrinair: {link}", - "You will receive a link to reset your password via Email." : "Byddwch yn derbyn dolen drwy e-bost i ailosod eich cyfrinair.", - "Username" : "Enw defnyddiwr", "New password" : "Cyfrinair newydd", + "Reset password" : "Ailosod cyfrinair", "Personal" : "Personol", "Users" : "Defnyddwyr", "Apps" : "Pecynnau", @@ -75,6 +73,7 @@ "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" : "Mae eich fersiwn PHP yn agored i ymosodiad NULL Byte (CVE-2006-7243)", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Mwy na thebyg fod modd cyrraedd eich cyfeiriadur data a ffeilau o'r rhyngrwyd oherwydd nid yw'r ffeil .htaccess yn gweithio. ", "Create an <strong>admin account</strong>" : "Crewch <strong>gyfrif gweinyddol</strong>", + "Username" : "Enw defnyddiwr", "Password" : "Cyfrinair", "Data folder" : "Plygell data", "Configure the database" : "Cyflunio'r gronfa ddata", diff --git a/core/l10n/da.js b/core/l10n/da.js index 64bd64582a7..a1222792fc5 100644 --- a/core/l10n/da.js +++ b/core/l10n/da.js @@ -39,7 +39,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Linket til at nulstille dit kodeord er blevet sendt til din e-post: hvis du ikke modtager den inden for en rimelig tid, så tjek dine spam/junk-mapper.<br> Hvis det ikke er der, så spørg din lokale administrator.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Dine filer er krypterede. Hvis du ikke har aktiveret gendannelsesnøglen kan du ikke få dine data tilbage efter at du har ændret adgangskode.<br />Hvis du ikke er sikker på, hvad du skal gøre så kontakt din administrator før du fortsætter.<br />Vil du fortsætte?", "I know what I'm doing" : "Jeg ved, hvad jeg har gang i", - "Reset password" : "Nulstil kodeord", "Password can not be changed. Please contact your administrator." : "Adgangskoden kunne ikke ændres. Kontakt venligst din administrator.", "No" : "Nej", "Yes" : "Ja", @@ -124,13 +123,9 @@ OC.L10N.register( "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Der opstod et problem under afsendelse af nulstillings-e-mailen. Der ikke er nogen email adresse tilknyttet denne bruger konto. Kontakt venligst systemadministratoren", "%s password reset" : "%s adgangskode nulstillet", "Use the following link to reset your password: {link}" : "Anvend følgende link til at nulstille din adgangskode: {link}", - "You will receive a link to reset your password via Email." : "Du vil modtage et link til at nulstille dit kodeord via e-mail.", - "Username" : "Brugernavn", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Dine filer er krypterede. Hvis du ikke har aktiveret gendannelsesnøglen kan du ikke få dine data tilbage efter at du har ændret adgangskode. HVis du ikke er sikker på, hvad du skal gøre så kontakt din administrator før du fortsætter. Vil du fortsætte?", - "Yes, I really want to reset my password now" : "Ja, Jeg ønsker virkelig at nulstille mit kodeord", - "Reset" : "Nulstil", "New password" : "Nyt kodeord", "New Password" : "Ny adgangskode", + "Reset password" : "Nulstil kodeord", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X understøttes ikke og %s vil ikke virke optimalt på denne platform. Anvend på eget ansvar!", "For the best results, please consider using a GNU/Linux server instead." : "For de bedste resultater, overvej venligst at bruge en GNU/Linux-server i stedet.", "Personal" : "Personligt", @@ -170,6 +165,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Dine data mappe og filer er sandsynligvis tilgængelige fra internettet fordi .htaccess filen ikke virker.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "For information om, hvordan du konfigurerer din server korrekt se <a href=\"%s\" target=\"_blank\">dokumentationen</a>.", "Create an <strong>admin account</strong>" : "Opret en <strong>administratorkonto</strong>", + "Username" : "Brugernavn", "Password" : "Adgangskode", "Storage & database" : "Lager & database", "Data folder" : "Datamappe", diff --git a/core/l10n/da.json b/core/l10n/da.json index ed40172a698..5111e5d3e05 100644 --- a/core/l10n/da.json +++ b/core/l10n/da.json @@ -37,7 +37,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Linket til at nulstille dit kodeord er blevet sendt til din e-post: hvis du ikke modtager den inden for en rimelig tid, så tjek dine spam/junk-mapper.<br> Hvis det ikke er der, så spørg din lokale administrator.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Dine filer er krypterede. Hvis du ikke har aktiveret gendannelsesnøglen kan du ikke få dine data tilbage efter at du har ændret adgangskode.<br />Hvis du ikke er sikker på, hvad du skal gøre så kontakt din administrator før du fortsætter.<br />Vil du fortsætte?", "I know what I'm doing" : "Jeg ved, hvad jeg har gang i", - "Reset password" : "Nulstil kodeord", "Password can not be changed. Please contact your administrator." : "Adgangskoden kunne ikke ændres. Kontakt venligst din administrator.", "No" : "Nej", "Yes" : "Ja", @@ -122,13 +121,9 @@ "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Der opstod et problem under afsendelse af nulstillings-e-mailen. Der ikke er nogen email adresse tilknyttet denne bruger konto. Kontakt venligst systemadministratoren", "%s password reset" : "%s adgangskode nulstillet", "Use the following link to reset your password: {link}" : "Anvend følgende link til at nulstille din adgangskode: {link}", - "You will receive a link to reset your password via Email." : "Du vil modtage et link til at nulstille dit kodeord via e-mail.", - "Username" : "Brugernavn", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Dine filer er krypterede. Hvis du ikke har aktiveret gendannelsesnøglen kan du ikke få dine data tilbage efter at du har ændret adgangskode. HVis du ikke er sikker på, hvad du skal gøre så kontakt din administrator før du fortsætter. Vil du fortsætte?", - "Yes, I really want to reset my password now" : "Ja, Jeg ønsker virkelig at nulstille mit kodeord", - "Reset" : "Nulstil", "New password" : "Nyt kodeord", "New Password" : "Ny adgangskode", + "Reset password" : "Nulstil kodeord", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X understøttes ikke og %s vil ikke virke optimalt på denne platform. Anvend på eget ansvar!", "For the best results, please consider using a GNU/Linux server instead." : "For de bedste resultater, overvej venligst at bruge en GNU/Linux-server i stedet.", "Personal" : "Personligt", @@ -168,6 +163,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Dine data mappe og filer er sandsynligvis tilgængelige fra internettet fordi .htaccess filen ikke virker.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "For information om, hvordan du konfigurerer din server korrekt se <a href=\"%s\" target=\"_blank\">dokumentationen</a>.", "Create an <strong>admin account</strong>" : "Opret en <strong>administratorkonto</strong>", + "Username" : "Brugernavn", "Password" : "Adgangskode", "Storage & database" : "Lager & database", "Data folder" : "Datamappe", diff --git a/core/l10n/de.js b/core/l10n/de.js index 1258cf40251..6b603f3b68a 100644 --- a/core/l10n/de.js +++ b/core/l10n/de.js @@ -39,7 +39,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Der Link zum Rücksetzen Deines Passwort ist an Deine E-Mail-Adresse geschickt worden. Wenn Du ihn nicht innerhalb einer vernünftigen Zeit empfängst, prüfe Deine Spam-Verzeichnisse.<br>Wenn er nicht dort ist, frage Deinen lokalen Administrator.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Ihre Dateien sind verschlüsselt. Sollten Sie keinen Wiederherstellungschlüssel aktiviert haben, gibt es keine Möglichkeit an Ihre Daten zu kommen, wenn das Passwort zurückgesetzt wird.<br />Falls Sie sich nicht sicher sind, was Sie tun sollen, kontaktieren Sie bitte Ihren Administrator, bevor Sie fortfahren.<br />Wollen Sie wirklich fortfahren?", "I know what I'm doing" : "Ich weiß, was ich mache", - "Reset password" : "Passwort zurücksetzen", "Password can not be changed. Please contact your administrator." : "Passwort kann nicht geändert werden. Bitte kontaktiere Deinen Administrator.", "No" : "Nein", "Yes" : "Ja", @@ -124,13 +123,9 @@ OC.L10N.register( "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "E-Mail zum Zurücksetzen kann Aufgrund einer nicht vorhandenen E-Mail Adresse für diesen Nutzernamen nicht versendet werden. Bitte kontaktiere Deinen Administrator.", "%s password reset" : "%s-Passwort zurücksetzen", "Use the following link to reset your password: {link}" : "Nutze den nachfolgenden Link, um Dein Passwort zurückzusetzen: {link}", - "You will receive a link to reset your password via Email." : "Du erhältst einen Link per E-Mail, um Dein Passwort zurückzusetzen.", - "Username" : "Benutzername", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Deine Dateien sind verschlüsselt. Solltest Du keinen Wiederherstellungschlüssel aktiviert haben, gibt es keine Möglichkeit an Deine Daten zu kommen, wenn das Passwort zurückgesetzt wird. Falls Du Dir nicht sicher bist, was Du tun sollst, kontaktiere bitte Deinen Administrator, bevor Du fortfährst. Willst Du wirklich fortfahren?", - "Yes, I really want to reset my password now" : "Ja, ich will mein Passwort jetzt zurücksetzen", - "Reset" : "Zurücksetzen", "New password" : "Neues Passwort", "New Password" : "Neues Passwort", + "Reset password" : "Passwort zurücksetzen", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OSX wird nicht unterstützt und %s wird auf dieser Platform nicht korrekt funktionieren. Benutzung auf eigenes Risiko!", "For the best results, please consider using a GNU/Linux server instead." : "Für die besten Resultate sollte stattdessen ein GNU/Linux Server verwendet werden.", "Personal" : "Persönlich", @@ -170,6 +165,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Dein Datenverzeichnis und Deine Dateien sind wahrscheinlich vom Internet aus erreichbar, weil die .htaccess-Datei nicht funktioniert.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Für Informationen, wie Du Deinen Server richtig konfigurierst, lies bitte die <a href=\"%s\" target=\"_blank\">Dokumentation</a>.", "Create an <strong>admin account</strong>" : "<strong>Administrator-Konto</strong> anlegen", + "Username" : "Benutzername", "Password" : "Passwort", "Storage & database" : "Speicher & Datenbank", "Data folder" : "Datenverzeichnis", diff --git a/core/l10n/de.json b/core/l10n/de.json index 09a77d2ee9a..c1260e70618 100644 --- a/core/l10n/de.json +++ b/core/l10n/de.json @@ -37,7 +37,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Der Link zum Rücksetzen Deines Passwort ist an Deine E-Mail-Adresse geschickt worden. Wenn Du ihn nicht innerhalb einer vernünftigen Zeit empfängst, prüfe Deine Spam-Verzeichnisse.<br>Wenn er nicht dort ist, frage Deinen lokalen Administrator.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Ihre Dateien sind verschlüsselt. Sollten Sie keinen Wiederherstellungschlüssel aktiviert haben, gibt es keine Möglichkeit an Ihre Daten zu kommen, wenn das Passwort zurückgesetzt wird.<br />Falls Sie sich nicht sicher sind, was Sie tun sollen, kontaktieren Sie bitte Ihren Administrator, bevor Sie fortfahren.<br />Wollen Sie wirklich fortfahren?", "I know what I'm doing" : "Ich weiß, was ich mache", - "Reset password" : "Passwort zurücksetzen", "Password can not be changed. Please contact your administrator." : "Passwort kann nicht geändert werden. Bitte kontaktiere Deinen Administrator.", "No" : "Nein", "Yes" : "Ja", @@ -122,13 +121,9 @@ "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "E-Mail zum Zurücksetzen kann Aufgrund einer nicht vorhandenen E-Mail Adresse für diesen Nutzernamen nicht versendet werden. Bitte kontaktiere Deinen Administrator.", "%s password reset" : "%s-Passwort zurücksetzen", "Use the following link to reset your password: {link}" : "Nutze den nachfolgenden Link, um Dein Passwort zurückzusetzen: {link}", - "You will receive a link to reset your password via Email." : "Du erhältst einen Link per E-Mail, um Dein Passwort zurückzusetzen.", - "Username" : "Benutzername", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Deine Dateien sind verschlüsselt. Solltest Du keinen Wiederherstellungschlüssel aktiviert haben, gibt es keine Möglichkeit an Deine Daten zu kommen, wenn das Passwort zurückgesetzt wird. Falls Du Dir nicht sicher bist, was Du tun sollst, kontaktiere bitte Deinen Administrator, bevor Du fortfährst. Willst Du wirklich fortfahren?", - "Yes, I really want to reset my password now" : "Ja, ich will mein Passwort jetzt zurücksetzen", - "Reset" : "Zurücksetzen", "New password" : "Neues Passwort", "New Password" : "Neues Passwort", + "Reset password" : "Passwort zurücksetzen", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OSX wird nicht unterstützt und %s wird auf dieser Platform nicht korrekt funktionieren. Benutzung auf eigenes Risiko!", "For the best results, please consider using a GNU/Linux server instead." : "Für die besten Resultate sollte stattdessen ein GNU/Linux Server verwendet werden.", "Personal" : "Persönlich", @@ -168,6 +163,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Dein Datenverzeichnis und Deine Dateien sind wahrscheinlich vom Internet aus erreichbar, weil die .htaccess-Datei nicht funktioniert.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Für Informationen, wie Du Deinen Server richtig konfigurierst, lies bitte die <a href=\"%s\" target=\"_blank\">Dokumentation</a>.", "Create an <strong>admin account</strong>" : "<strong>Administrator-Konto</strong> anlegen", + "Username" : "Benutzername", "Password" : "Passwort", "Storage & database" : "Speicher & Datenbank", "Data folder" : "Datenverzeichnis", diff --git a/core/l10n/de_DE.js b/core/l10n/de_DE.js index 017ecd1c4fa..aaf21aaf95e 100644 --- a/core/l10n/de_DE.js +++ b/core/l10n/de_DE.js @@ -39,7 +39,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Der Link, zum Zurücksetzen Ihres Passwortes, ist an Ihre E-Mail-Adresse geschickt worden. Wenn Sie ihn nicht innerhalb einer vernünftigen Zeit empfangen, überprüfen Sie bitte Ihre Spam-Ordner.<br>Wenn sie nicht dort ist, fragen Sie bitte Ihren lokalen Administrator.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Ihre Dateien sind verschlüsselt. Wenn Sie den Wiederherstellungsschlüssel nicht aktiviert haben, wird es keine Möglichkeit geben, um Ihre Daten wieder zu erhalten, nachdem Ihr Passwort zurückgesetzt wurde.<br />Wenn Sie sich nicht sicher sind, was Sie tun sollen, wenden Sie sich bitte an Ihren Administrator, bevor Sie fortfahren.<br />Wollen Sie wirklich fortfahren?", "I know what I'm doing" : "Ich weiß, was ich mache", - "Reset password" : "Passwort zurücksetzen", "Password can not be changed. Please contact your administrator." : "Passwort kann nicht geändert werden. Bitte kontaktieren Sie Ihren Administrator.", "No" : "Nein", "Yes" : "Ja", @@ -124,13 +123,9 @@ OC.L10N.register( "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Die E-Mail, zum Zurücksetzen, kann Aufgrund einer nicht vorhandenen E-Mail-Adresse, für diesen Benutzernamen, nicht versendet werden. Bitte kontaktieren Sie Ihren Administrator.", "%s password reset" : "%s-Passwort zurücksetzen", "Use the following link to reset your password: {link}" : "Nutzen Sie den nachfolgenden Link, um Ihr Passwort zurückzusetzen: {link}", - "You will receive a link to reset your password via Email." : "Sie erhalten einen Link per E-Mail, um Ihr Passwort zurückzusetzen.", - "Username" : "Benutzername", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Ihre Dateien sind verschlüsselt. Wenn Sie den Wiederherstellungsschlüssel nicht aktiviert haben, wird es keine Möglichkeit geben, um Ihre Daten wiederzubekommen, nachdem Ihr Passwort zurückgesetzt wurde. Wenn Sie sich nicht sicher sind, was Sie tun sollen, wenden Sie sich bitte an Ihren Administrator, bevor Sie fortfahren. Wollen Sie wirklich fortfahren?", - "Yes, I really want to reset my password now" : "Ja, ich möchte jetzt mein Passwort wirklich zurücksetzen.", - "Reset" : "Zurücksetzen", "New password" : "Neues Passwort", "New Password" : "Neues Passwort", + "Reset password" : "Passwort zurücksetzen", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OSX wird nicht unterstützt und %s wird auf dieser Platform nicht richtig funktionieren. Benutzung auf eigenes Risiko!", "For the best results, please consider using a GNU/Linux server instead." : "Für die besten Resultate sollte stattdessen ein GNU/Linux Server verwendet werden.", "Personal" : "Persönlich", @@ -170,6 +165,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Ihr Datenverzeichnis und Ihre Dateien sind wahrscheinlich vom Internet aus erreichbar, weil die .htaccess-Datei nicht funktioniert.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Bitte lesen Sie die <a href=\"%s\" target=\"_blank\">Dokumentation</a>, um zu erfahren, wie Sie Ihren Server richtig konfigurieren können.", "Create an <strong>admin account</strong>" : "<strong>Administrator-Konto</strong> anlegen", + "Username" : "Benutzername", "Password" : "Passwort", "Storage & database" : "Speicher & Datenbank", "Data folder" : "Datenverzeichnis", diff --git a/core/l10n/de_DE.json b/core/l10n/de_DE.json index d6d0c73a777..39e3fd53719 100644 --- a/core/l10n/de_DE.json +++ b/core/l10n/de_DE.json @@ -37,7 +37,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Der Link, zum Zurücksetzen Ihres Passwortes, ist an Ihre E-Mail-Adresse geschickt worden. Wenn Sie ihn nicht innerhalb einer vernünftigen Zeit empfangen, überprüfen Sie bitte Ihre Spam-Ordner.<br>Wenn sie nicht dort ist, fragen Sie bitte Ihren lokalen Administrator.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Ihre Dateien sind verschlüsselt. Wenn Sie den Wiederherstellungsschlüssel nicht aktiviert haben, wird es keine Möglichkeit geben, um Ihre Daten wieder zu erhalten, nachdem Ihr Passwort zurückgesetzt wurde.<br />Wenn Sie sich nicht sicher sind, was Sie tun sollen, wenden Sie sich bitte an Ihren Administrator, bevor Sie fortfahren.<br />Wollen Sie wirklich fortfahren?", "I know what I'm doing" : "Ich weiß, was ich mache", - "Reset password" : "Passwort zurücksetzen", "Password can not be changed. Please contact your administrator." : "Passwort kann nicht geändert werden. Bitte kontaktieren Sie Ihren Administrator.", "No" : "Nein", "Yes" : "Ja", @@ -122,13 +121,9 @@ "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Die E-Mail, zum Zurücksetzen, kann Aufgrund einer nicht vorhandenen E-Mail-Adresse, für diesen Benutzernamen, nicht versendet werden. Bitte kontaktieren Sie Ihren Administrator.", "%s password reset" : "%s-Passwort zurücksetzen", "Use the following link to reset your password: {link}" : "Nutzen Sie den nachfolgenden Link, um Ihr Passwort zurückzusetzen: {link}", - "You will receive a link to reset your password via Email." : "Sie erhalten einen Link per E-Mail, um Ihr Passwort zurückzusetzen.", - "Username" : "Benutzername", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Ihre Dateien sind verschlüsselt. Wenn Sie den Wiederherstellungsschlüssel nicht aktiviert haben, wird es keine Möglichkeit geben, um Ihre Daten wiederzubekommen, nachdem Ihr Passwort zurückgesetzt wurde. Wenn Sie sich nicht sicher sind, was Sie tun sollen, wenden Sie sich bitte an Ihren Administrator, bevor Sie fortfahren. Wollen Sie wirklich fortfahren?", - "Yes, I really want to reset my password now" : "Ja, ich möchte jetzt mein Passwort wirklich zurücksetzen.", - "Reset" : "Zurücksetzen", "New password" : "Neues Passwort", "New Password" : "Neues Passwort", + "Reset password" : "Passwort zurücksetzen", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OSX wird nicht unterstützt und %s wird auf dieser Platform nicht richtig funktionieren. Benutzung auf eigenes Risiko!", "For the best results, please consider using a GNU/Linux server instead." : "Für die besten Resultate sollte stattdessen ein GNU/Linux Server verwendet werden.", "Personal" : "Persönlich", @@ -168,6 +163,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Ihr Datenverzeichnis und Ihre Dateien sind wahrscheinlich vom Internet aus erreichbar, weil die .htaccess-Datei nicht funktioniert.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Bitte lesen Sie die <a href=\"%s\" target=\"_blank\">Dokumentation</a>, um zu erfahren, wie Sie Ihren Server richtig konfigurieren können.", "Create an <strong>admin account</strong>" : "<strong>Administrator-Konto</strong> anlegen", + "Username" : "Benutzername", "Password" : "Passwort", "Storage & database" : "Speicher & Datenbank", "Data folder" : "Datenverzeichnis", diff --git a/core/l10n/el.js b/core/l10n/el.js index 9d54904faa6..c41928116ba 100644 --- a/core/l10n/el.js +++ b/core/l10n/el.js @@ -39,7 +39,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Ο σύνδεσμος για την επαναφορά του κωδικού πρόσβασής σας απεστάλη στο ηλ. ταχυδρομείο σας. Εάν δεν το παραλάβετε μέσα σε ένα εύλογο χρονικό διάστημα, ελέγξτε το φάκελο ανεπιθύμητων μηνυμάτων σας. <br>Εάν δεν βρίσκεται εκεί ρωτήστε τον τοπικό διαχειριστή σας.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Τα αρχεία σας είναι κρυπτογραφημένα. Εάν δεν έχετε ενεργοποιήσει το κλειδί επαναφοράς, δεν θα υπάρχει τρόπος να ανακτήσετε τα δεδομένα σας μετά την επαναφορά του κωδικού πρόσβασής σας.<br />Εάν δεν είστε σίγουροι για το τι θα θέλατε να κάνετε, παρακαλώ επικοινωνήστε με το διαχειριστή σας πριν συνεχίσετε. <br />Θέλετε στ' αλήθεια να συνεχίσετε;", "I know what I'm doing" : "Γνωρίζω τι κάνω", - "Reset password" : "Επαναφορά συνθηματικού", "Password can not be changed. Please contact your administrator." : "Ο κωδικός πρόσβασης δεν μπορεί να αλλάξει. Παρακαλώ επικοινωνήστε με το διαχειριστή σας.", "No" : "Όχι", "Yes" : "Ναι", @@ -110,7 +109,8 @@ OC.L10N.register( "Edit tags" : "Επεξεργασία ετικετών", "Error loading dialog template: {error}" : "Σφάλμα φόρτωσης προτύπου διαλόγων: {σφάλμα}", "No tags selected for deletion." : "Καμμία ετικέτα δεν επιλέχθηκε για διαγραφή.", - "_download %n file_::_download %n files_" : ["",""], + "unknown text" : "άγνωστο κείμενο", + "_download %n file_::_download %n files_" : ["λήψη %n αρχείου","λήψη %n αρχείων"], "Updating {productName} to version {version}, this may take a while." : "Ενημέρωση του {productName} στην έκδοση {version}, αυτό μπορεί να διαρκέσει λίγη ώρα.", "Please reload the page." : "Παρακαλώ επαναφορτώστε τη σελίδα.", "The update was unsuccessful." : "Η ενημέρωση δεν ήταν επιτυχής.", @@ -120,13 +120,9 @@ OC.L10N.register( "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Αδυναμία αποστολής ηλ. μηνύματος επαναφοράς καθώς δεν αντιστοιχεί καμμία διεύθυνση ηλ. ταχυδρομείου σε αυτό το όνομα χρήστη. Παρακαλώ επικοινωνήστε με το διαχειριστή σας.", "%s password reset" : "%s επαναφορά κωδικού πρόσβασης", "Use the following link to reset your password: {link}" : "Χρησιμοποιήστε τον ακόλουθο σύνδεσμο για να επανεκδόσετε τον κωδικό: {link}", - "You will receive a link to reset your password via Email." : "Θα λάβετε ένα σύνδεσμο για να επαναφέρετε τον κωδικό πρόσβασής σας μέσω ηλεκτρονικού ταχυδρομείου.", - "Username" : "Όνομα χρήστη", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Τα αρχεία σας είναι κρυπτογραφημένα. Εάν δεν έχετε ενεργοποιήσει το κλειδί ανάκτησης, δεν υπάρχει περίπτωση να έχετε πρόσβαση στα δεδομένα σας μετά την επαναφορά του συνθηματικού. Εάν δεν είστε σίγουροι τι να κάνετε, παρακαλώ επικοινωνήστε με τον διαχειριστή πριν συνεχίσετε. Θέλετε να συνεχίσετε;", - "Yes, I really want to reset my password now" : "Ναι, θέλω να επαναφέρω το συνθηματικό μου τώρα.", - "Reset" : "Επαναφορά", "New password" : "Νέο συνθηματικό", "New Password" : "Νέος Κωδικός", + "Reset password" : "Επαναφορά συνθηματικού", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Το Mac OS X δεν υποστηρίζεται και το %s δεν θα λειτουργήσει σωστά σε αυτή την πλατφόρμα. Χρησιμοποιείτε με δική σας ευθύνη!", "For the best results, please consider using a GNU/Linux server instead." : "Για καλύτερα αποτελέσματα, παρακαλούμε εξετάστε την μετατροπή σε έναν διακομιστή GNU/Linux.", "Personal" : "Προσωπικά", @@ -166,6 +162,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Ο κατάλογος δεδομένων και τα αρχεία σας είναι πιθανό προσβάσιμα από το internet γιατί δεν δουλεύει το αρχείο .htaccess.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Για πληροφορίες πως να ρυθμίσετε ορθά τον διακομιστή σας, παρακαλώ δείτε την <a href=\"%s\" target=\"_blank\">τεκμηρίωση</a>.", "Create an <strong>admin account</strong>" : "Δημιουργήστε έναν <strong>λογαριασμό διαχειριστή</strong>", + "Username" : "Όνομα χρήστη", "Password" : "Συνθηματικό", "Storage & database" : "Αποθήκευση & βάση δεδομένων", "Data folder" : "Φάκελος δεδομένων", diff --git a/core/l10n/el.json b/core/l10n/el.json index 259ad682028..6b08b8262c8 100644 --- a/core/l10n/el.json +++ b/core/l10n/el.json @@ -37,7 +37,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Ο σύνδεσμος για την επαναφορά του κωδικού πρόσβασής σας απεστάλη στο ηλ. ταχυδρομείο σας. Εάν δεν το παραλάβετε μέσα σε ένα εύλογο χρονικό διάστημα, ελέγξτε το φάκελο ανεπιθύμητων μηνυμάτων σας. <br>Εάν δεν βρίσκεται εκεί ρωτήστε τον τοπικό διαχειριστή σας.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Τα αρχεία σας είναι κρυπτογραφημένα. Εάν δεν έχετε ενεργοποιήσει το κλειδί επαναφοράς, δεν θα υπάρχει τρόπος να ανακτήσετε τα δεδομένα σας μετά την επαναφορά του κωδικού πρόσβασής σας.<br />Εάν δεν είστε σίγουροι για το τι θα θέλατε να κάνετε, παρακαλώ επικοινωνήστε με το διαχειριστή σας πριν συνεχίσετε. <br />Θέλετε στ' αλήθεια να συνεχίσετε;", "I know what I'm doing" : "Γνωρίζω τι κάνω", - "Reset password" : "Επαναφορά συνθηματικού", "Password can not be changed. Please contact your administrator." : "Ο κωδικός πρόσβασης δεν μπορεί να αλλάξει. Παρακαλώ επικοινωνήστε με το διαχειριστή σας.", "No" : "Όχι", "Yes" : "Ναι", @@ -108,7 +107,8 @@ "Edit tags" : "Επεξεργασία ετικετών", "Error loading dialog template: {error}" : "Σφάλμα φόρτωσης προτύπου διαλόγων: {σφάλμα}", "No tags selected for deletion." : "Καμμία ετικέτα δεν επιλέχθηκε για διαγραφή.", - "_download %n file_::_download %n files_" : ["",""], + "unknown text" : "άγνωστο κείμενο", + "_download %n file_::_download %n files_" : ["λήψη %n αρχείου","λήψη %n αρχείων"], "Updating {productName} to version {version}, this may take a while." : "Ενημέρωση του {productName} στην έκδοση {version}, αυτό μπορεί να διαρκέσει λίγη ώρα.", "Please reload the page." : "Παρακαλώ επαναφορτώστε τη σελίδα.", "The update was unsuccessful." : "Η ενημέρωση δεν ήταν επιτυχής.", @@ -118,13 +118,9 @@ "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Αδυναμία αποστολής ηλ. μηνύματος επαναφοράς καθώς δεν αντιστοιχεί καμμία διεύθυνση ηλ. ταχυδρομείου σε αυτό το όνομα χρήστη. Παρακαλώ επικοινωνήστε με το διαχειριστή σας.", "%s password reset" : "%s επαναφορά κωδικού πρόσβασης", "Use the following link to reset your password: {link}" : "Χρησιμοποιήστε τον ακόλουθο σύνδεσμο για να επανεκδόσετε τον κωδικό: {link}", - "You will receive a link to reset your password via Email." : "Θα λάβετε ένα σύνδεσμο για να επαναφέρετε τον κωδικό πρόσβασής σας μέσω ηλεκτρονικού ταχυδρομείου.", - "Username" : "Όνομα χρήστη", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Τα αρχεία σας είναι κρυπτογραφημένα. Εάν δεν έχετε ενεργοποιήσει το κλειδί ανάκτησης, δεν υπάρχει περίπτωση να έχετε πρόσβαση στα δεδομένα σας μετά την επαναφορά του συνθηματικού. Εάν δεν είστε σίγουροι τι να κάνετε, παρακαλώ επικοινωνήστε με τον διαχειριστή πριν συνεχίσετε. Θέλετε να συνεχίσετε;", - "Yes, I really want to reset my password now" : "Ναι, θέλω να επαναφέρω το συνθηματικό μου τώρα.", - "Reset" : "Επαναφορά", "New password" : "Νέο συνθηματικό", "New Password" : "Νέος Κωδικός", + "Reset password" : "Επαναφορά συνθηματικού", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Το Mac OS X δεν υποστηρίζεται και το %s δεν θα λειτουργήσει σωστά σε αυτή την πλατφόρμα. Χρησιμοποιείτε με δική σας ευθύνη!", "For the best results, please consider using a GNU/Linux server instead." : "Για καλύτερα αποτελέσματα, παρακαλούμε εξετάστε την μετατροπή σε έναν διακομιστή GNU/Linux.", "Personal" : "Προσωπικά", @@ -164,6 +160,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Ο κατάλογος δεδομένων και τα αρχεία σας είναι πιθανό προσβάσιμα από το internet γιατί δεν δουλεύει το αρχείο .htaccess.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Για πληροφορίες πως να ρυθμίσετε ορθά τον διακομιστή σας, παρακαλώ δείτε την <a href=\"%s\" target=\"_blank\">τεκμηρίωση</a>.", "Create an <strong>admin account</strong>" : "Δημιουργήστε έναν <strong>λογαριασμό διαχειριστή</strong>", + "Username" : "Όνομα χρήστη", "Password" : "Συνθηματικό", "Storage & database" : "Αποθήκευση & βάση δεδομένων", "Data folder" : "Φάκελος δεδομένων", diff --git a/core/l10n/en_GB.js b/core/l10n/en_GB.js index dd27b6c114d..27f28c84908 100644 --- a/core/l10n/en_GB.js +++ b/core/l10n/en_GB.js @@ -39,7 +39,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?", "I know what I'm doing" : "I know what I'm doing", - "Reset password" : "Reset password", "Password can not be changed. Please contact your administrator." : "Password can not be changed. Please contact your administrator.", "No" : "No", "Yes" : "Yes", @@ -64,7 +63,7 @@ OC.L10N.register( "Good password" : "Good password", "Strong password" : "Strong password", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." : "Your web server is not yet properly setup to allow files synchronisation because the WebDAV interface seems to be broken.", - "This server has no working internet connection. This means that some of the features like mounting of external storage, notifications about updates or installation of 3rd party apps don´t work. Accessing files from remote and sending of notification emails might also not work. We suggest to enable internet connection for this server if you want to have all features." : "This server has no working internet connection. This means that some of the features like mounting of external storage, notifications about updates or installation of 3rd party apps don't work. Accessing files from remote and sending of notification emails might also not work. We suggest to enable internet connection for this server if you want to have all features.", + "This server has no working internet connection. This means that some of the features like mounting of external storage, notifications about updates or installation of 3rd party apps don´t work. Accessing files from remote and sending of notification emails might also not work. We suggest to enable internet connection for this server if you want to have all features." : "This server has no working internet connection. This means that some of the features such as mounting external storage, notifications about updates, or installation of 3rd party apps won't work. Accessing files remotely and sending notification emails might also not work. We suggest enabling an internet connection for this server if you want to have all the features.", "Error occurred while checking server setup" : "Error occurred whilst checking server setup", "Shared" : "Shared", "Shared with {recipients}" : "Shared with {recipients}", @@ -124,13 +123,9 @@ OC.L10N.register( "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Couldn't send reset email because there is no email address for this username. Please contact your administrator.", "%s password reset" : "%s password reset", "Use the following link to reset your password: {link}" : "Use the following link to reset your password: {link}", - "You will receive a link to reset your password via Email." : "You will receive a link to reset your password via email.", - "Username" : "Username", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?", - "Yes, I really want to reset my password now" : "Yes, I really want to reset my password now", - "Reset" : "Reset", "New password" : "New password", "New Password" : "New Password", + "Reset password" : "Reset password", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! ", "For the best results, please consider using a GNU/Linux server instead." : "For the best results, please consider using a GNU/Linux server instead.", "Personal" : "Personal", @@ -170,6 +165,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Your data directory and files are probably accessible from the internet because the .htaccess file does not work.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>.", "Create an <strong>admin account</strong>" : "Create an <strong>admin account</strong>", + "Username" : "Username", "Password" : "Password", "Storage & database" : "Storage & database", "Data folder" : "Data folder", diff --git a/core/l10n/en_GB.json b/core/l10n/en_GB.json index b1f6556f900..c4daf4bbb97 100644 --- a/core/l10n/en_GB.json +++ b/core/l10n/en_GB.json @@ -37,7 +37,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?", "I know what I'm doing" : "I know what I'm doing", - "Reset password" : "Reset password", "Password can not be changed. Please contact your administrator." : "Password can not be changed. Please contact your administrator.", "No" : "No", "Yes" : "Yes", @@ -62,7 +61,7 @@ "Good password" : "Good password", "Strong password" : "Strong password", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." : "Your web server is not yet properly setup to allow files synchronisation because the WebDAV interface seems to be broken.", - "This server has no working internet connection. This means that some of the features like mounting of external storage, notifications about updates or installation of 3rd party apps don´t work. Accessing files from remote and sending of notification emails might also not work. We suggest to enable internet connection for this server if you want to have all features." : "This server has no working internet connection. This means that some of the features like mounting of external storage, notifications about updates or installation of 3rd party apps don't work. Accessing files from remote and sending of notification emails might also not work. We suggest to enable internet connection for this server if you want to have all features.", + "This server has no working internet connection. This means that some of the features like mounting of external storage, notifications about updates or installation of 3rd party apps don´t work. Accessing files from remote and sending of notification emails might also not work. We suggest to enable internet connection for this server if you want to have all features." : "This server has no working internet connection. This means that some of the features such as mounting external storage, notifications about updates, or installation of 3rd party apps won't work. Accessing files remotely and sending notification emails might also not work. We suggest enabling an internet connection for this server if you want to have all the features.", "Error occurred while checking server setup" : "Error occurred whilst checking server setup", "Shared" : "Shared", "Shared with {recipients}" : "Shared with {recipients}", @@ -122,13 +121,9 @@ "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Couldn't send reset email because there is no email address for this username. Please contact your administrator.", "%s password reset" : "%s password reset", "Use the following link to reset your password: {link}" : "Use the following link to reset your password: {link}", - "You will receive a link to reset your password via Email." : "You will receive a link to reset your password via email.", - "Username" : "Username", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?", - "Yes, I really want to reset my password now" : "Yes, I really want to reset my password now", - "Reset" : "Reset", "New password" : "New password", "New Password" : "New Password", + "Reset password" : "Reset password", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! ", "For the best results, please consider using a GNU/Linux server instead." : "For the best results, please consider using a GNU/Linux server instead.", "Personal" : "Personal", @@ -168,6 +163,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Your data directory and files are probably accessible from the internet because the .htaccess file does not work.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>.", "Create an <strong>admin account</strong>" : "Create an <strong>admin account</strong>", + "Username" : "Username", "Password" : "Password", "Storage & database" : "Storage & database", "Data folder" : "Data folder", diff --git a/core/l10n/eo.js b/core/l10n/eo.js index cc814c41e35..813d872a640 100644 --- a/core/l10n/eo.js +++ b/core/l10n/eo.js @@ -25,7 +25,6 @@ OC.L10N.register( "December" : "Decembro", "Settings" : "Agordo", "Saving..." : "Konservante...", - "Reset password" : "Rekomenci la pasvorton", "No" : "Ne", "Yes" : "Jes", "Choose" : "Elekti", @@ -86,10 +85,8 @@ OC.L10N.register( "Please reload the page." : "Bonvolu reŝargi la paĝon.", "The update was successful. Redirecting you to ownCloud now." : "La ĝisdatigo estis sukcesa. Alidirektante nun al ownCloud.", "Use the following link to reset your password: {link}" : "Uzu la jenan ligilon por restarigi vian pasvorton: {link}", - "You will receive a link to reset your password via Email." : "Vi ricevos ligilon retpoŝte por rekomencigi vian pasvorton.", - "Username" : "Uzantonomo", - "Yes, I really want to reset my password now" : "Jes, mi vere volas restarigi mian pasvorton nun", "New password" : "Nova pasvorto", + "Reset password" : "Rekomenci la pasvorton", "Personal" : "Persona", "Users" : "Uzantoj", "Apps" : "Aplikaĵoj", @@ -105,6 +102,7 @@ OC.L10N.register( "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" : "Via PHP versio estas sendefenda je la NULL bajto atako (CVE-2006-7243)", "Please update your PHP installation to use %s securely." : "Bonvolu ĝisdatigi vian PHP-instalon por uzi %s sekure.", "Create an <strong>admin account</strong>" : "Krei <strong>administran konton</strong>", + "Username" : "Uzantonomo", "Password" : "Pasvorto", "Data folder" : "Datuma dosierujo", "Configure the database" : "Agordi la datumbazon", diff --git a/core/l10n/eo.json b/core/l10n/eo.json index dc4d9d6eefc..64e2da42ecb 100644 --- a/core/l10n/eo.json +++ b/core/l10n/eo.json @@ -23,7 +23,6 @@ "December" : "Decembro", "Settings" : "Agordo", "Saving..." : "Konservante...", - "Reset password" : "Rekomenci la pasvorton", "No" : "Ne", "Yes" : "Jes", "Choose" : "Elekti", @@ -84,10 +83,8 @@ "Please reload the page." : "Bonvolu reŝargi la paĝon.", "The update was successful. Redirecting you to ownCloud now." : "La ĝisdatigo estis sukcesa. Alidirektante nun al ownCloud.", "Use the following link to reset your password: {link}" : "Uzu la jenan ligilon por restarigi vian pasvorton: {link}", - "You will receive a link to reset your password via Email." : "Vi ricevos ligilon retpoŝte por rekomencigi vian pasvorton.", - "Username" : "Uzantonomo", - "Yes, I really want to reset my password now" : "Jes, mi vere volas restarigi mian pasvorton nun", "New password" : "Nova pasvorto", + "Reset password" : "Rekomenci la pasvorton", "Personal" : "Persona", "Users" : "Uzantoj", "Apps" : "Aplikaĵoj", @@ -103,6 +100,7 @@ "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" : "Via PHP versio estas sendefenda je la NULL bajto atako (CVE-2006-7243)", "Please update your PHP installation to use %s securely." : "Bonvolu ĝisdatigi vian PHP-instalon por uzi %s sekure.", "Create an <strong>admin account</strong>" : "Krei <strong>administran konton</strong>", + "Username" : "Uzantonomo", "Password" : "Pasvorto", "Data folder" : "Datuma dosierujo", "Configure the database" : "Agordi la datumbazon", diff --git a/core/l10n/es.js b/core/l10n/es.js index b963b9d3f01..be1bb9ffe72 100644 --- a/core/l10n/es.js +++ b/core/l10n/es.js @@ -39,7 +39,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Un enlace para reiniciar su contraseña ha sido enviado a su correo electrónico. Si usted no lo recibe en un tiempo razonable, revise su carpeta para spam/chatarra.<br>Si no lo encuentra, pregunte a su administrador local.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Sus archivos están cifrados. Si no has activado la clave de recuperación, no habrá manera de recuperar los datos despues de que tu contraseña seá restablecida.<br /> Si no está seguro de lo que debe hacer, por favor contacte a su administrador antes de continuar.<br />¿Realmente desea continuar?", "I know what I'm doing" : "Yo se lo que estoy haciendo", - "Reset password" : "Restablecer contraseña", "Password can not be changed. Please contact your administrator." : "La contraseña no se puede cambiar. Por favor, contacte a su administrador.", "No" : "No", "Yes" : "Sí", @@ -124,13 +123,9 @@ OC.L10N.register( "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "No se pudo enviar la reiniciación del correo electrónico, porque no hay una dirección de correo electrónico asociada con este nombre de usuario. Por favor, contacte a su administrador.", "%s password reset" : "%s restablecer contraseña", "Use the following link to reset your password: {link}" : "Utilice el siguiente enlace para restablecer su contraseña: {link}", - "You will receive a link to reset your password via Email." : "Recibirá un enlace por correo electrónico para restablecer su contraseña", - "Username" : "Nombre de usuario", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Sus archivos están cifrados. Si no ha habilitado la clave de recurperación, no habrá forma de recuperar sus datos luego de que la contraseña sea reseteada. Si no está seguro de qué hacer, contacte a su administrador antes de continuar. ¿Realmente desea continuar?", - "Yes, I really want to reset my password now" : "Sí. Realmente deseo resetear mi contraseña ahora", - "Reset" : "Reiniciar", "New password" : "Nueva contraseña", "New Password" : "Nueva contraseña", + "Reset password" : "Restablecer contraseña", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X no está soportado y %s no funcionará bien en esta plataforma. ¡Úsela a su propio riesgo! ", "For the best results, please consider using a GNU/Linux server instead." : "Para óptimos resultados, considere utilizar un servidor GNU/Linux.", "Personal" : "Personal", @@ -170,6 +165,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Su directorio de datos y sus archivos probablemente sean accesibles a través de internet ya que el archivo .htaccess no funciona.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Para información de cómo configurar apropiadamente su servidor, por favor vea la <a href=\"%s\" target=\"_blank\">documentación</a>.", "Create an <strong>admin account</strong>" : "Crear una <strong>cuenta de administrador</strong>", + "Username" : "Nombre de usuario", "Password" : "Contraseña", "Storage & database" : "Almacenamiento y base de datos", "Data folder" : "Directorio de datos", diff --git a/core/l10n/es.json b/core/l10n/es.json index 008891d5c98..742703e87c9 100644 --- a/core/l10n/es.json +++ b/core/l10n/es.json @@ -37,7 +37,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Un enlace para reiniciar su contraseña ha sido enviado a su correo electrónico. Si usted no lo recibe en un tiempo razonable, revise su carpeta para spam/chatarra.<br>Si no lo encuentra, pregunte a su administrador local.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Sus archivos están cifrados. Si no has activado la clave de recuperación, no habrá manera de recuperar los datos despues de que tu contraseña seá restablecida.<br /> Si no está seguro de lo que debe hacer, por favor contacte a su administrador antes de continuar.<br />¿Realmente desea continuar?", "I know what I'm doing" : "Yo se lo que estoy haciendo", - "Reset password" : "Restablecer contraseña", "Password can not be changed. Please contact your administrator." : "La contraseña no se puede cambiar. Por favor, contacte a su administrador.", "No" : "No", "Yes" : "Sí", @@ -122,13 +121,9 @@ "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "No se pudo enviar la reiniciación del correo electrónico, porque no hay una dirección de correo electrónico asociada con este nombre de usuario. Por favor, contacte a su administrador.", "%s password reset" : "%s restablecer contraseña", "Use the following link to reset your password: {link}" : "Utilice el siguiente enlace para restablecer su contraseña: {link}", - "You will receive a link to reset your password via Email." : "Recibirá un enlace por correo electrónico para restablecer su contraseña", - "Username" : "Nombre de usuario", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Sus archivos están cifrados. Si no ha habilitado la clave de recurperación, no habrá forma de recuperar sus datos luego de que la contraseña sea reseteada. Si no está seguro de qué hacer, contacte a su administrador antes de continuar. ¿Realmente desea continuar?", - "Yes, I really want to reset my password now" : "Sí. Realmente deseo resetear mi contraseña ahora", - "Reset" : "Reiniciar", "New password" : "Nueva contraseña", "New Password" : "Nueva contraseña", + "Reset password" : "Restablecer contraseña", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X no está soportado y %s no funcionará bien en esta plataforma. ¡Úsela a su propio riesgo! ", "For the best results, please consider using a GNU/Linux server instead." : "Para óptimos resultados, considere utilizar un servidor GNU/Linux.", "Personal" : "Personal", @@ -168,6 +163,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Su directorio de datos y sus archivos probablemente sean accesibles a través de internet ya que el archivo .htaccess no funciona.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Para información de cómo configurar apropiadamente su servidor, por favor vea la <a href=\"%s\" target=\"_blank\">documentación</a>.", "Create an <strong>admin account</strong>" : "Crear una <strong>cuenta de administrador</strong>", + "Username" : "Nombre de usuario", "Password" : "Contraseña", "Storage & database" : "Almacenamiento y base de datos", "Data folder" : "Directorio de datos", diff --git a/core/l10n/es_AR.js b/core/l10n/es_AR.js index f37377f465c..fae6284acf7 100644 --- a/core/l10n/es_AR.js +++ b/core/l10n/es_AR.js @@ -31,7 +31,6 @@ OC.L10N.register( "December" : "diciembre", "Settings" : "Configuración", "Saving..." : "Guardando...", - "Reset password" : "Restablecer contraseña", "No" : "No", "Yes" : "Sí", "Choose" : "Elegir", @@ -100,12 +99,8 @@ OC.L10N.register( "The update was successful. Redirecting you to ownCloud now." : "La actualización fue exitosa. Estás siendo redirigido a ownCloud.", "%s password reset" : "%s restablecer contraseña", "Use the following link to reset your password: {link}" : "Usá este enlace para restablecer tu contraseña: {link}", - "You will receive a link to reset your password via Email." : "Vas a recibir un enlace por e-mail para restablecer tu contraseña.", - "Username" : "Nombre de usuario", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Tus archivos están encriptados. Si no habilitaste la clave de recuperación, no vas a tener manera de obtener nuevamente tus datos después que se restablezca tu contraseña. Si no estás seguro sobre qué hacer, ponete en contacto con el administrador antes de seguir. ¿Estás seguro/a que querés continuar?", - "Yes, I really want to reset my password now" : "Sí, definitivamente quiero restablecer mi contraseña ahora", - "Reset" : "Resetear", "New password" : "Nueva contraseña:", + "Reset password" : "Restablecer contraseña", "Personal" : "Personal", "Users" : "Usuarios", "Apps" : "Apps", @@ -128,6 +123,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Tu directorio de datos y tus archivos probablemente son accesibles a través de internet, ya que el archivo .htaccess no está funcionando.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Para información sobre cómo configurar apropiadamente tu servidor, por favor mirá la <a href=\"%s\" target=\"_blank\">documentación</a>.", "Create an <strong>admin account</strong>" : "Crear una <strong>cuenta de administrador</strong>", + "Username" : "Nombre de usuario", "Password" : "Contraseña", "Data folder" : "Directorio de almacenamiento", "Configure the database" : "Configurar la base de datos", diff --git a/core/l10n/es_AR.json b/core/l10n/es_AR.json index 219139245a3..c5649a1630a 100644 --- a/core/l10n/es_AR.json +++ b/core/l10n/es_AR.json @@ -29,7 +29,6 @@ "December" : "diciembre", "Settings" : "Configuración", "Saving..." : "Guardando...", - "Reset password" : "Restablecer contraseña", "No" : "No", "Yes" : "Sí", "Choose" : "Elegir", @@ -98,12 +97,8 @@ "The update was successful. Redirecting you to ownCloud now." : "La actualización fue exitosa. Estás siendo redirigido a ownCloud.", "%s password reset" : "%s restablecer contraseña", "Use the following link to reset your password: {link}" : "Usá este enlace para restablecer tu contraseña: {link}", - "You will receive a link to reset your password via Email." : "Vas a recibir un enlace por e-mail para restablecer tu contraseña.", - "Username" : "Nombre de usuario", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Tus archivos están encriptados. Si no habilitaste la clave de recuperación, no vas a tener manera de obtener nuevamente tus datos después que se restablezca tu contraseña. Si no estás seguro sobre qué hacer, ponete en contacto con el administrador antes de seguir. ¿Estás seguro/a que querés continuar?", - "Yes, I really want to reset my password now" : "Sí, definitivamente quiero restablecer mi contraseña ahora", - "Reset" : "Resetear", "New password" : "Nueva contraseña:", + "Reset password" : "Restablecer contraseña", "Personal" : "Personal", "Users" : "Usuarios", "Apps" : "Apps", @@ -126,6 +121,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Tu directorio de datos y tus archivos probablemente son accesibles a través de internet, ya que el archivo .htaccess no está funcionando.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Para información sobre cómo configurar apropiadamente tu servidor, por favor mirá la <a href=\"%s\" target=\"_blank\">documentación</a>.", "Create an <strong>admin account</strong>" : "Crear una <strong>cuenta de administrador</strong>", + "Username" : "Nombre de usuario", "Password" : "Contraseña", "Data folder" : "Directorio de almacenamiento", "Configure the database" : "Configurar la base de datos", diff --git a/core/l10n/es_CL.js b/core/l10n/es_CL.js index 3808c2cb7c4..98115643cd7 100644 --- a/core/l10n/es_CL.js +++ b/core/l10n/es_CL.js @@ -37,11 +37,11 @@ OC.L10N.register( "Error while changing permissions" : "Ocurrió un error mientras se cambiaban los permisos", "The object type is not specified." : "El tipo de objeto no está especificado.", "_download %n file_::_download %n files_" : ["",""], - "Username" : "Usuario", "Personal" : "Personal", "Users" : "Usuarios", "Admin" : "Administración", "Help" : "Ayuda", + "Username" : "Usuario", "Password" : "Clave", "You are accessing the server from an untrusted domain." : "Usted está accediendo al servidor desde un dominio no confiable.", "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domain\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Por favor contacte con su administrador. Si usted es el administrador de esta instancia, configure la opción \"trusted_domain\" en \"config/config.php\". Un ejemplo de la configuración está disponible en config/config.sample.php" diff --git a/core/l10n/es_CL.json b/core/l10n/es_CL.json index 1760e39c6c6..e54689d44b2 100644 --- a/core/l10n/es_CL.json +++ b/core/l10n/es_CL.json @@ -35,11 +35,11 @@ "Error while changing permissions" : "Ocurrió un error mientras se cambiaban los permisos", "The object type is not specified." : "El tipo de objeto no está especificado.", "_download %n file_::_download %n files_" : ["",""], - "Username" : "Usuario", "Personal" : "Personal", "Users" : "Usuarios", "Admin" : "Administración", "Help" : "Ayuda", + "Username" : "Usuario", "Password" : "Clave", "You are accessing the server from an untrusted domain." : "Usted está accediendo al servidor desde un dominio no confiable.", "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domain\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Por favor contacte con su administrador. Si usted es el administrador de esta instancia, configure la opción \"trusted_domain\" en \"config/config.php\". Un ejemplo de la configuración está disponible en config/config.sample.php" diff --git a/core/l10n/es_MX.js b/core/l10n/es_MX.js index d830538bed3..66fc3efb9a6 100644 --- a/core/l10n/es_MX.js +++ b/core/l10n/es_MX.js @@ -31,7 +31,6 @@ OC.L10N.register( "December" : "Diciembre", "Settings" : "Ajustes", "Saving..." : "Guardando...", - "Reset password" : "Restablecer contraseña", "No" : "No", "Yes" : "Sí", "Choose" : "Seleccionar", @@ -94,12 +93,8 @@ OC.L10N.register( "The update was successful. Redirecting you to ownCloud now." : "La actualización se ha realizado con éxito. Redireccionando a ownCloud ahora.", "%s password reset" : "%s restablecer contraseña", "Use the following link to reset your password: {link}" : "Utilice el siguiente enlace para restablecer su contraseña: {link}", - "You will receive a link to reset your password via Email." : "Recibirá un enlace por correo electrónico para restablecer su contraseña", - "Username" : "Nombre de usuario", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Sus archivos están cifrados. Si no ha habilitado la clave de recurperación, no habrá forma de recuperar sus datos luego de que la contraseña sea reseteada. Si no está seguro de qué hacer, contacte a su administrador antes de continuar. ¿Realmente desea continuar?", - "Yes, I really want to reset my password now" : "Sí. Realmente deseo resetear mi contraseña ahora", - "Reset" : "Reiniciar", "New password" : "Nueva contraseña", + "Reset password" : "Restablecer contraseña", "Personal" : "Personal", "Users" : "Usuarios", "Apps" : "Aplicaciones", @@ -122,6 +117,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Su directorio de datos y sus archivos probablemente sean accesibles a través de internet ya que el archivo .htaccess no funciona.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Para información de cómo configurar apropiadamente su servidor, por favor vea la <a href=\"%s\" target=\"_blank\">documentación</a>.", "Create an <strong>admin account</strong>" : "Crear una <strong>cuenta de administrador</strong>", + "Username" : "Nombre de usuario", "Password" : "Contraseña", "Data folder" : "Directorio de datos", "Configure the database" : "Configurar la base de datos", diff --git a/core/l10n/es_MX.json b/core/l10n/es_MX.json index 99da53b91fe..df3f3aa655a 100644 --- a/core/l10n/es_MX.json +++ b/core/l10n/es_MX.json @@ -29,7 +29,6 @@ "December" : "Diciembre", "Settings" : "Ajustes", "Saving..." : "Guardando...", - "Reset password" : "Restablecer contraseña", "No" : "No", "Yes" : "Sí", "Choose" : "Seleccionar", @@ -92,12 +91,8 @@ "The update was successful. Redirecting you to ownCloud now." : "La actualización se ha realizado con éxito. Redireccionando a ownCloud ahora.", "%s password reset" : "%s restablecer contraseña", "Use the following link to reset your password: {link}" : "Utilice el siguiente enlace para restablecer su contraseña: {link}", - "You will receive a link to reset your password via Email." : "Recibirá un enlace por correo electrónico para restablecer su contraseña", - "Username" : "Nombre de usuario", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Sus archivos están cifrados. Si no ha habilitado la clave de recurperación, no habrá forma de recuperar sus datos luego de que la contraseña sea reseteada. Si no está seguro de qué hacer, contacte a su administrador antes de continuar. ¿Realmente desea continuar?", - "Yes, I really want to reset my password now" : "Sí. Realmente deseo resetear mi contraseña ahora", - "Reset" : "Reiniciar", "New password" : "Nueva contraseña", + "Reset password" : "Restablecer contraseña", "Personal" : "Personal", "Users" : "Usuarios", "Apps" : "Aplicaciones", @@ -120,6 +115,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Su directorio de datos y sus archivos probablemente sean accesibles a través de internet ya que el archivo .htaccess no funciona.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Para información de cómo configurar apropiadamente su servidor, por favor vea la <a href=\"%s\" target=\"_blank\">documentación</a>.", "Create an <strong>admin account</strong>" : "Crear una <strong>cuenta de administrador</strong>", + "Username" : "Nombre de usuario", "Password" : "Contraseña", "Data folder" : "Directorio de datos", "Configure the database" : "Configurar la base de datos", diff --git a/core/l10n/et_EE.js b/core/l10n/et_EE.js index 7325c6478d8..25681f3486b 100644 --- a/core/l10n/et_EE.js +++ b/core/l10n/et_EE.js @@ -39,7 +39,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Link parooli vahetuseks on saadetud Sinu e-posti aadressil.<br>Kui kiri pole saabunud mõistliku aja jooksul, siis kontrolli oma spam-/rämpskirjade katalooge<br>.Kui kirja pole ka seal, siis küsi abi süsteemihaldurilt.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Sinu failid on krüpteeritud. Kui sa pole taastamise võtit veel määranud, siis pole präast parooli taastamist mingit võimalust sinu andmeid tagasi saada. <br />Kui sa pole kindel, mida teha, siis palun väta enne jätkamist ühendust oma administaatoriga. <br />Oled sa kindel, et sa soovid jätkata?", "I know what I'm doing" : "Ma tean mida teen", - "Reset password" : "Nulli parool", "Password can not be changed. Please contact your administrator." : "Parooli ei saa muuta. Palun kontakteeru oma süsteemihalduriga.", "No" : "Ei", "Yes" : "Jah", @@ -124,13 +123,9 @@ OC.L10N.register( "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Ei suutnud lähtestada e-maili, kuna sellel kasutajal pole e-posti määratud. Palun kontakteeru süsteemihalduriga.", "%s password reset" : "%s parooli lähtestus", "Use the following link to reset your password: {link}" : "Kasuta järgnevat linki oma parooli taastamiseks: {link}", - "You will receive a link to reset your password via Email." : "Sinu parooli taastamise link saadetakse sulle e-postile.", - "Username" : "Kasutajanimi", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Sinu failid on krüpteeritud. Kui sa pole taastamise võtit veel määranud, siis pole präast parooli taastamist mingit võimalust sinu andmeid tagasi saada. Kui sa pole kindel, mida teha, siis palun väta enne jätkamist ühendust oma administaatoriga. Oled sa kindel, et sa soovid jätkata?", - "Yes, I really want to reset my password now" : "Jah, ma tõesti soovin oma parooli praegu taastada", - "Reset" : "Algseaded", "New password" : "Uus parool", "New Password" : "Uus parool", + "Reset password" : "Nulli parool", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X ei ole toetatud ja %s ei pruugi korralikult toimida sellel platvormil. Kasuta seda omal vastutusel!", "For the best results, please consider using a GNU/Linux server instead." : "Parema tulemuse saavitamiseks palun kaalu serveris GNU/Linux kasutamist.", "Personal" : "Isiklik", @@ -170,6 +165,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Su andmete kataloog ja failid on tõenäoliselt internetist vabalt saadaval kuna .htaccess fail ei toimi.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Serveri korrektseks seadistuseks palun tutvu <a href=\"%s\" target=\"_blank\">dokumentatsiooniga</a>.", "Create an <strong>admin account</strong>" : "Loo <strong>admini konto</strong>", + "Username" : "Kasutajanimi", "Password" : "Parool", "Storage & database" : "Andmehoidla ja andmebaas", "Data folder" : "Andmete kaust", diff --git a/core/l10n/et_EE.json b/core/l10n/et_EE.json index 56ede97196a..eeb51ed5f85 100644 --- a/core/l10n/et_EE.json +++ b/core/l10n/et_EE.json @@ -37,7 +37,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Link parooli vahetuseks on saadetud Sinu e-posti aadressil.<br>Kui kiri pole saabunud mõistliku aja jooksul, siis kontrolli oma spam-/rämpskirjade katalooge<br>.Kui kirja pole ka seal, siis küsi abi süsteemihaldurilt.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Sinu failid on krüpteeritud. Kui sa pole taastamise võtit veel määranud, siis pole präast parooli taastamist mingit võimalust sinu andmeid tagasi saada. <br />Kui sa pole kindel, mida teha, siis palun väta enne jätkamist ühendust oma administaatoriga. <br />Oled sa kindel, et sa soovid jätkata?", "I know what I'm doing" : "Ma tean mida teen", - "Reset password" : "Nulli parool", "Password can not be changed. Please contact your administrator." : "Parooli ei saa muuta. Palun kontakteeru oma süsteemihalduriga.", "No" : "Ei", "Yes" : "Jah", @@ -122,13 +121,9 @@ "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Ei suutnud lähtestada e-maili, kuna sellel kasutajal pole e-posti määratud. Palun kontakteeru süsteemihalduriga.", "%s password reset" : "%s parooli lähtestus", "Use the following link to reset your password: {link}" : "Kasuta järgnevat linki oma parooli taastamiseks: {link}", - "You will receive a link to reset your password via Email." : "Sinu parooli taastamise link saadetakse sulle e-postile.", - "Username" : "Kasutajanimi", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Sinu failid on krüpteeritud. Kui sa pole taastamise võtit veel määranud, siis pole präast parooli taastamist mingit võimalust sinu andmeid tagasi saada. Kui sa pole kindel, mida teha, siis palun väta enne jätkamist ühendust oma administaatoriga. Oled sa kindel, et sa soovid jätkata?", - "Yes, I really want to reset my password now" : "Jah, ma tõesti soovin oma parooli praegu taastada", - "Reset" : "Algseaded", "New password" : "Uus parool", "New Password" : "Uus parool", + "Reset password" : "Nulli parool", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X ei ole toetatud ja %s ei pruugi korralikult toimida sellel platvormil. Kasuta seda omal vastutusel!", "For the best results, please consider using a GNU/Linux server instead." : "Parema tulemuse saavitamiseks palun kaalu serveris GNU/Linux kasutamist.", "Personal" : "Isiklik", @@ -168,6 +163,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Su andmete kataloog ja failid on tõenäoliselt internetist vabalt saadaval kuna .htaccess fail ei toimi.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Serveri korrektseks seadistuseks palun tutvu <a href=\"%s\" target=\"_blank\">dokumentatsiooniga</a>.", "Create an <strong>admin account</strong>" : "Loo <strong>admini konto</strong>", + "Username" : "Kasutajanimi", "Password" : "Parool", "Storage & database" : "Andmehoidla ja andmebaas", "Data folder" : "Andmete kaust", diff --git a/core/l10n/eu.js b/core/l10n/eu.js index e90e458a193..7186216bf15 100644 --- a/core/l10n/eu.js +++ b/core/l10n/eu.js @@ -39,7 +39,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Zure pasahitza berrezartzeko lotura zure postara bidalia izan da.<br>Ez baduzu arrazoizko denbora epe batean jasotzen begiratu zure zabor-posta karpetan.<br>Hor ere ez badago kudeatzailearekin harremanetan jarri.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Zure fitxategiak enkriptaturik daude. Ez baduzu berreskuratze gakoa gaitzen pasahitza berrabiaraztean ez da zure fitxategiak berreskuratzeko modurik egongo. <br />Zer egin ziur ez bazaude kudeatzailearekin harremanetan ipini jarraitu aurretik.<br /> Ziur zaude aurrera jarraitu nahi duzula?", "I know what I'm doing" : "Badakit zer ari naizen egiten", - "Reset password" : "Berrezarri pasahitza", "Password can not be changed. Please contact your administrator." : "Ezin da pasahitza aldatu. Mesedez jarri harremetan zure administradorearekin.", "No" : "Ez", "Yes" : "Bai", @@ -120,13 +119,9 @@ OC.L10N.register( "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Ezin izan da berrezartzeko eposta bidali erabiltzaile izen honetarako eposta helbiderik ez dagoelako. Mesedez harremanetan jarri kudeatzailearekin.", "%s password reset" : "%s pasahitza berrezarri", "Use the following link to reset your password: {link}" : "Eribili hurrengo lotura zure pasahitza berrezartzeko: {link}", - "You will receive a link to reset your password via Email." : "Zure pashitza berrezartzeko lotura bat jasoko duzu Epostaren bidez.", - "Username" : "Erabiltzaile izena", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Zure fitxategiak enkriptaturik daude. Ez baduzu berreskuratze gakoa gaitzen pasahitza berrabiaraztean ez da zure fitxategiak berreskuratzeko modurik egongo. Zer egin ziur ez bazaude kudeatzailearekin harremanetan ipini jarraitu aurretik. Ziur zaude aurrera jarraitu nahi duzula?", - "Yes, I really want to reset my password now" : "Bai, nire pasahitza orain berrabiarazi nahi dut", - "Reset" : "Berrezarri", "New password" : "Pasahitz berria", "New Password" : "Pasahitz Berria", + "Reset password" : "Berrezarri pasahitza", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X-ek ez du sostengurik eta %s gaizki ibili daiteke plataforma honetan. Erabiltzekotan, zure ardurapean.", "For the best results, please consider using a GNU/Linux server instead." : "Emaitza hobeak izateko, mesedez gogoan hartu GNU/Linux zerbitzari bat erabiltzea.", "Personal" : "Pertsonala", @@ -166,6 +161,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Zure data karpeta eta fitxategiak interneten bidez eskuragarri egon daitezke .htaccess fitxategia ez delako funtzionatzen ari.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Zure zerbitrzaria ongi konfiguratzeko, mezedez <a href=\"%s\" target=\"_blank\">dokumentazioa</a> ikusi.", "Create an <strong>admin account</strong>" : "Sortu <strong>kudeatzaile kontu<strong> bat", + "Username" : "Erabiltzaile izena", "Password" : "Pasahitza", "Storage & database" : "Biltegia & datubasea", "Data folder" : "Datuen karpeta", diff --git a/core/l10n/eu.json b/core/l10n/eu.json index d851c6e942d..0579dd2dbad 100644 --- a/core/l10n/eu.json +++ b/core/l10n/eu.json @@ -37,7 +37,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Zure pasahitza berrezartzeko lotura zure postara bidalia izan da.<br>Ez baduzu arrazoizko denbora epe batean jasotzen begiratu zure zabor-posta karpetan.<br>Hor ere ez badago kudeatzailearekin harremanetan jarri.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Zure fitxategiak enkriptaturik daude. Ez baduzu berreskuratze gakoa gaitzen pasahitza berrabiaraztean ez da zure fitxategiak berreskuratzeko modurik egongo. <br />Zer egin ziur ez bazaude kudeatzailearekin harremanetan ipini jarraitu aurretik.<br /> Ziur zaude aurrera jarraitu nahi duzula?", "I know what I'm doing" : "Badakit zer ari naizen egiten", - "Reset password" : "Berrezarri pasahitza", "Password can not be changed. Please contact your administrator." : "Ezin da pasahitza aldatu. Mesedez jarri harremetan zure administradorearekin.", "No" : "Ez", "Yes" : "Bai", @@ -118,13 +117,9 @@ "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Ezin izan da berrezartzeko eposta bidali erabiltzaile izen honetarako eposta helbiderik ez dagoelako. Mesedez harremanetan jarri kudeatzailearekin.", "%s password reset" : "%s pasahitza berrezarri", "Use the following link to reset your password: {link}" : "Eribili hurrengo lotura zure pasahitza berrezartzeko: {link}", - "You will receive a link to reset your password via Email." : "Zure pashitza berrezartzeko lotura bat jasoko duzu Epostaren bidez.", - "Username" : "Erabiltzaile izena", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Zure fitxategiak enkriptaturik daude. Ez baduzu berreskuratze gakoa gaitzen pasahitza berrabiaraztean ez da zure fitxategiak berreskuratzeko modurik egongo. Zer egin ziur ez bazaude kudeatzailearekin harremanetan ipini jarraitu aurretik. Ziur zaude aurrera jarraitu nahi duzula?", - "Yes, I really want to reset my password now" : "Bai, nire pasahitza orain berrabiarazi nahi dut", - "Reset" : "Berrezarri", "New password" : "Pasahitz berria", "New Password" : "Pasahitz Berria", + "Reset password" : "Berrezarri pasahitza", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X-ek ez du sostengurik eta %s gaizki ibili daiteke plataforma honetan. Erabiltzekotan, zure ardurapean.", "For the best results, please consider using a GNU/Linux server instead." : "Emaitza hobeak izateko, mesedez gogoan hartu GNU/Linux zerbitzari bat erabiltzea.", "Personal" : "Pertsonala", @@ -164,6 +159,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Zure data karpeta eta fitxategiak interneten bidez eskuragarri egon daitezke .htaccess fitxategia ez delako funtzionatzen ari.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Zure zerbitrzaria ongi konfiguratzeko, mezedez <a href=\"%s\" target=\"_blank\">dokumentazioa</a> ikusi.", "Create an <strong>admin account</strong>" : "Sortu <strong>kudeatzaile kontu<strong> bat", + "Username" : "Erabiltzaile izena", "Password" : "Pasahitza", "Storage & database" : "Biltegia & datubasea", "Data folder" : "Datuen karpeta", diff --git a/core/l10n/fa.js b/core/l10n/fa.js index e280bae0f58..9b93ede5f05 100644 --- a/core/l10n/fa.js +++ b/core/l10n/fa.js @@ -35,7 +35,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "لینک تنظیم مجدد رمز عبور به ایمیل شما ارسال شده است.<br>اگر آن رادر یک زمان مشخصی دریافت نکرده اید، لطفا هرزنامه/ پوشه های ناخواسته را بررسی کنید.<br>در صورت نبودن از مدیر خود بپرسید.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "فایل های شما رمزگذاری شده اند. اگر شما کلید بازیابی را فعال نکرده اید، پس از راه اندازی مجدد رمزعبور هیچ راهی برای بازگشت اطلاعاتتان وجود نخواهد داشت.در صورت عدم اطمینان به انجام کار، لطفا ابتدا با مدیر خود تماس بگیرید. آیا واقعا میخواهید ادامه دهید ؟", "I know what I'm doing" : "اطلاع از انجام این کار دارم", - "Reset password" : "تنظیم مجدد رمز عبور", "Password can not be changed. Please contact your administrator." : "رمز عبور نمی تواند تغییر بکند . لطفا با مدیر سیستم تماس بگیرید .", "No" : "نه", "Yes" : "بله", @@ -102,12 +101,8 @@ OC.L10N.register( "The update was unsuccessful." : "بروزرسانی موفقیت آمیز نبود.", "The update was successful. Redirecting you to ownCloud now." : "به روزرسانی موفقیت آمیز بود. در حال انتقال شما به OwnCloud.", "Use the following link to reset your password: {link}" : "از لینک زیر جهت دوباره سازی پسورد استفاده کنید :\n{link}", - "You will receive a link to reset your password via Email." : "شما یک نامه الکترونیکی حاوی یک لینک جهت بازسازی گذرواژه دریافت خواهید کرد.", - "Username" : "نام کاربری", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "فایل های شما رمزگذاری شده اند. اگر شما کلید بازیابی را فعال نکرده اید، پس از راه اندازی مجدد رمزعبور هیچ راهی برای بازگشت اطلاعاتتان وجود نخواهد داشت.در صورت عدم اطمینان به انجام کار، لطفا ابتدا با مدیر خود تماس بگیرید. آیا واقعا میخواهید ادامه دهید ؟", - "Yes, I really want to reset my password now" : "بله، من اکنون میخواهم رمز عبور خود را مجددا راه اندازی کنم.", - "Reset" : "تنظیم مجدد", "New password" : "گذرواژه جدید", + "Reset password" : "تنظیم مجدد رمز عبور", "Personal" : "شخصی", "Users" : "کاربران", "Apps" : " برنامه ها", @@ -126,6 +121,7 @@ OC.L10N.register( "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" : "نسخه ی PHP شما در برابر حملات NULL Byte آسیب پذیر است.(CVE-2006-7243)", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "فایلها و فهرست های داده های شما قابل از اینترنت قابل دسترسی هستند، چونکه فایل htacces. کار نمی کند.", "Create an <strong>admin account</strong>" : "لطفا یک <strong> شناسه برای مدیر</strong> بسازید", + "Username" : "نام کاربری", "Password" : "گذرواژه", "Storage & database" : "انبارش و پایگاه داده", "Data folder" : "پوشه اطلاعاتی", diff --git a/core/l10n/fa.json b/core/l10n/fa.json index e7687a02b4c..7914b15ce20 100644 --- a/core/l10n/fa.json +++ b/core/l10n/fa.json @@ -33,7 +33,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "لینک تنظیم مجدد رمز عبور به ایمیل شما ارسال شده است.<br>اگر آن رادر یک زمان مشخصی دریافت نکرده اید، لطفا هرزنامه/ پوشه های ناخواسته را بررسی کنید.<br>در صورت نبودن از مدیر خود بپرسید.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "فایل های شما رمزگذاری شده اند. اگر شما کلید بازیابی را فعال نکرده اید، پس از راه اندازی مجدد رمزعبور هیچ راهی برای بازگشت اطلاعاتتان وجود نخواهد داشت.در صورت عدم اطمینان به انجام کار، لطفا ابتدا با مدیر خود تماس بگیرید. آیا واقعا میخواهید ادامه دهید ؟", "I know what I'm doing" : "اطلاع از انجام این کار دارم", - "Reset password" : "تنظیم مجدد رمز عبور", "Password can not be changed. Please contact your administrator." : "رمز عبور نمی تواند تغییر بکند . لطفا با مدیر سیستم تماس بگیرید .", "No" : "نه", "Yes" : "بله", @@ -100,12 +99,8 @@ "The update was unsuccessful." : "بروزرسانی موفقیت آمیز نبود.", "The update was successful. Redirecting you to ownCloud now." : "به روزرسانی موفقیت آمیز بود. در حال انتقال شما به OwnCloud.", "Use the following link to reset your password: {link}" : "از لینک زیر جهت دوباره سازی پسورد استفاده کنید :\n{link}", - "You will receive a link to reset your password via Email." : "شما یک نامه الکترونیکی حاوی یک لینک جهت بازسازی گذرواژه دریافت خواهید کرد.", - "Username" : "نام کاربری", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "فایل های شما رمزگذاری شده اند. اگر شما کلید بازیابی را فعال نکرده اید، پس از راه اندازی مجدد رمزعبور هیچ راهی برای بازگشت اطلاعاتتان وجود نخواهد داشت.در صورت عدم اطمینان به انجام کار، لطفا ابتدا با مدیر خود تماس بگیرید. آیا واقعا میخواهید ادامه دهید ؟", - "Yes, I really want to reset my password now" : "بله، من اکنون میخواهم رمز عبور خود را مجددا راه اندازی کنم.", - "Reset" : "تنظیم مجدد", "New password" : "گذرواژه جدید", + "Reset password" : "تنظیم مجدد رمز عبور", "Personal" : "شخصی", "Users" : "کاربران", "Apps" : " برنامه ها", @@ -124,6 +119,7 @@ "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" : "نسخه ی PHP شما در برابر حملات NULL Byte آسیب پذیر است.(CVE-2006-7243)", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "فایلها و فهرست های داده های شما قابل از اینترنت قابل دسترسی هستند، چونکه فایل htacces. کار نمی کند.", "Create an <strong>admin account</strong>" : "لطفا یک <strong> شناسه برای مدیر</strong> بسازید", + "Username" : "نام کاربری", "Password" : "گذرواژه", "Storage & database" : "انبارش و پایگاه داده", "Data folder" : "پوشه اطلاعاتی", diff --git a/core/l10n/fi_FI.js b/core/l10n/fi_FI.js index cc9fad66f8b..3d635a8b866 100644 --- a/core/l10n/fi_FI.js +++ b/core/l10n/fi_FI.js @@ -38,7 +38,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Linkki salasanan palauttamista varten on lähetetty sähköpostitse. Jos et saa sähköpostiviestiä kohtuullisessa ajassa, tarkista roskapostikansiot.<br>Jos et saa sähköpostiviestiä, ota yhteys paikalliseen ylläpitäjään.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tiedostosi on salattu. Jos et ole ottanut käyttöön palautusavainta, tietojasi ei ole mahdollista palauttaa salasanan nollaamisen jälkeen.<br />Jos et ole varma mitä tehdä, ota yhteys ylläpitäjään.<br />Haluatko varmasti jatkaa?", "I know what I'm doing" : "Tiedän mitä teen", - "Reset password" : "Palauta salasana", "Password can not be changed. Please contact your administrator." : "Salasanan vaihtaminen ei onnistunut. Ota yhteys ylläpitäjään.", "No" : "Ei", "Yes" : "Kyllä", @@ -123,13 +122,9 @@ OC.L10N.register( "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Palautussähköpostin lähettäminen ei onnistunut, koska tälle käyttäjätunnukselle ei ole määritelty sähköpostiosoitetta. Ota yhteys ylläpitäjään.", "%s password reset" : "%s salasanan palautus", "Use the following link to reset your password: {link}" : "Voit palauttaa salasanasi seuraavassa osoitteessa: {link}", - "You will receive a link to reset your password via Email." : "Saat sähköpostitse linkin palauttaaksesi salasanan.", - "Username" : "Käyttäjätunnus", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Tiedostosi on salattu. Jos et ole ottanut palautusavainta käyttöön, et voi käyttää tiedostojasi enää salasanan nollauksen jälkeen. Jos et ole varma mitä tehdä, ota yhteys ylläpitoon ennen kuin jatkat. Haluatko varmasti jatkaa?", - "Yes, I really want to reset my password now" : "Kyllä, haluan palauttaa salasanani nyt", - "Reset" : "Palauta salasana", "New password" : "Uusi salasana", "New Password" : "Uusi salasana", + "Reset password" : "Palauta salasana", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X ei ole tuettu, joten %s ei toimi kunnolla tällä alustalla. Käytä omalla vastuulla!", "For the best results, please consider using a GNU/Linux server instead." : "Käytä parhaan lopputuloksen saamiseksi GNU/Linux-palvelinta.", "Personal" : "Henkilökohtainen", @@ -169,6 +164,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Datakansiosi ja tiedostosi ovat mitä luultavimmin muiden saavutettavissa internetistä, koska .htaccess-tiedosto ei toimi.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Lisätietoja palvelimen asetuksien määrittämisestä on saatavilla <a href=\"%s\" target=\"_blank\">dokumentaatiosta</a>.", "Create an <strong>admin account</strong>" : "Luo <strong>ylläpitäjän tunnus</strong>", + "Username" : "Käyttäjätunnus", "Password" : "Salasana", "Storage & database" : "Tallennus ja tietokanta", "Data folder" : "Datakansio", diff --git a/core/l10n/fi_FI.json b/core/l10n/fi_FI.json index 32ad46587e2..d1554c2a356 100644 --- a/core/l10n/fi_FI.json +++ b/core/l10n/fi_FI.json @@ -36,7 +36,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Linkki salasanan palauttamista varten on lähetetty sähköpostitse. Jos et saa sähköpostiviestiä kohtuullisessa ajassa, tarkista roskapostikansiot.<br>Jos et saa sähköpostiviestiä, ota yhteys paikalliseen ylläpitäjään.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Tiedostosi on salattu. Jos et ole ottanut käyttöön palautusavainta, tietojasi ei ole mahdollista palauttaa salasanan nollaamisen jälkeen.<br />Jos et ole varma mitä tehdä, ota yhteys ylläpitäjään.<br />Haluatko varmasti jatkaa?", "I know what I'm doing" : "Tiedän mitä teen", - "Reset password" : "Palauta salasana", "Password can not be changed. Please contact your administrator." : "Salasanan vaihtaminen ei onnistunut. Ota yhteys ylläpitäjään.", "No" : "Ei", "Yes" : "Kyllä", @@ -121,13 +120,9 @@ "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Palautussähköpostin lähettäminen ei onnistunut, koska tälle käyttäjätunnukselle ei ole määritelty sähköpostiosoitetta. Ota yhteys ylläpitäjään.", "%s password reset" : "%s salasanan palautus", "Use the following link to reset your password: {link}" : "Voit palauttaa salasanasi seuraavassa osoitteessa: {link}", - "You will receive a link to reset your password via Email." : "Saat sähköpostitse linkin palauttaaksesi salasanan.", - "Username" : "Käyttäjätunnus", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Tiedostosi on salattu. Jos et ole ottanut palautusavainta käyttöön, et voi käyttää tiedostojasi enää salasanan nollauksen jälkeen. Jos et ole varma mitä tehdä, ota yhteys ylläpitoon ennen kuin jatkat. Haluatko varmasti jatkaa?", - "Yes, I really want to reset my password now" : "Kyllä, haluan palauttaa salasanani nyt", - "Reset" : "Palauta salasana", "New password" : "Uusi salasana", "New Password" : "Uusi salasana", + "Reset password" : "Palauta salasana", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X ei ole tuettu, joten %s ei toimi kunnolla tällä alustalla. Käytä omalla vastuulla!", "For the best results, please consider using a GNU/Linux server instead." : "Käytä parhaan lopputuloksen saamiseksi GNU/Linux-palvelinta.", "Personal" : "Henkilökohtainen", @@ -167,6 +162,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Datakansiosi ja tiedostosi ovat mitä luultavimmin muiden saavutettavissa internetistä, koska .htaccess-tiedosto ei toimi.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Lisätietoja palvelimen asetuksien määrittämisestä on saatavilla <a href=\"%s\" target=\"_blank\">dokumentaatiosta</a>.", "Create an <strong>admin account</strong>" : "Luo <strong>ylläpitäjän tunnus</strong>", + "Username" : "Käyttäjätunnus", "Password" : "Salasana", "Storage & database" : "Tallennus ja tietokanta", "Data folder" : "Datakansio", diff --git a/core/l10n/fr.js b/core/l10n/fr.js index bf0c26e1e0e..0155b0c90c4 100644 --- a/core/l10n/fr.js +++ b/core/l10n/fr.js @@ -6,7 +6,7 @@ OC.L10N.register( "Turned off maintenance mode" : "Mode de maintenance désactivé", "Updated database" : "Base de données mise à jour", "Checked database schema update" : "Mise à jour du schéma de la base de données vérifiée", - "Checked database schema update for apps" : "La mise à jour du schéma de la base de données pour les applications a été vérifiée", + "Checked database schema update for apps" : "Mise à jour du schéma de la base de données pour les applications vérifiée", "Updated \"%s\" to %s" : "Mise à jour de « %s » vers %s", "Disabled incompatible apps: %s" : "Applications incompatibles désactivées : %s", "No image or file provided" : "Aucun fichier fourni", @@ -39,7 +39,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Le lien permettant de réinitialiser votre mot de passe vient d'être envoyé à votre adresse de courriel.<br>Si vous ne le recevez pas dans un délai raisonnable, vérifiez votre dossier de pourriels/spams.<br>Si besoin, contactez votre administrateur.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Vos fichiers sont chiffrés. Si vous n'avez pas activé la clef de récupération, il n'y aura aucun moyen de récupérer vos données une fois le mot de passe réinitialisé.<br />Si vous n'êtes pas sûr(e) de ce que vous faites, veuillez contacter votre administrateur avant de continuer. <br />Voulez-vous vraiment continuer ?", "I know what I'm doing" : "Je sais ce que je fais", - "Reset password" : "Réinitialiser le mot de passe", "Password can not be changed. Please contact your administrator." : "Le mot de passe ne peut être modifié. Veuillez contacter votre administrateur.", "No" : "Non", "Yes" : "Oui", @@ -63,7 +62,7 @@ OC.L10N.register( "So-so password" : "Mot de passe tout juste acceptable", "Good password" : "Mot de passe de sécurité suffisante", "Strong password" : "Mot de passe fort", - "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." : "Votre serveur web n'est pas correctement configuré pour permettre la synchronisation des fichiers, car l'interface WebDav semble ne pas fonctionner.", + "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." : "Votre serveur web n'est pas correctement configuré pour permettre la synchronisation des fichiers car l'interface WebDav semble ne pas fonctionner.", "This server has no working internet connection. This means that some of the features like mounting of external storage, notifications about updates or installation of 3rd party apps don´t work. Accessing files from remote and sending of notification emails might also not work. We suggest to enable internet connection for this server if you want to have all features." : "Ce serveur ne peut se connecter à internet. Cela signifie que certaines fonctionnalités, telles que le montage de supports de stockage distants, les notifications de mises à jour ou l'installation d'applications tierces ne fonctionneront pas. L'accès aux fichiers à distance, ainsi que les notifications par courriel ne fonctionneront pas non plus. Il est recommandé d'activer la connexion internet pour ce serveur si vous souhaitez disposer de l'ensemble des fonctionnalités offertes.", "Error occurred while checking server setup" : "Une erreur s'est produite lors de la vérification de la configuration du serveur", "Shared" : "Partagé", @@ -85,7 +84,7 @@ OC.L10N.register( "Send" : "Envoyer", "Set expiration date" : "Spécifier une date d'expiration", "Expiration date" : "Date d'expiration", - "Adding user..." : "Utilisateur en cours d'ajout...", + "Adding user..." : "Ajout de l'utilisateur...", "group" : "groupe", "Resharing is not allowed" : "Le repartage n'est pas autorisé", "Shared in {item} with {user}" : "Partagé dans {item} avec {user}", @@ -100,7 +99,7 @@ OC.L10N.register( "Password protected" : "Protégé par mot de passe", "Error unsetting expiration date" : "Erreur lors de la suppression de la date d'expiration", "Error setting expiration date" : "Erreur lors de la spécification de la date d'expiration", - "Sending ..." : "Envoi …", + "Sending ..." : "Envoi…", "Email sent" : "Courriel envoyé", "Warning" : "Attention", "The object type is not specified." : "Le type d'objet n'est pas spécifié.", @@ -124,13 +123,9 @@ OC.L10N.register( "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Impossible d'envoyer le courriel de réinitialisation car il n'y a aucune adresse de courriel pour cet utilisateur. Veuillez contacter votre administrateur.", "%s password reset" : "Réinitialisation de votre mot de passe %s", "Use the following link to reset your password: {link}" : "Utilisez le lien suivant pour réinitialiser votre mot de passe : {link}", - "You will receive a link to reset your password via Email." : "Vous allez recevoir un courriel contenant un lien pour réinitialiser votre mot de passe.", - "Username" : "Nom d'utilisateur", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Vos fichiers sont chiffrés. Si vous n'avez pas activé la clef de récupération, il n'y aura aucun moyen de récupérer vos données une fois le mot de passe réinitialisé. Si vous n'êtes pas sûr(e) de ce que vous faites, veuillez contacter votre administrateur avant de poursuivre. Voulez-vous vraiment continuer ?", - "Yes, I really want to reset my password now" : "Oui, je veux vraiment réinitialiser mon mot de passe maintenant", - "Reset" : "Réinitialiser", "New password" : "Nouveau mot de passe", "New Password" : "Nouveau mot de passe", + "Reset password" : "Réinitialiser le mot de passe", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X n'est pas pris en charge et %s ne fonctionnera pas correctement sur cette plate-forme. Son utilisation est à vos risques et périls !", "For the best results, please consider using a GNU/Linux server instead." : "Pour obtenir les meilleurs résultats, vous devriez utiliser un serveur GNU/Linux.", "Personal" : "Personnel", @@ -170,6 +165,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Votre répertoire de données est certainement accessible depuis l'internet car le fichier .htaccess ne fonctionne pas.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Pour les informations de configuration de votre serveur, veuillez lire la <a href=\"%s\" target=\"_blank\">documentation</a>.", "Create an <strong>admin account</strong>" : "Créer un <strong>compte administrateur</strong>", + "Username" : "Nom d'utilisateur", "Password" : "Mot de passe", "Storage & database" : "Stockage & base de données", "Data folder" : "Répertoire des données", diff --git a/core/l10n/fr.json b/core/l10n/fr.json index 75f11a37b12..2ddd7d91a39 100644 --- a/core/l10n/fr.json +++ b/core/l10n/fr.json @@ -4,7 +4,7 @@ "Turned off maintenance mode" : "Mode de maintenance désactivé", "Updated database" : "Base de données mise à jour", "Checked database schema update" : "Mise à jour du schéma de la base de données vérifiée", - "Checked database schema update for apps" : "La mise à jour du schéma de la base de données pour les applications a été vérifiée", + "Checked database schema update for apps" : "Mise à jour du schéma de la base de données pour les applications vérifiée", "Updated \"%s\" to %s" : "Mise à jour de « %s » vers %s", "Disabled incompatible apps: %s" : "Applications incompatibles désactivées : %s", "No image or file provided" : "Aucun fichier fourni", @@ -37,7 +37,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Le lien permettant de réinitialiser votre mot de passe vient d'être envoyé à votre adresse de courriel.<br>Si vous ne le recevez pas dans un délai raisonnable, vérifiez votre dossier de pourriels/spams.<br>Si besoin, contactez votre administrateur.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Vos fichiers sont chiffrés. Si vous n'avez pas activé la clef de récupération, il n'y aura aucun moyen de récupérer vos données une fois le mot de passe réinitialisé.<br />Si vous n'êtes pas sûr(e) de ce que vous faites, veuillez contacter votre administrateur avant de continuer. <br />Voulez-vous vraiment continuer ?", "I know what I'm doing" : "Je sais ce que je fais", - "Reset password" : "Réinitialiser le mot de passe", "Password can not be changed. Please contact your administrator." : "Le mot de passe ne peut être modifié. Veuillez contacter votre administrateur.", "No" : "Non", "Yes" : "Oui", @@ -61,7 +60,7 @@ "So-so password" : "Mot de passe tout juste acceptable", "Good password" : "Mot de passe de sécurité suffisante", "Strong password" : "Mot de passe fort", - "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." : "Votre serveur web n'est pas correctement configuré pour permettre la synchronisation des fichiers, car l'interface WebDav semble ne pas fonctionner.", + "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." : "Votre serveur web n'est pas correctement configuré pour permettre la synchronisation des fichiers car l'interface WebDav semble ne pas fonctionner.", "This server has no working internet connection. This means that some of the features like mounting of external storage, notifications about updates or installation of 3rd party apps don´t work. Accessing files from remote and sending of notification emails might also not work. We suggest to enable internet connection for this server if you want to have all features." : "Ce serveur ne peut se connecter à internet. Cela signifie que certaines fonctionnalités, telles que le montage de supports de stockage distants, les notifications de mises à jour ou l'installation d'applications tierces ne fonctionneront pas. L'accès aux fichiers à distance, ainsi que les notifications par courriel ne fonctionneront pas non plus. Il est recommandé d'activer la connexion internet pour ce serveur si vous souhaitez disposer de l'ensemble des fonctionnalités offertes.", "Error occurred while checking server setup" : "Une erreur s'est produite lors de la vérification de la configuration du serveur", "Shared" : "Partagé", @@ -83,7 +82,7 @@ "Send" : "Envoyer", "Set expiration date" : "Spécifier une date d'expiration", "Expiration date" : "Date d'expiration", - "Adding user..." : "Utilisateur en cours d'ajout...", + "Adding user..." : "Ajout de l'utilisateur...", "group" : "groupe", "Resharing is not allowed" : "Le repartage n'est pas autorisé", "Shared in {item} with {user}" : "Partagé dans {item} avec {user}", @@ -98,7 +97,7 @@ "Password protected" : "Protégé par mot de passe", "Error unsetting expiration date" : "Erreur lors de la suppression de la date d'expiration", "Error setting expiration date" : "Erreur lors de la spécification de la date d'expiration", - "Sending ..." : "Envoi …", + "Sending ..." : "Envoi…", "Email sent" : "Courriel envoyé", "Warning" : "Attention", "The object type is not specified." : "Le type d'objet n'est pas spécifié.", @@ -122,13 +121,9 @@ "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Impossible d'envoyer le courriel de réinitialisation car il n'y a aucune adresse de courriel pour cet utilisateur. Veuillez contacter votre administrateur.", "%s password reset" : "Réinitialisation de votre mot de passe %s", "Use the following link to reset your password: {link}" : "Utilisez le lien suivant pour réinitialiser votre mot de passe : {link}", - "You will receive a link to reset your password via Email." : "Vous allez recevoir un courriel contenant un lien pour réinitialiser votre mot de passe.", - "Username" : "Nom d'utilisateur", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Vos fichiers sont chiffrés. Si vous n'avez pas activé la clef de récupération, il n'y aura aucun moyen de récupérer vos données une fois le mot de passe réinitialisé. Si vous n'êtes pas sûr(e) de ce que vous faites, veuillez contacter votre administrateur avant de poursuivre. Voulez-vous vraiment continuer ?", - "Yes, I really want to reset my password now" : "Oui, je veux vraiment réinitialiser mon mot de passe maintenant", - "Reset" : "Réinitialiser", "New password" : "Nouveau mot de passe", "New Password" : "Nouveau mot de passe", + "Reset password" : "Réinitialiser le mot de passe", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X n'est pas pris en charge et %s ne fonctionnera pas correctement sur cette plate-forme. Son utilisation est à vos risques et périls !", "For the best results, please consider using a GNU/Linux server instead." : "Pour obtenir les meilleurs résultats, vous devriez utiliser un serveur GNU/Linux.", "Personal" : "Personnel", @@ -168,6 +163,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Votre répertoire de données est certainement accessible depuis l'internet car le fichier .htaccess ne fonctionne pas.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Pour les informations de configuration de votre serveur, veuillez lire la <a href=\"%s\" target=\"_blank\">documentation</a>.", "Create an <strong>admin account</strong>" : "Créer un <strong>compte administrateur</strong>", + "Username" : "Nom d'utilisateur", "Password" : "Mot de passe", "Storage & database" : "Stockage & base de données", "Data folder" : "Répertoire des données", diff --git a/core/l10n/gl.js b/core/l10n/gl.js index 724775644dc..b7a43addec9 100644 --- a/core/l10n/gl.js +++ b/core/l10n/gl.js @@ -39,7 +39,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "A ligazón para restabelecer o seu contrasinal foi enviada ao seu correo. Se non a recibe nun prazo razoábel de tempo, vexa o seu cartafol de correo lixo. <br> Se non está ali pregúntelle ao administrador local.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Os seus ficheiros están cifrados. Se non activou a chave de recuperación, non haberá maneira de recuperar os datos após o restabelecemento do contrasinal. <br />Se non está seguro de que facer, póñase en contacto co administrador antes de continuar. <br /> Confirma que quere?", "I know what I'm doing" : "Sei o estou a facer", - "Reset password" : "Restabelecer o contrasinal", "Password can not be changed. Please contact your administrator." : "Non é posíbel cambiar o contrasinal. Póñase en contacto co administrador.", "No" : "Non", "Yes" : "Si", @@ -124,13 +123,9 @@ OC.L10N.register( "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Non foi posíbel enviar o coreo do restablecemento. Semella que este correo non corresponde con este nome de usuario. Póñase en contacto co administrador.", "%s password reset" : "Restabelecer o contrasinal %s", "Use the following link to reset your password: {link}" : "Usa a seguinte ligazón para restabelecer o contrasinal: {link}", - "You will receive a link to reset your password via Email." : "Recibirá unha ligazón por correo para restabelecer o contrasinal", - "Username" : "Nome de usuario", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Os ficheiros están cifrados. Se aínda non activou a chave de recuperación non haberá xeito de recuperar os datos unha vez que se teña restabelecido o contrasinal. Se non ten certeza do que ten que facer, póñase en contacto co administrador antes de continuar. Confirma que quere continuar?", - "Yes, I really want to reset my password now" : "Si, confirmo que quero restabelecer agora o meu contrasinal", - "Reset" : "Restabelecer", "New password" : "Novo contrasinal", "New Password" : "Novo contrasinal", + "Reset password" : "Restabelecer o contrasinal", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X non é compatíbel e %s non funcionará correctamente nesta plataforma. Úseo baixo o seu risco!", "For the best results, please consider using a GNU/Linux server instead." : "Para obter mellores resultados, considere o emprego dun servidor GNU/Linux no seu canto.", "Personal" : "Persoal", @@ -170,6 +165,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "O seu directorio de datos e os ficheiros probabelmente sexan accesíbeis desde a Internet xa que o ficheiro .htaccess non está a traballar.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Para obter información sobre como como configurar axeitadamente o seu servidor, vexa a <a href=\"%s\" target=\"_blank\">documentación</a>.", "Create an <strong>admin account</strong>" : "Crear unha <strong>contra de administrador</strong>", + "Username" : "Nome de usuario", "Password" : "Contrasinal", "Storage & database" : "Almacenamento e base de datos", "Data folder" : "Cartafol de datos", diff --git a/core/l10n/gl.json b/core/l10n/gl.json index 7715f3bebbf..82157285cd3 100644 --- a/core/l10n/gl.json +++ b/core/l10n/gl.json @@ -37,7 +37,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "A ligazón para restabelecer o seu contrasinal foi enviada ao seu correo. Se non a recibe nun prazo razoábel de tempo, vexa o seu cartafol de correo lixo. <br> Se non está ali pregúntelle ao administrador local.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Os seus ficheiros están cifrados. Se non activou a chave de recuperación, non haberá maneira de recuperar os datos após o restabelecemento do contrasinal. <br />Se non está seguro de que facer, póñase en contacto co administrador antes de continuar. <br /> Confirma que quere?", "I know what I'm doing" : "Sei o estou a facer", - "Reset password" : "Restabelecer o contrasinal", "Password can not be changed. Please contact your administrator." : "Non é posíbel cambiar o contrasinal. Póñase en contacto co administrador.", "No" : "Non", "Yes" : "Si", @@ -122,13 +121,9 @@ "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Non foi posíbel enviar o coreo do restablecemento. Semella que este correo non corresponde con este nome de usuario. Póñase en contacto co administrador.", "%s password reset" : "Restabelecer o contrasinal %s", "Use the following link to reset your password: {link}" : "Usa a seguinte ligazón para restabelecer o contrasinal: {link}", - "You will receive a link to reset your password via Email." : "Recibirá unha ligazón por correo para restabelecer o contrasinal", - "Username" : "Nome de usuario", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Os ficheiros están cifrados. Se aínda non activou a chave de recuperación non haberá xeito de recuperar os datos unha vez que se teña restabelecido o contrasinal. Se non ten certeza do que ten que facer, póñase en contacto co administrador antes de continuar. Confirma que quere continuar?", - "Yes, I really want to reset my password now" : "Si, confirmo que quero restabelecer agora o meu contrasinal", - "Reset" : "Restabelecer", "New password" : "Novo contrasinal", "New Password" : "Novo contrasinal", + "Reset password" : "Restabelecer o contrasinal", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X non é compatíbel e %s non funcionará correctamente nesta plataforma. Úseo baixo o seu risco!", "For the best results, please consider using a GNU/Linux server instead." : "Para obter mellores resultados, considere o emprego dun servidor GNU/Linux no seu canto.", "Personal" : "Persoal", @@ -168,6 +163,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "O seu directorio de datos e os ficheiros probabelmente sexan accesíbeis desde a Internet xa que o ficheiro .htaccess non está a traballar.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Para obter información sobre como como configurar axeitadamente o seu servidor, vexa a <a href=\"%s\" target=\"_blank\">documentación</a>.", "Create an <strong>admin account</strong>" : "Crear unha <strong>contra de administrador</strong>", + "Username" : "Nome de usuario", "Password" : "Contrasinal", "Storage & database" : "Almacenamento e base de datos", "Data folder" : "Cartafol de datos", diff --git a/core/l10n/he.js b/core/l10n/he.js index 206e0c0de01..015f5843ac9 100644 --- a/core/l10n/he.js +++ b/core/l10n/he.js @@ -22,7 +22,6 @@ OC.L10N.register( "December" : "דצמבר", "Settings" : "הגדרות", "Saving..." : "שמירה…", - "Reset password" : "איפוס ססמה", "No" : "לא", "Yes" : "כן", "Choose" : "בחירה", @@ -67,10 +66,8 @@ OC.L10N.register( "_download %n file_::_download %n files_" : ["",""], "The update was successful. Redirecting you to ownCloud now." : "תהליך העדכון הסתיים בהצלחה. עכשיו מנתב אותך אל ownCloud.", "Use the following link to reset your password: {link}" : "יש להשתמש בקישור הבא כדי לאפס את הססמה שלך: {link}", - "You will receive a link to reset your password via Email." : "יישלח לתיבת הדוא״ל שלך קישור לאיפוס הססמה.", - "Username" : "שם משתמש", - "Yes, I really want to reset my password now" : "כן, אני רוצה לאפס את הסיסמה שלי עכשיו.", "New password" : "ססמה חדשה", + "Reset password" : "איפוס ססמה", "Personal" : "אישי", "Users" : "משתמשים", "Apps" : "יישומים", @@ -82,6 +79,7 @@ OC.L10N.register( "Please update your PHP installation to use %s securely." : "נא לעדכן את התקנת ה-PHP שלך כדי להשתמש ב-%s בצורה מאובטחת.", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "תיקיית וקבצי המידע שלך כנראה נגישים מהאינטרנט מכיוון שקובץ ה.htaccess לא עובד.", "Create an <strong>admin account</strong>" : "יצירת <strong>חשבון מנהל</strong>", + "Username" : "שם משתמש", "Password" : "סיסמא", "Data folder" : "תיקיית נתונים", "Configure the database" : "הגדרת מסד הנתונים", diff --git a/core/l10n/he.json b/core/l10n/he.json index 437098c104f..47d5d82ad99 100644 --- a/core/l10n/he.json +++ b/core/l10n/he.json @@ -20,7 +20,6 @@ "December" : "דצמבר", "Settings" : "הגדרות", "Saving..." : "שמירה…", - "Reset password" : "איפוס ססמה", "No" : "לא", "Yes" : "כן", "Choose" : "בחירה", @@ -65,10 +64,8 @@ "_download %n file_::_download %n files_" : ["",""], "The update was successful. Redirecting you to ownCloud now." : "תהליך העדכון הסתיים בהצלחה. עכשיו מנתב אותך אל ownCloud.", "Use the following link to reset your password: {link}" : "יש להשתמש בקישור הבא כדי לאפס את הססמה שלך: {link}", - "You will receive a link to reset your password via Email." : "יישלח לתיבת הדוא״ל שלך קישור לאיפוס הססמה.", - "Username" : "שם משתמש", - "Yes, I really want to reset my password now" : "כן, אני רוצה לאפס את הסיסמה שלי עכשיו.", "New password" : "ססמה חדשה", + "Reset password" : "איפוס ססמה", "Personal" : "אישי", "Users" : "משתמשים", "Apps" : "יישומים", @@ -80,6 +77,7 @@ "Please update your PHP installation to use %s securely." : "נא לעדכן את התקנת ה-PHP שלך כדי להשתמש ב-%s בצורה מאובטחת.", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "תיקיית וקבצי המידע שלך כנראה נגישים מהאינטרנט מכיוון שקובץ ה.htaccess לא עובד.", "Create an <strong>admin account</strong>" : "יצירת <strong>חשבון מנהל</strong>", + "Username" : "שם משתמש", "Password" : "סיסמא", "Data folder" : "תיקיית נתונים", "Configure the database" : "הגדרת מסד הנתונים", diff --git a/core/l10n/hi.js b/core/l10n/hi.js index bd74076a739..787b2031f4e 100644 --- a/core/l10n/hi.js +++ b/core/l10n/hi.js @@ -32,8 +32,6 @@ OC.L10N.register( "Add" : "डाले", "_download %n file_::_download %n files_" : ["",""], "Use the following link to reset your password: {link}" : "आगे दिये गये लिंक का उपयोग पासवर्ड बदलने के लिये किजीये: {link}", - "You will receive a link to reset your password via Email." : "पासवर्ड बदलने कि लिंक आपको ई-मेल द्वारा भेजी जायेगी|", - "Username" : "प्रयोक्ता का नाम", "New password" : "नया पासवर्ड", "Personal" : "यक्तिगत", "Users" : "उपयोगकर्ता", @@ -41,6 +39,7 @@ OC.L10N.register( "Help" : "सहयोग", "Security Warning" : "सुरक्षा चेतावनी ", "Create an <strong>admin account</strong>" : "व्यवस्थापक खाता बनाएँ", + "Username" : "प्रयोक्ता का नाम", "Password" : "पासवर्ड", "Data folder" : "डाटा फोल्डर", "Configure the database" : "डेटाबेस कॉन्फ़िगर करें ", diff --git a/core/l10n/hi.json b/core/l10n/hi.json index 82f27644e93..d2b5fefbf4e 100644 --- a/core/l10n/hi.json +++ b/core/l10n/hi.json @@ -30,8 +30,6 @@ "Add" : "डाले", "_download %n file_::_download %n files_" : ["",""], "Use the following link to reset your password: {link}" : "आगे दिये गये लिंक का उपयोग पासवर्ड बदलने के लिये किजीये: {link}", - "You will receive a link to reset your password via Email." : "पासवर्ड बदलने कि लिंक आपको ई-मेल द्वारा भेजी जायेगी|", - "Username" : "प्रयोक्ता का नाम", "New password" : "नया पासवर्ड", "Personal" : "यक्तिगत", "Users" : "उपयोगकर्ता", @@ -39,6 +37,7 @@ "Help" : "सहयोग", "Security Warning" : "सुरक्षा चेतावनी ", "Create an <strong>admin account</strong>" : "व्यवस्थापक खाता बनाएँ", + "Username" : "प्रयोक्ता का नाम", "Password" : "पासवर्ड", "Data folder" : "डाटा फोल्डर", "Configure the database" : "डेटाबेस कॉन्फ़िगर करें ", diff --git a/core/l10n/hi_IN.php b/core/l10n/hi_IN.php deleted file mode 100644 index aff098dff1f..00000000000 --- a/core/l10n/hi_IN.php +++ /dev/null @@ -1,5 +0,0 @@ -<?php -$TRANSLATIONS = array( -"_{count} file conflict_::_{count} file conflicts_" => array("","") -); -$PLURAL_FORMS = "nplurals=2; plural=(n != 1);"; diff --git a/core/l10n/hr.js b/core/l10n/hr.js index 38de4e13cd3..449c9b248a8 100644 --- a/core/l10n/hr.js +++ b/core/l10n/hr.js @@ -39,7 +39,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Veza za resetiranje vaše lozinke poslana je na vašu adresu e-pošte. Ako je ne primite unekom razumnom vremenskom roku, provjerite svoje spam/junk mape. <br> Ako nije tamo, kontaktirajtesvoga lokalnog administratora.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Vaše datoteke su šifrirane. Ako niste aktivirali ključ oporavka,svoje podatke nećete moći dohvatitinakon što vaša lozinka bude resetirana.<br />Ako ne znate što učiniti, prije nego linastavite, molimo kontaktirajte svog administratora. <br />Želite li doista nastaviti?", "I know what I'm doing" : "Znam što radim", - "Reset password" : "Resetirajte lozinku", "Password can not be changed. Please contact your administrator." : "Lozinku nije moguće promijeniti. Molimo kontaktirajte svog administratora.", "No" : "Ne", "Yes" : "Da", @@ -118,13 +117,9 @@ OC.L10N.register( "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Resetiranu e-poštu nije moguće poslati jer za ovo korisničko ime ne postoji adresa.Molimo, kontaktirajte svog administratora.", "%s password reset" : "%s lozinka resetirana", "Use the following link to reset your password: {link}" : "Za resetiranje svoje lozinke koristite sljedeću vezu: {link}", - "You will receive a link to reset your password via Email." : "Vezu za resetiranje svoje lozinke primit ćete e-poštom.", - "Username" : "Korisničko ime", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Vaše datoteke su šifrirane. Ako niste aktivirali ključ oporavka, svoje podatke nećetemoći dohvatiti nakon što vaša lozinka bude resetirana. Ako niste sigurni što učiniti, molimokontaktirajte svog administratora prije nego li nastavite. Želite li doista nastaviti?", - "Yes, I really want to reset my password now" : "Da, ja doista želim sada resetirati svojju lozinku.", - "Reset" : "Resetirajte", "New password" : "Nova lozinka", "New Password" : "Nova lozinka", + "Reset password" : "Resetirajte lozinku", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X nije podržan i %s na ovoj platformi neće raditi kako treba.", "For the best results, please consider using a GNU/Linux server instead." : "Za najbolje rezultate, molimo razmotrite mogućnost korištenje poslužitelja GNU/Linux.", "Personal" : "Osobno", @@ -149,6 +144,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Vašem podatkovnom direktoriju i datotekama vjerojatno se može pristupiti s interneta jer .htaccess datoteka ne radi.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Za informaciju kako ispravno konfigurirati vaš poslužitelj, molimo vidite <a href=\"%s\" target=\"_blank\">dokumentaciju</a>.", "Create an <strong>admin account</strong>" : "Kreirajte <strong>admin račun</strong>", + "Username" : "Korisničko ime", "Password" : "Lozinka", "Storage & database" : "Pohrana & baza podataka", "Data folder" : "Mapa za podatke", diff --git a/core/l10n/hr.json b/core/l10n/hr.json index fbcc57054e3..21141abc30e 100644 --- a/core/l10n/hr.json +++ b/core/l10n/hr.json @@ -37,7 +37,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Veza za resetiranje vaše lozinke poslana je na vašu adresu e-pošte. Ako je ne primite unekom razumnom vremenskom roku, provjerite svoje spam/junk mape. <br> Ako nije tamo, kontaktirajtesvoga lokalnog administratora.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Vaše datoteke su šifrirane. Ako niste aktivirali ključ oporavka,svoje podatke nećete moći dohvatitinakon što vaša lozinka bude resetirana.<br />Ako ne znate što učiniti, prije nego linastavite, molimo kontaktirajte svog administratora. <br />Želite li doista nastaviti?", "I know what I'm doing" : "Znam što radim", - "Reset password" : "Resetirajte lozinku", "Password can not be changed. Please contact your administrator." : "Lozinku nije moguće promijeniti. Molimo kontaktirajte svog administratora.", "No" : "Ne", "Yes" : "Da", @@ -116,13 +115,9 @@ "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Resetiranu e-poštu nije moguće poslati jer za ovo korisničko ime ne postoji adresa.Molimo, kontaktirajte svog administratora.", "%s password reset" : "%s lozinka resetirana", "Use the following link to reset your password: {link}" : "Za resetiranje svoje lozinke koristite sljedeću vezu: {link}", - "You will receive a link to reset your password via Email." : "Vezu za resetiranje svoje lozinke primit ćete e-poštom.", - "Username" : "Korisničko ime", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Vaše datoteke su šifrirane. Ako niste aktivirali ključ oporavka, svoje podatke nećetemoći dohvatiti nakon što vaša lozinka bude resetirana. Ako niste sigurni što učiniti, molimokontaktirajte svog administratora prije nego li nastavite. Želite li doista nastaviti?", - "Yes, I really want to reset my password now" : "Da, ja doista želim sada resetirati svojju lozinku.", - "Reset" : "Resetirajte", "New password" : "Nova lozinka", "New Password" : "Nova lozinka", + "Reset password" : "Resetirajte lozinku", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X nije podržan i %s na ovoj platformi neće raditi kako treba.", "For the best results, please consider using a GNU/Linux server instead." : "Za najbolje rezultate, molimo razmotrite mogućnost korištenje poslužitelja GNU/Linux.", "Personal" : "Osobno", @@ -147,6 +142,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Vašem podatkovnom direktoriju i datotekama vjerojatno se može pristupiti s interneta jer .htaccess datoteka ne radi.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Za informaciju kako ispravno konfigurirati vaš poslužitelj, molimo vidite <a href=\"%s\" target=\"_blank\">dokumentaciju</a>.", "Create an <strong>admin account</strong>" : "Kreirajte <strong>admin račun</strong>", + "Username" : "Korisničko ime", "Password" : "Lozinka", "Storage & database" : "Pohrana & baza podataka", "Data folder" : "Mapa za podatke", diff --git a/core/l10n/hu_HU.js b/core/l10n/hu_HU.js index 867d47cda68..c19ecc457df 100644 --- a/core/l10n/hu_HU.js +++ b/core/l10n/hu_HU.js @@ -39,7 +39,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "A jelszó felülírásához a linket e-mailben elküldtük. Ha a levél elfogadható időn belül nem érkezik meg, ellenőrizze a spam/levélszemét mappát.<br>Ha nincs ott, kérdezze meg a helyi rendszergazdát.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Az Ön állományai titkosítva vannak. Ha nem engedélyezte korábban az adatok visszanyeréséhez szükséges kulcs használatát, akkor a jelszó megváltoztatását követően nem fog hozzáférni az adataihoz. Ha nem biztos abban, hogy mit kellene tennie, akkor kérdezze meg a rendszergazdát, mielőtt továbbmenne. Biztos, hogy folytatni kívánja?", "I know what I'm doing" : "Tudom mit csinálok.", - "Reset password" : "Jelszó-visszaállítás", "Password can not be changed. Please contact your administrator." : "A jelszót nem lehet visszaállítani. Kérjük, lépjen kapcsolatba a redszergazdával.", "No" : "Nem", "Yes" : "Igen", @@ -120,13 +119,9 @@ OC.L10N.register( "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Visszaállítási e-mail nem küldhető, mert nem tartozik e-mail cím ehhez a felhasználóhoz. Kérjük, lépjen kapcsolatba a rendszergazdával.", "%s password reset" : "%s jelszó visszaállítás", "Use the following link to reset your password: {link}" : "Használja ezt a linket a jelszó ismételt beállításához: {link}", - "You will receive a link to reset your password via Email." : "Egy e-mailben fog értesítést kapni a jelszóbeállítás módjáról.", - "Username" : "Felhasználónév", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Az Ön állományai titkosítva vannak. Ha nem engedélyezte korábban az adatok visszanyeréséhez szükséges kulcs használatát, akkor a jelszó megváltoztatását követően nem fog hozzáférni az adataihoz. Ha nem biztos abban, hogy mit kellene tennie, akkor kérdezze meg a rendszergazdát, mielőtt továbbmenne. Biztos, hogy folytatni kívánja?", - "Yes, I really want to reset my password now" : "Igen, tényleg meg akarom változtatni a jelszavam", - "Reset" : "Visszaállítás", "New password" : "Az új jelszó", "New Password" : "Új jelszó", + "Reset password" : "Jelszó-visszaállítás", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "A Mac OS X nem támogatott és %s nem lesz teljesen működőképes. Csak saját felelősségre használja!", "For the best results, please consider using a GNU/Linux server instead." : "A legjobb eredmény érdekében érdemes GNU/Linux-alapú kiszolgálót használni.", "Personal" : "Személyes", @@ -162,6 +157,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Az adatkönyvtár és a benne levő állományok valószínűleg közvetlenül is elérhetők az internetről, mert a .htaccess állomány nem érvényesül.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "A kiszolgáló megfelelő beállításához kérjük olvassa el a <a href=\"%sl\" target=\"_blank\">dokumentációt</a>.", "Create an <strong>admin account</strong>" : "<strong>Rendszergazdai belépés</strong> létrehozása", + "Username" : "Felhasználónév", "Password" : "Jelszó", "Storage & database" : "Tárolás és adatbázis", "Data folder" : "Adatkönyvtár", diff --git a/core/l10n/hu_HU.json b/core/l10n/hu_HU.json index 3ab7d5d2e97..fd4a2e66680 100644 --- a/core/l10n/hu_HU.json +++ b/core/l10n/hu_HU.json @@ -37,7 +37,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "A jelszó felülírásához a linket e-mailben elküldtük. Ha a levél elfogadható időn belül nem érkezik meg, ellenőrizze a spam/levélszemét mappát.<br>Ha nincs ott, kérdezze meg a helyi rendszergazdát.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Az Ön állományai titkosítva vannak. Ha nem engedélyezte korábban az adatok visszanyeréséhez szükséges kulcs használatát, akkor a jelszó megváltoztatását követően nem fog hozzáférni az adataihoz. Ha nem biztos abban, hogy mit kellene tennie, akkor kérdezze meg a rendszergazdát, mielőtt továbbmenne. Biztos, hogy folytatni kívánja?", "I know what I'm doing" : "Tudom mit csinálok.", - "Reset password" : "Jelszó-visszaállítás", "Password can not be changed. Please contact your administrator." : "A jelszót nem lehet visszaállítani. Kérjük, lépjen kapcsolatba a redszergazdával.", "No" : "Nem", "Yes" : "Igen", @@ -118,13 +117,9 @@ "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Visszaállítási e-mail nem küldhető, mert nem tartozik e-mail cím ehhez a felhasználóhoz. Kérjük, lépjen kapcsolatba a rendszergazdával.", "%s password reset" : "%s jelszó visszaállítás", "Use the following link to reset your password: {link}" : "Használja ezt a linket a jelszó ismételt beállításához: {link}", - "You will receive a link to reset your password via Email." : "Egy e-mailben fog értesítést kapni a jelszóbeállítás módjáról.", - "Username" : "Felhasználónév", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Az Ön állományai titkosítva vannak. Ha nem engedélyezte korábban az adatok visszanyeréséhez szükséges kulcs használatát, akkor a jelszó megváltoztatását követően nem fog hozzáférni az adataihoz. Ha nem biztos abban, hogy mit kellene tennie, akkor kérdezze meg a rendszergazdát, mielőtt továbbmenne. Biztos, hogy folytatni kívánja?", - "Yes, I really want to reset my password now" : "Igen, tényleg meg akarom változtatni a jelszavam", - "Reset" : "Visszaállítás", "New password" : "Az új jelszó", "New Password" : "Új jelszó", + "Reset password" : "Jelszó-visszaállítás", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "A Mac OS X nem támogatott és %s nem lesz teljesen működőképes. Csak saját felelősségre használja!", "For the best results, please consider using a GNU/Linux server instead." : "A legjobb eredmény érdekében érdemes GNU/Linux-alapú kiszolgálót használni.", "Personal" : "Személyes", @@ -160,6 +155,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Az adatkönyvtár és a benne levő állományok valószínűleg közvetlenül is elérhetők az internetről, mert a .htaccess állomány nem érvényesül.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "A kiszolgáló megfelelő beállításához kérjük olvassa el a <a href=\"%sl\" target=\"_blank\">dokumentációt</a>.", "Create an <strong>admin account</strong>" : "<strong>Rendszergazdai belépés</strong> létrehozása", + "Username" : "Felhasználónév", "Password" : "Jelszó", "Storage & database" : "Tárolás és adatbázis", "Data folder" : "Adatkönyvtár", diff --git a/core/l10n/ia.js b/core/l10n/ia.js index 8bac55ebfab..791e6910b37 100644 --- a/core/l10n/ia.js +++ b/core/l10n/ia.js @@ -36,7 +36,6 @@ OC.L10N.register( "Saving..." : "Salveguardante...", "Couldn't send reset email. Please contact your administrator." : "On non pote inviar message de configurar ex novo. Pro favor continge tu administrator.", "I know what I'm doing" : "Io sape lo que io es facente", - "Reset password" : "Reinitialisar contrasigno", "Password can not be changed. Please contact your administrator." : "Contrasigno non pote esser modificate. Pro favor continge tu administrator.", "No" : "No", "Yes" : "Si", @@ -103,12 +102,9 @@ OC.L10N.register( "The update was successful. Redirecting you to ownCloud now." : "Le actualisation terminava con successo. On redirige nunc a tu ownCloud.", "%s password reset" : "%s contrasigno re-fixate", "Use the following link to reset your password: {link}" : "Usa le ligamine sequente pro re-fixar tu contrasigno: {link}", - "You will receive a link to reset your password via Email." : "Tu recipera un ligamine pro re-configurar tu contrasigno via e-posta.", - "Username" : "Nomine de usator", - "Yes, I really want to reset my password now" : "Si, io vermente vole re-configurar mi contrasigno nunc", - "Reset" : "Re-fixar", "New password" : "Nove contrasigno", "New Password" : "Nove contrasigno", + "Reset password" : "Reinitialisar contrasigno", "For the best results, please consider using a GNU/Linux server instead." : "Pro le exitos melior, pro favor tu considera usar in loco un servitor GNU/Linux.", "Personal" : "Personal", "Users" : "Usatores", @@ -133,6 +129,7 @@ OC.L10N.register( "Security Warning" : "Aviso de securitate", "Please update your PHP installation to use %s securely." : "Pro favor actualisa tu installation de PHP pro usar %s con securitate.", "Create an <strong>admin account</strong>" : "Crear un <strong>conto de administration</strong>", + "Username" : "Nomine de usator", "Password" : "Contrasigno", "Storage & database" : "Immagazinage & base de datos", "Data folder" : "Dossier de datos", diff --git a/core/l10n/ia.json b/core/l10n/ia.json index 60ece2f9425..80a9b47c0ea 100644 --- a/core/l10n/ia.json +++ b/core/l10n/ia.json @@ -34,7 +34,6 @@ "Saving..." : "Salveguardante...", "Couldn't send reset email. Please contact your administrator." : "On non pote inviar message de configurar ex novo. Pro favor continge tu administrator.", "I know what I'm doing" : "Io sape lo que io es facente", - "Reset password" : "Reinitialisar contrasigno", "Password can not be changed. Please contact your administrator." : "Contrasigno non pote esser modificate. Pro favor continge tu administrator.", "No" : "No", "Yes" : "Si", @@ -101,12 +100,9 @@ "The update was successful. Redirecting you to ownCloud now." : "Le actualisation terminava con successo. On redirige nunc a tu ownCloud.", "%s password reset" : "%s contrasigno re-fixate", "Use the following link to reset your password: {link}" : "Usa le ligamine sequente pro re-fixar tu contrasigno: {link}", - "You will receive a link to reset your password via Email." : "Tu recipera un ligamine pro re-configurar tu contrasigno via e-posta.", - "Username" : "Nomine de usator", - "Yes, I really want to reset my password now" : "Si, io vermente vole re-configurar mi contrasigno nunc", - "Reset" : "Re-fixar", "New password" : "Nove contrasigno", "New Password" : "Nove contrasigno", + "Reset password" : "Reinitialisar contrasigno", "For the best results, please consider using a GNU/Linux server instead." : "Pro le exitos melior, pro favor tu considera usar in loco un servitor GNU/Linux.", "Personal" : "Personal", "Users" : "Usatores", @@ -131,6 +127,7 @@ "Security Warning" : "Aviso de securitate", "Please update your PHP installation to use %s securely." : "Pro favor actualisa tu installation de PHP pro usar %s con securitate.", "Create an <strong>admin account</strong>" : "Crear un <strong>conto de administration</strong>", + "Username" : "Nomine de usator", "Password" : "Contrasigno", "Storage & database" : "Immagazinage & base de datos", "Data folder" : "Dossier de datos", diff --git a/core/l10n/id.js b/core/l10n/id.js index 7182162297e..47566bb627b 100644 --- a/core/l10n/id.js +++ b/core/l10n/id.js @@ -39,7 +39,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Sebuah tautan untuk setel ulang sandi Anda telah dikirim ke email Anda. Jika Anda tidak menerima dalam jangka waktu yang wajar, periksa folder spam/sampah Anda.<br>Jika tidak ada, tanyakan pada administrator Anda.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Berkas-berkas Anda terenkripsi. Jika Anda tidak mengaktifkan kunci pemulihan, tidak ada cara lain untuk mendapatkan data Anda kembali setelah sandi di setel ulang.<br />Jika Anda tidak yakin dengan apa yang akan Anda dilakukan, mohon hubungi administrator Anda sebelum melanjutkan. <br />Apakah Anda yakin ingin melanjutkan?", "I know what I'm doing" : "Saya tahu apa yang saya lakukan", - "Reset password" : "Setel ulang sandi", "Password can not be changed. Please contact your administrator." : "Sandi tidak dapat diubah. Silakan hubungi administrator Anda", "No" : "Tidak", "Yes" : "Ya", @@ -120,13 +119,9 @@ OC.L10N.register( "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Tidak dapat menyetel ulang email karena tidak ada alamat email untuk nama pengguna ini. Silakan hubungi Administrator Anda.", "%s password reset" : "%s sandi disetel ulang", "Use the following link to reset your password: {link}" : "Gunakan tautan berikut untuk menyetel ulang sandi Anda: {link}", - "You will receive a link to reset your password via Email." : "Anda akan menerima tautan penyetelan ulang sandi lewat Email.", - "Username" : "Nama pengguna", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Berkas anda terenkripsi. Jika sebelumnya anda belum mengaktifkan kunci pemulihan, tidak akan ada cara lagi untuk mendapatkan data anda kembali setelah sandi anda diatur ulang. Jika anda tidak yakin dengan apa yang harus dilakukan, silakan hubungi administrator anda sebelum melanjutkan. Apakah anda benar-benar ingin melanjutkan?", - "Yes, I really want to reset my password now" : "Ya, Saya sungguh ingin mengatur ulang sandi saya sekarang", - "Reset" : "Atur Ulang", "New password" : "Sandi baru", "New Password" : "Sandi Baru", + "Reset password" : "Setel ulang sandi", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X tidak didukung dan %s tidak akan bekerja dengan baik pada platform ini. Gunakan dengan resiko Anda sendiri!", "For the best results, please consider using a GNU/Linux server instead." : "Untuk hasil terbaik, pertimbangkan untuk menggunakan server GNU/Linux sebagai gantinya. ", "Personal" : "Pribadi", @@ -166,6 +161,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Kemungkinan direktori data dan berkas anda dapat diakses dari internet karena berkas .htaccess tidak berfungsi.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Untuk informasi cara mengkonfigurasi server anda dengan benar, silakan lihat <a href=\"%s\" target=\"_blank\">dokumentasi</a>.", "Create an <strong>admin account</strong>" : "Buat sebuah <strong>akun admin</strong>", + "Username" : "Nama pengguna", "Password" : "Sandi", "Storage & database" : "Penyimpanan & Basis data", "Data folder" : "Folder data", diff --git a/core/l10n/id.json b/core/l10n/id.json index 79e90900d0f..d3327460f31 100644 --- a/core/l10n/id.json +++ b/core/l10n/id.json @@ -37,7 +37,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Sebuah tautan untuk setel ulang sandi Anda telah dikirim ke email Anda. Jika Anda tidak menerima dalam jangka waktu yang wajar, periksa folder spam/sampah Anda.<br>Jika tidak ada, tanyakan pada administrator Anda.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Berkas-berkas Anda terenkripsi. Jika Anda tidak mengaktifkan kunci pemulihan, tidak ada cara lain untuk mendapatkan data Anda kembali setelah sandi di setel ulang.<br />Jika Anda tidak yakin dengan apa yang akan Anda dilakukan, mohon hubungi administrator Anda sebelum melanjutkan. <br />Apakah Anda yakin ingin melanjutkan?", "I know what I'm doing" : "Saya tahu apa yang saya lakukan", - "Reset password" : "Setel ulang sandi", "Password can not be changed. Please contact your administrator." : "Sandi tidak dapat diubah. Silakan hubungi administrator Anda", "No" : "Tidak", "Yes" : "Ya", @@ -118,13 +117,9 @@ "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Tidak dapat menyetel ulang email karena tidak ada alamat email untuk nama pengguna ini. Silakan hubungi Administrator Anda.", "%s password reset" : "%s sandi disetel ulang", "Use the following link to reset your password: {link}" : "Gunakan tautan berikut untuk menyetel ulang sandi Anda: {link}", - "You will receive a link to reset your password via Email." : "Anda akan menerima tautan penyetelan ulang sandi lewat Email.", - "Username" : "Nama pengguna", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Berkas anda terenkripsi. Jika sebelumnya anda belum mengaktifkan kunci pemulihan, tidak akan ada cara lagi untuk mendapatkan data anda kembali setelah sandi anda diatur ulang. Jika anda tidak yakin dengan apa yang harus dilakukan, silakan hubungi administrator anda sebelum melanjutkan. Apakah anda benar-benar ingin melanjutkan?", - "Yes, I really want to reset my password now" : "Ya, Saya sungguh ingin mengatur ulang sandi saya sekarang", - "Reset" : "Atur Ulang", "New password" : "Sandi baru", "New Password" : "Sandi Baru", + "Reset password" : "Setel ulang sandi", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X tidak didukung dan %s tidak akan bekerja dengan baik pada platform ini. Gunakan dengan resiko Anda sendiri!", "For the best results, please consider using a GNU/Linux server instead." : "Untuk hasil terbaik, pertimbangkan untuk menggunakan server GNU/Linux sebagai gantinya. ", "Personal" : "Pribadi", @@ -164,6 +159,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Kemungkinan direktori data dan berkas anda dapat diakses dari internet karena berkas .htaccess tidak berfungsi.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Untuk informasi cara mengkonfigurasi server anda dengan benar, silakan lihat <a href=\"%s\" target=\"_blank\">dokumentasi</a>.", "Create an <strong>admin account</strong>" : "Buat sebuah <strong>akun admin</strong>", + "Username" : "Nama pengguna", "Password" : "Sandi", "Storage & database" : "Penyimpanan & Basis data", "Data folder" : "Folder data", diff --git a/core/l10n/is.js b/core/l10n/is.js index 8f1f7d09eec..0ac56e51181 100644 --- a/core/l10n/is.js +++ b/core/l10n/is.js @@ -22,7 +22,6 @@ OC.L10N.register( "December" : "Desember", "Settings" : "Stillingar", "Saving..." : "Er að vista ...", - "Reset password" : "Endursetja lykilorð", "No" : "Nei", "Yes" : "Já", "Choose" : "Veldu", @@ -62,9 +61,8 @@ OC.L10N.register( "_download %n file_::_download %n files_" : ["",""], "The update was successful. Redirecting you to ownCloud now." : "Uppfærslan heppnaðist. Beini þér til ownCloud nú.", "Use the following link to reset your password: {link}" : "Notað eftirfarandi veftengil til að endursetja lykilorðið þitt: {link}", - "You will receive a link to reset your password via Email." : "Þú munt fá veftengil í tölvupósti til að endursetja lykilorðið.", - "Username" : "Notendanafn", "New password" : "Nýtt lykilorð", + "Reset password" : "Endursetja lykilorð", "Personal" : "Um mig", "Users" : "Notendur", "Apps" : "Forrit", @@ -73,6 +71,7 @@ OC.L10N.register( "Access forbidden" : "Aðgangur bannaður", "Security Warning" : "Öryggis aðvörun", "Create an <strong>admin account</strong>" : "Útbúa <strong>vefstjóra aðgang</strong>", + "Username" : "Notendanafn", "Password" : "Lykilorð", "Data folder" : "Gagnamappa", "Configure the database" : "Stilla gagnagrunn", diff --git a/core/l10n/is.json b/core/l10n/is.json index ff69c133fa6..d56e4bbd3d7 100644 --- a/core/l10n/is.json +++ b/core/l10n/is.json @@ -20,7 +20,6 @@ "December" : "Desember", "Settings" : "Stillingar", "Saving..." : "Er að vista ...", - "Reset password" : "Endursetja lykilorð", "No" : "Nei", "Yes" : "Já", "Choose" : "Veldu", @@ -60,9 +59,8 @@ "_download %n file_::_download %n files_" : ["",""], "The update was successful. Redirecting you to ownCloud now." : "Uppfærslan heppnaðist. Beini þér til ownCloud nú.", "Use the following link to reset your password: {link}" : "Notað eftirfarandi veftengil til að endursetja lykilorðið þitt: {link}", - "You will receive a link to reset your password via Email." : "Þú munt fá veftengil í tölvupósti til að endursetja lykilorðið.", - "Username" : "Notendanafn", "New password" : "Nýtt lykilorð", + "Reset password" : "Endursetja lykilorð", "Personal" : "Um mig", "Users" : "Notendur", "Apps" : "Forrit", @@ -71,6 +69,7 @@ "Access forbidden" : "Aðgangur bannaður", "Security Warning" : "Öryggis aðvörun", "Create an <strong>admin account</strong>" : "Útbúa <strong>vefstjóra aðgang</strong>", + "Username" : "Notendanafn", "Password" : "Lykilorð", "Data folder" : "Gagnamappa", "Configure the database" : "Stilla gagnagrunn", diff --git a/core/l10n/it.js b/core/l10n/it.js index dcc221bf885..ed23ad7df28 100644 --- a/core/l10n/it.js +++ b/core/l10n/it.js @@ -39,7 +39,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Il collegamento per reimpostare la password è stato inviato al tuo indirizzo di posta. Se non lo ricevi in tempi ragionevoli, controlla le cartelle della posta indesiderata.<br>Se non dovesse essere nemmeno lì, contatta il tuo amministratore locale.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "I tuoi file sono cifrati. Se non hai precedentemente abilitato la chiave di recupero, non sarà più possibile ritrovare i tuoi dati una volta che la password sarà reimpostata.<br />Se non sei sicuro, per favore contatta l'amministratore prima di proseguire.<br />Vuoi davvero continuare?", "I know what I'm doing" : "So cosa sto facendo", - "Reset password" : "Ripristina la password", "Password can not be changed. Please contact your administrator." : "La password non può essere cambiata. Contatta il tuo amministratore.", "No" : "No", "Yes" : "Sì", @@ -124,13 +123,9 @@ OC.L10N.register( "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Impossibile inviare l'email di reimpostazione poiché non è presente un indirizzo email per questo nome utente. Contatta il tuo amministratore.", "%s password reset" : "Ripristino password di %s", "Use the following link to reset your password: {link}" : "Usa il collegamento seguente per ripristinare la password: {link}", - "You will receive a link to reset your password via Email." : "Riceverai un collegamento per ripristinare la tua password via email", - "Username" : "Nome utente", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "I file sono cifrati. Se non hai precedentemente abilitato la chiave di recupero, non sarà più possibile ritrovare i tuoi dati una volta che la password sarà ripristinata. Se non sei sicuro, per favore contatta l'amministratore prima di proseguire. Vuoi davvero continuare?", - "Yes, I really want to reset my password now" : "Sì, voglio davvero ripristinare la mia password adesso", - "Reset" : "Ripristina", "New password" : "Nuova password", "New Password" : "Nuova password", + "Reset password" : "Ripristina la password", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X non è supportato e %s non funzionerà correttamente su questa piattaforma. Usalo a tuo rischio!", "For the best results, please consider using a GNU/Linux server instead." : "Per avere il risultato migliore, prendi in considerazione l'utilizzo di un server GNU/Linux.", "Personal" : "Personale", @@ -170,6 +165,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "La cartella dei dati e i file sono probabilmente accessibili da Internet poiché il file .htaccess non funziona.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Per informazioni su come configurare correttamente il tuo server, vedi la <a href=\"%s\" target=\"_blank\">documentazione</a>.", "Create an <strong>admin account</strong>" : "Crea un <strong>account amministratore</strong>", + "Username" : "Nome utente", "Password" : "Password", "Storage & database" : "Archiviazione e database", "Data folder" : "Cartella dati", diff --git a/core/l10n/it.json b/core/l10n/it.json index 599c613828b..59073aafaf2 100644 --- a/core/l10n/it.json +++ b/core/l10n/it.json @@ -37,7 +37,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Il collegamento per reimpostare la password è stato inviato al tuo indirizzo di posta. Se non lo ricevi in tempi ragionevoli, controlla le cartelle della posta indesiderata.<br>Se non dovesse essere nemmeno lì, contatta il tuo amministratore locale.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "I tuoi file sono cifrati. Se non hai precedentemente abilitato la chiave di recupero, non sarà più possibile ritrovare i tuoi dati una volta che la password sarà reimpostata.<br />Se non sei sicuro, per favore contatta l'amministratore prima di proseguire.<br />Vuoi davvero continuare?", "I know what I'm doing" : "So cosa sto facendo", - "Reset password" : "Ripristina la password", "Password can not be changed. Please contact your administrator." : "La password non può essere cambiata. Contatta il tuo amministratore.", "No" : "No", "Yes" : "Sì", @@ -122,13 +121,9 @@ "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Impossibile inviare l'email di reimpostazione poiché non è presente un indirizzo email per questo nome utente. Contatta il tuo amministratore.", "%s password reset" : "Ripristino password di %s", "Use the following link to reset your password: {link}" : "Usa il collegamento seguente per ripristinare la password: {link}", - "You will receive a link to reset your password via Email." : "Riceverai un collegamento per ripristinare la tua password via email", - "Username" : "Nome utente", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "I file sono cifrati. Se non hai precedentemente abilitato la chiave di recupero, non sarà più possibile ritrovare i tuoi dati una volta che la password sarà ripristinata. Se non sei sicuro, per favore contatta l'amministratore prima di proseguire. Vuoi davvero continuare?", - "Yes, I really want to reset my password now" : "Sì, voglio davvero ripristinare la mia password adesso", - "Reset" : "Ripristina", "New password" : "Nuova password", "New Password" : "Nuova password", + "Reset password" : "Ripristina la password", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X non è supportato e %s non funzionerà correttamente su questa piattaforma. Usalo a tuo rischio!", "For the best results, please consider using a GNU/Linux server instead." : "Per avere il risultato migliore, prendi in considerazione l'utilizzo di un server GNU/Linux.", "Personal" : "Personale", @@ -168,6 +163,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "La cartella dei dati e i file sono probabilmente accessibili da Internet poiché il file .htaccess non funziona.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Per informazioni su come configurare correttamente il tuo server, vedi la <a href=\"%s\" target=\"_blank\">documentazione</a>.", "Create an <strong>admin account</strong>" : "Crea un <strong>account amministratore</strong>", + "Username" : "Nome utente", "Password" : "Password", "Storage & database" : "Archiviazione e database", "Data folder" : "Cartella dati", diff --git a/core/l10n/ja.js b/core/l10n/ja.js index bba306dafc6..f6a7aa1f846 100644 --- a/core/l10n/ja.js +++ b/core/l10n/ja.js @@ -39,7 +39,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "パスワードをリセットする、このリンクをクリックするとメールを送信します。しばらく経ってもメールが届かなかった場合は、スパム/ジャンクフォルダを確認してください。<br>それでも見つからなかった場合は、管理者に問合せてください。", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "ファイルが暗号化されています。リカバリーキーが有効でない場合は、パスワードをリセットした後にあなたのデータを元に戻す方法はありません。<br />どういうことか分からない場合は、操作を継続する前に管理者に連絡してください。<br />続けてよろしいでしょうか?", "I know what I'm doing" : "どういう操作をしているか理解しています", - "Reset password" : "パスワードをリセット", "Password can not be changed. Please contact your administrator." : "パスワードは変更できません。管理者に問い合わせてください。", "No" : "いいえ", "Yes" : "はい", @@ -124,13 +123,9 @@ OC.L10N.register( "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "このユーザー名に紐付けられたメールアドレスがないため、リセットメールを送信できませんでした。管理者に問い合わせてください。", "%s password reset" : "%s パスワードリセット", "Use the following link to reset your password: {link}" : "パスワードをリセットするには次のリンクをクリックしてください: {link}", - "You will receive a link to reset your password via Email." : "メールでパスワードをリセットするリンクが届きます。", - "Username" : "ユーザー名", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "ファイルが暗号化されています。リカバリキーを有効にしていなかった場合、パスワードをリセットしてからデータを復旧する方法はありません。何をすべきかよくわからないなら、続ける前にまず管理者に連絡しましょう。本当に続けますか?", - "Yes, I really want to reset my password now" : "はい、今すぐパスワードをリセットします。", - "Reset" : "リセット", "New password" : "新しいパスワードを入力", "New Password" : "新しいパスワード", + "Reset password" : "パスワードをリセット", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X では、サポートされていません。このOSでは、%sは正常に動作しないかもしれません。ご自身の責任においてご利用ください。", "For the best results, please consider using a GNU/Linux server instead." : "最も良い方法としては、代わりにGNU/Linuxサーバーを利用することをご検討ください。", "Personal" : "個人", @@ -170,6 +165,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : ".htaccessファイルが動作していないため、おそらくあなたのデータディレクトリまたはファイルはインターネットからアクセス可能になっています。", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "サーバーを適正に設定する情報は、こちらの<a href=\"%s\" target=\"_blank\">ドキュメント</a>を参照してください。", "Create an <strong>admin account</strong>" : "<strong>管理者アカウント</strong>を作成してください", + "Username" : "ユーザー名", "Password" : "パスワード", "Storage & database" : "ストレージとデータベース", "Data folder" : "データフォルダー", diff --git a/core/l10n/ja.json b/core/l10n/ja.json index 706d6bcfc29..c5f1ba49368 100644 --- a/core/l10n/ja.json +++ b/core/l10n/ja.json @@ -37,7 +37,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "パスワードをリセットする、このリンクをクリックするとメールを送信します。しばらく経ってもメールが届かなかった場合は、スパム/ジャンクフォルダを確認してください。<br>それでも見つからなかった場合は、管理者に問合せてください。", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "ファイルが暗号化されています。リカバリーキーが有効でない場合は、パスワードをリセットした後にあなたのデータを元に戻す方法はありません。<br />どういうことか分からない場合は、操作を継続する前に管理者に連絡してください。<br />続けてよろしいでしょうか?", "I know what I'm doing" : "どういう操作をしているか理解しています", - "Reset password" : "パスワードをリセット", "Password can not be changed. Please contact your administrator." : "パスワードは変更できません。管理者に問い合わせてください。", "No" : "いいえ", "Yes" : "はい", @@ -122,13 +121,9 @@ "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "このユーザー名に紐付けられたメールアドレスがないため、リセットメールを送信できませんでした。管理者に問い合わせてください。", "%s password reset" : "%s パスワードリセット", "Use the following link to reset your password: {link}" : "パスワードをリセットするには次のリンクをクリックしてください: {link}", - "You will receive a link to reset your password via Email." : "メールでパスワードをリセットするリンクが届きます。", - "Username" : "ユーザー名", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "ファイルが暗号化されています。リカバリキーを有効にしていなかった場合、パスワードをリセットしてからデータを復旧する方法はありません。何をすべきかよくわからないなら、続ける前にまず管理者に連絡しましょう。本当に続けますか?", - "Yes, I really want to reset my password now" : "はい、今すぐパスワードをリセットします。", - "Reset" : "リセット", "New password" : "新しいパスワードを入力", "New Password" : "新しいパスワード", + "Reset password" : "パスワードをリセット", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X では、サポートされていません。このOSでは、%sは正常に動作しないかもしれません。ご自身の責任においてご利用ください。", "For the best results, please consider using a GNU/Linux server instead." : "最も良い方法としては、代わりにGNU/Linuxサーバーを利用することをご検討ください。", "Personal" : "個人", @@ -168,6 +163,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : ".htaccessファイルが動作していないため、おそらくあなたのデータディレクトリまたはファイルはインターネットからアクセス可能になっています。", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "サーバーを適正に設定する情報は、こちらの<a href=\"%s\" target=\"_blank\">ドキュメント</a>を参照してください。", "Create an <strong>admin account</strong>" : "<strong>管理者アカウント</strong>を作成してください", + "Username" : "ユーザー名", "Password" : "パスワード", "Storage & database" : "ストレージとデータベース", "Data folder" : "データフォルダー", diff --git a/core/l10n/ka_GE.js b/core/l10n/ka_GE.js index 699065f6c50..782cd54cf33 100644 --- a/core/l10n/ka_GE.js +++ b/core/l10n/ka_GE.js @@ -22,7 +22,6 @@ OC.L10N.register( "December" : "დეკემბერი", "Settings" : "პარამეტრები", "Saving..." : "შენახვა...", - "Reset password" : "პაროლის შეცვლა", "No" : "არა", "Yes" : "კი", "Choose" : "არჩევა", @@ -65,9 +64,8 @@ OC.L10N.register( "_download %n file_::_download %n files_" : [""], "The update was successful. Redirecting you to ownCloud now." : "განახლება ვერ განხორციელდა. გადამისამართება თქვენს ownCloud–ზე.", "Use the following link to reset your password: {link}" : "გამოიყენე შემდეგი ლინკი პაროლის შესაცვლელად: {link}", - "You will receive a link to reset your password via Email." : "თქვენ მოგივათ პაროლის შესაცვლელი ლინკი მეილზე", - "Username" : "მომხმარებლის სახელი", "New password" : "ახალი პაროლი", + "Reset password" : "პაროლის შეცვლა", "Personal" : "პირადი", "Users" : "მომხმარებელი", "Apps" : "აპლიკაციები", @@ -78,6 +76,7 @@ OC.L10N.register( "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" : "თქვენი PHP ვერსია შეიცავს საფრთხეს NULL Byte შეტევებისთვის (CVE-2006-7243)", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "თქვენი data დირექტორია და ფაილები დაშვებადია ინტერნეტში რადგან .htaccess ფაილი არ მუშაობს.", "Create an <strong>admin account</strong>" : "შექმენი <strong>ადმინ ექაუნტი</strong>", + "Username" : "მომხმარებლის სახელი", "Password" : "პაროლი", "Data folder" : "მონაცემთა საქაღალდე", "Configure the database" : "მონაცემთა ბაზის კონფიგურირება", diff --git a/core/l10n/ka_GE.json b/core/l10n/ka_GE.json index c7d8d774620..648f71af987 100644 --- a/core/l10n/ka_GE.json +++ b/core/l10n/ka_GE.json @@ -20,7 +20,6 @@ "December" : "დეკემბერი", "Settings" : "პარამეტრები", "Saving..." : "შენახვა...", - "Reset password" : "პაროლის შეცვლა", "No" : "არა", "Yes" : "კი", "Choose" : "არჩევა", @@ -63,9 +62,8 @@ "_download %n file_::_download %n files_" : [""], "The update was successful. Redirecting you to ownCloud now." : "განახლება ვერ განხორციელდა. გადამისამართება თქვენს ownCloud–ზე.", "Use the following link to reset your password: {link}" : "გამოიყენე შემდეგი ლინკი პაროლის შესაცვლელად: {link}", - "You will receive a link to reset your password via Email." : "თქვენ მოგივათ პაროლის შესაცვლელი ლინკი მეილზე", - "Username" : "მომხმარებლის სახელი", "New password" : "ახალი პაროლი", + "Reset password" : "პაროლის შეცვლა", "Personal" : "პირადი", "Users" : "მომხმარებელი", "Apps" : "აპლიკაციები", @@ -76,6 +74,7 @@ "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" : "თქვენი PHP ვერსია შეიცავს საფრთხეს NULL Byte შეტევებისთვის (CVE-2006-7243)", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "თქვენი data დირექტორია და ფაილები დაშვებადია ინტერნეტში რადგან .htaccess ფაილი არ მუშაობს.", "Create an <strong>admin account</strong>" : "შექმენი <strong>ადმინ ექაუნტი</strong>", + "Username" : "მომხმარებლის სახელი", "Password" : "პაროლი", "Data folder" : "მონაცემთა საქაღალდე", "Configure the database" : "მონაცემთა ბაზის კონფიგურირება", diff --git a/core/l10n/km.js b/core/l10n/km.js index 80b25cbe34c..4b23b1f8a2a 100644 --- a/core/l10n/km.js +++ b/core/l10n/km.js @@ -24,7 +24,6 @@ OC.L10N.register( "December" : "ខែធ្នូ", "Settings" : "ការកំណត់", "Saving..." : "កំពុងរក្សាទុក", - "Reset password" : "កំណត់ពាក្យសម្ងាត់ម្ដងទៀត", "No" : "ទេ", "Yes" : "ព្រម", "Choose" : "ជ្រើស", @@ -74,8 +73,8 @@ OC.L10N.register( "Add" : "បញ្ចូល", "_download %n file_::_download %n files_" : [""], "Please reload the page." : "សូមផ្ទុកទំព័រនេះឡើងវិញ។", - "Username" : "ឈ្មោះអ្នកប្រើ", "New password" : "ពាក្យសម្ងាត់ថ្មី", + "Reset password" : "កំណត់ពាក្យសម្ងាត់ម្ដងទៀត", "Personal" : "ផ្ទាល់ខ្លួន", "Users" : "អ្នកប្រើ", "Apps" : "កម្មវិធី", @@ -84,6 +83,7 @@ OC.L10N.register( "Access forbidden" : "បានហាមឃាត់ការចូល", "Security Warning" : "បម្រាមសុវត្ថិភាព", "Create an <strong>admin account</strong>" : "បង្កើត<strong>គណនីអភិបាល</strong>", + "Username" : "ឈ្មោះអ្នកប្រើ", "Password" : "ពាក្យសម្ងាត់", "Storage & database" : "ឃ្លាំងផ្ទុក & មូលដ្ឋានទិន្នន័យ", "Data folder" : "ថតទិន្នន័យ", diff --git a/core/l10n/km.json b/core/l10n/km.json index 50f693d3620..ccaf0576f2c 100644 --- a/core/l10n/km.json +++ b/core/l10n/km.json @@ -22,7 +22,6 @@ "December" : "ខែធ្នូ", "Settings" : "ការកំណត់", "Saving..." : "កំពុងរក្សាទុក", - "Reset password" : "កំណត់ពាក្យសម្ងាត់ម្ដងទៀត", "No" : "ទេ", "Yes" : "ព្រម", "Choose" : "ជ្រើស", @@ -72,8 +71,8 @@ "Add" : "បញ្ចូល", "_download %n file_::_download %n files_" : [""], "Please reload the page." : "សូមផ្ទុកទំព័រនេះឡើងវិញ។", - "Username" : "ឈ្មោះអ្នកប្រើ", "New password" : "ពាក្យសម្ងាត់ថ្មី", + "Reset password" : "កំណត់ពាក្យសម្ងាត់ម្ដងទៀត", "Personal" : "ផ្ទាល់ខ្លួន", "Users" : "អ្នកប្រើ", "Apps" : "កម្មវិធី", @@ -82,6 +81,7 @@ "Access forbidden" : "បានហាមឃាត់ការចូល", "Security Warning" : "បម្រាមសុវត្ថិភាព", "Create an <strong>admin account</strong>" : "បង្កើត<strong>គណនីអភិបាល</strong>", + "Username" : "ឈ្មោះអ្នកប្រើ", "Password" : "ពាក្យសម្ងាត់", "Storage & database" : "ឃ្លាំងផ្ទុក & មូលដ្ឋានទិន្នន័យ", "Data folder" : "ថតទិន្នន័យ", diff --git a/core/l10n/ko.js b/core/l10n/ko.js index a4c637cec83..91ed8a0fde6 100644 --- a/core/l10n/ko.js +++ b/core/l10n/ko.js @@ -32,7 +32,6 @@ OC.L10N.register( "Settings" : "설정", "Saving..." : "저장 중...", "Couldn't send reset email. Please contact your administrator." : "재설정 메일을 보낼수 없습니다. 관리자에게 문의하십시오.", - "Reset password" : "암호 재설정", "Password can not be changed. Please contact your administrator." : "비밀번호를 변경할수 없습니다. 관리자에게 문의하십시오.", "No" : "아니요", "Yes" : "예", @@ -103,13 +102,9 @@ OC.L10N.register( "The update was successful. Redirecting you to ownCloud now." : "업데이트가 성공하였습니다. ownCloud로 돌아갑니다.", "%s password reset" : "%s 암호 재설정", "Use the following link to reset your password: {link}" : "다음 링크를 사용하여 암호를 재설정할 수 있습니다: {link}", - "You will receive a link to reset your password via Email." : "이메일로 암호 재설정 링크를 보냈습니다.", - "Username" : "사용자 이름", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "저장된 파일은 암호화되어 있습니다. 복구 키를 활성화하지 않았다면 암호를 초기화한 후 데이터를 복구할 수 없습니다. 무엇을 해야 할 지 모르겠으면 진행하기 전에 시스템 관리자에게 연락하십시오. 계속 진행하시겠습니까?", - "Yes, I really want to reset my password now" : "예, 지금 내 암호를 재설정합니다", - "Reset" : "재설정", "New password" : "새 암호", "New Password" : "새 암호", + "Reset password" : "암호 재설정", "Personal" : "개인", "Users" : "사용자", "Apps" : "앱", @@ -132,6 +127,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : ".htaccess 파일이 처리되지 않아서 데이터 디렉터리와 파일을 인터넷에서 접근할 수 없을 수도 있습니다.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "올바른 서버 설정을 위한 정보는 <a href=\"%s\" target=\"_blank\">문서</a>를 참조하십시오.", "Create an <strong>admin account</strong>" : "<strong>관리자 계정</strong> 만들기", + "Username" : "사용자 이름", "Password" : "암호", "Storage & database" : "스토리지 & 데이터베이스", "Data folder" : "데이터 폴더", diff --git a/core/l10n/ko.json b/core/l10n/ko.json index b068150f590..769bc98315b 100644 --- a/core/l10n/ko.json +++ b/core/l10n/ko.json @@ -30,7 +30,6 @@ "Settings" : "설정", "Saving..." : "저장 중...", "Couldn't send reset email. Please contact your administrator." : "재설정 메일을 보낼수 없습니다. 관리자에게 문의하십시오.", - "Reset password" : "암호 재설정", "Password can not be changed. Please contact your administrator." : "비밀번호를 변경할수 없습니다. 관리자에게 문의하십시오.", "No" : "아니요", "Yes" : "예", @@ -101,13 +100,9 @@ "The update was successful. Redirecting you to ownCloud now." : "업데이트가 성공하였습니다. ownCloud로 돌아갑니다.", "%s password reset" : "%s 암호 재설정", "Use the following link to reset your password: {link}" : "다음 링크를 사용하여 암호를 재설정할 수 있습니다: {link}", - "You will receive a link to reset your password via Email." : "이메일로 암호 재설정 링크를 보냈습니다.", - "Username" : "사용자 이름", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "저장된 파일은 암호화되어 있습니다. 복구 키를 활성화하지 않았다면 암호를 초기화한 후 데이터를 복구할 수 없습니다. 무엇을 해야 할 지 모르겠으면 진행하기 전에 시스템 관리자에게 연락하십시오. 계속 진행하시겠습니까?", - "Yes, I really want to reset my password now" : "예, 지금 내 암호를 재설정합니다", - "Reset" : "재설정", "New password" : "새 암호", "New Password" : "새 암호", + "Reset password" : "암호 재설정", "Personal" : "개인", "Users" : "사용자", "Apps" : "앱", @@ -130,6 +125,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : ".htaccess 파일이 처리되지 않아서 데이터 디렉터리와 파일을 인터넷에서 접근할 수 없을 수도 있습니다.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "올바른 서버 설정을 위한 정보는 <a href=\"%s\" target=\"_blank\">문서</a>를 참조하십시오.", "Create an <strong>admin account</strong>" : "<strong>관리자 계정</strong> 만들기", + "Username" : "사용자 이름", "Password" : "암호", "Storage & database" : "스토리지 & 데이터베이스", "Data folder" : "데이터 폴더", diff --git a/core/l10n/ku_IQ.js b/core/l10n/ku_IQ.js index 7f249580986..1c780a6a019 100644 --- a/core/l10n/ku_IQ.js +++ b/core/l10n/ku_IQ.js @@ -3,7 +3,6 @@ OC.L10N.register( { "Settings" : "دهستكاری", "Saving..." : "پاشکهوتدهکات...", - "Reset password" : "دووباره كردنهوهی وشهی نهێنی", "No" : "نەخێر", "Yes" : "بەڵێ", "_{count} file conflict_::_{count} file conflicts_" : ["",""], @@ -13,12 +12,13 @@ OC.L10N.register( "Warning" : "ئاگاداری", "Add" : "زیادکردن", "_download %n file_::_download %n files_" : ["",""], - "Username" : "ناوی بهکارهێنهر", "New password" : "وشەی نهێنی نوێ", + "Reset password" : "دووباره كردنهوهی وشهی نهێنی", "Users" : "بهكارهێنهر", "Apps" : "بهرنامهكان", "Admin" : "بهڕێوهبهری سهرهكی", "Help" : "یارمەتی", + "Username" : "ناوی بهکارهێنهر", "Password" : "وشەی تێپەربو", "Data folder" : "زانیاری فۆڵدهر", "Database user" : "بهكارهێنهری داتابهیس", diff --git a/core/l10n/ku_IQ.json b/core/l10n/ku_IQ.json index 2772a2895a2..3dcea4b4fa2 100644 --- a/core/l10n/ku_IQ.json +++ b/core/l10n/ku_IQ.json @@ -1,7 +1,6 @@ { "translations": { "Settings" : "دهستكاری", "Saving..." : "پاشکهوتدهکات...", - "Reset password" : "دووباره كردنهوهی وشهی نهێنی", "No" : "نەخێر", "Yes" : "بەڵێ", "_{count} file conflict_::_{count} file conflicts_" : ["",""], @@ -11,12 +10,13 @@ "Warning" : "ئاگاداری", "Add" : "زیادکردن", "_download %n file_::_download %n files_" : ["",""], - "Username" : "ناوی بهکارهێنهر", "New password" : "وشەی نهێنی نوێ", + "Reset password" : "دووباره كردنهوهی وشهی نهێنی", "Users" : "بهكارهێنهر", "Apps" : "بهرنامهكان", "Admin" : "بهڕێوهبهری سهرهكی", "Help" : "یارمەتی", + "Username" : "ناوی بهکارهێنهر", "Password" : "وشەی تێپەربو", "Data folder" : "زانیاری فۆڵدهر", "Database user" : "بهكارهێنهری داتابهیس", diff --git a/core/l10n/lb.js b/core/l10n/lb.js index 90ceb4cd8b8..cb918f1e87e 100644 --- a/core/l10n/lb.js +++ b/core/l10n/lb.js @@ -28,7 +28,6 @@ OC.L10N.register( "December" : "Dezember", "Settings" : "Astellungen", "Saving..." : "Speicheren...", - "Reset password" : "Passwuert zréck setzen", "No" : "Nee", "Yes" : "Jo", "Choose" : "Auswielen", @@ -80,12 +79,8 @@ OC.L10N.register( "The update was successful. Redirecting you to ownCloud now." : "Den Update war erfollegräich. Du gëss elo bei d'ownCloud ëmgeleet.", "%s password reset" : "%s Passwuert ass nei gesat", "Use the following link to reset your password: {link}" : "Benotz folgende Link fir däi Passwuert zréckzesetzen: {link}", - "You will receive a link to reset your password via Email." : "Du kriss e Link fir däi Passwuert zréckzesetze via Email geschéckt.", - "Username" : "Benotzernumm", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Deng Fichiere si verschlësselt. Falls du de Recuperatiouns-Schlëssel net aktivéiert hues, gëtt et keng Méiglechkeet nees un deng Daten ze komme wann däi Passwuert muss zréckgesat ginn. Falls du net sécher bass wat s de maache soll, kontaktéier w.e.gl däin Administrateur bevir s de weidermëss. Wëlls de wierklech weidermaachen?", - "Yes, I really want to reset my password now" : "Jo, ech wëll mäi Passwuert elo zrécksetzen", - "Reset" : "Zeréck setzen", "New password" : "Neit Passwuert", + "Reset password" : "Passwuert zréck setzen", "Personal" : "Perséinlech", "Users" : "Benotzer", "Apps" : "Applikatiounen", @@ -100,6 +95,7 @@ OC.L10N.register( "Please update your PHP installation to use %s securely." : "Aktualiséier w.e.gl deng PHP-Installatioun fir %s sécher kennen ze benotzen.", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Däin Daten-Dossier an deng Fichieren si wahrscheinlech iwwert den Internet accessibel well den .htaccess-Fichier net funktionnéiert.", "Create an <strong>admin account</strong>" : "En <strong>Admin-Account</strong> uleeën", + "Username" : "Benotzernumm", "Password" : "Passwuert", "Data folder" : "Daten-Dossier", "Configure the database" : "D'Datebank konfiguréieren", diff --git a/core/l10n/lb.json b/core/l10n/lb.json index 9a1be1e4dd9..f20d81a44cf 100644 --- a/core/l10n/lb.json +++ b/core/l10n/lb.json @@ -26,7 +26,6 @@ "December" : "Dezember", "Settings" : "Astellungen", "Saving..." : "Speicheren...", - "Reset password" : "Passwuert zréck setzen", "No" : "Nee", "Yes" : "Jo", "Choose" : "Auswielen", @@ -78,12 +77,8 @@ "The update was successful. Redirecting you to ownCloud now." : "Den Update war erfollegräich. Du gëss elo bei d'ownCloud ëmgeleet.", "%s password reset" : "%s Passwuert ass nei gesat", "Use the following link to reset your password: {link}" : "Benotz folgende Link fir däi Passwuert zréckzesetzen: {link}", - "You will receive a link to reset your password via Email." : "Du kriss e Link fir däi Passwuert zréckzesetze via Email geschéckt.", - "Username" : "Benotzernumm", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Deng Fichiere si verschlësselt. Falls du de Recuperatiouns-Schlëssel net aktivéiert hues, gëtt et keng Méiglechkeet nees un deng Daten ze komme wann däi Passwuert muss zréckgesat ginn. Falls du net sécher bass wat s de maache soll, kontaktéier w.e.gl däin Administrateur bevir s de weidermëss. Wëlls de wierklech weidermaachen?", - "Yes, I really want to reset my password now" : "Jo, ech wëll mäi Passwuert elo zrécksetzen", - "Reset" : "Zeréck setzen", "New password" : "Neit Passwuert", + "Reset password" : "Passwuert zréck setzen", "Personal" : "Perséinlech", "Users" : "Benotzer", "Apps" : "Applikatiounen", @@ -98,6 +93,7 @@ "Please update your PHP installation to use %s securely." : "Aktualiséier w.e.gl deng PHP-Installatioun fir %s sécher kennen ze benotzen.", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Däin Daten-Dossier an deng Fichieren si wahrscheinlech iwwert den Internet accessibel well den .htaccess-Fichier net funktionnéiert.", "Create an <strong>admin account</strong>" : "En <strong>Admin-Account</strong> uleeën", + "Username" : "Benotzernumm", "Password" : "Passwuert", "Data folder" : "Daten-Dossier", "Configure the database" : "D'Datebank konfiguréieren", diff --git a/core/l10n/lt_LT.js b/core/l10n/lt_LT.js index e3796940fbe..5f7f1e3e4e1 100644 --- a/core/l10n/lt_LT.js +++ b/core/l10n/lt_LT.js @@ -31,7 +31,6 @@ OC.L10N.register( "December" : "Gruodis", "Settings" : "Nustatymai", "Saving..." : "Saugoma...", - "Reset password" : "Atkurti slaptažodį", "No" : "Ne", "Yes" : "Taip", "Choose" : "Pasirinkite", @@ -94,12 +93,8 @@ OC.L10N.register( "The update was successful. Redirecting you to ownCloud now." : "Atnaujinimas buvo sėkmingas. Nukreipiame į jūsų ownCloud.", "%s password reset" : "%s slaptažodžio atnaujinimas", "Use the following link to reset your password: {link}" : "Slaptažodio atkūrimui naudokite šią nuorodą: {link}", - "You will receive a link to reset your password via Email." : "Elektroniniu paštu gausite nuorodą, su kuria galėsite iš naujo nustatyti slaptažodį.", - "Username" : "Prisijungimo vardas", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Jūsų failai yra užšifruoti. Jei neįjungėte atstatymo rakto, nebus galimybės atstatyti duomenų po slaptažodžio atstatymo. Jei nesate tikri ką daryti, prašome susisiekti su administratoriumi prie tęsiant. Ar tikrai tęsti?", - "Yes, I really want to reset my password now" : "Taip, aš tikrai noriu atnaujinti slaptažodį", - "Reset" : "Atstatyti", "New password" : "Naujas slaptažodis", + "Reset password" : "Atkurti slaptažodį", "Personal" : "Asmeniniai", "Users" : "Vartotojai", "Apps" : "Programos", @@ -122,6 +117,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Jūsų failai yra tikriausiai prieinami per internetą nes .htaccess failas neveikia.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Kad gauti informaciją apie tai kaip tinkamai sukonfigūruoti savo serverį, prašome skaityti <a href=\"%s\" target=\"_blank\">dokumentaciją</a>.", "Create an <strong>admin account</strong>" : "Sukurti <strong>administratoriaus paskyrą</strong>", + "Username" : "Prisijungimo vardas", "Password" : "Slaptažodis", "Data folder" : "Duomenų katalogas", "Configure the database" : "Nustatyti duomenų bazę", diff --git a/core/l10n/lt_LT.json b/core/l10n/lt_LT.json index a70b966aae2..781373ec76e 100644 --- a/core/l10n/lt_LT.json +++ b/core/l10n/lt_LT.json @@ -29,7 +29,6 @@ "December" : "Gruodis", "Settings" : "Nustatymai", "Saving..." : "Saugoma...", - "Reset password" : "Atkurti slaptažodį", "No" : "Ne", "Yes" : "Taip", "Choose" : "Pasirinkite", @@ -92,12 +91,8 @@ "The update was successful. Redirecting you to ownCloud now." : "Atnaujinimas buvo sėkmingas. Nukreipiame į jūsų ownCloud.", "%s password reset" : "%s slaptažodžio atnaujinimas", "Use the following link to reset your password: {link}" : "Slaptažodio atkūrimui naudokite šią nuorodą: {link}", - "You will receive a link to reset your password via Email." : "Elektroniniu paštu gausite nuorodą, su kuria galėsite iš naujo nustatyti slaptažodį.", - "Username" : "Prisijungimo vardas", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Jūsų failai yra užšifruoti. Jei neįjungėte atstatymo rakto, nebus galimybės atstatyti duomenų po slaptažodžio atstatymo. Jei nesate tikri ką daryti, prašome susisiekti su administratoriumi prie tęsiant. Ar tikrai tęsti?", - "Yes, I really want to reset my password now" : "Taip, aš tikrai noriu atnaujinti slaptažodį", - "Reset" : "Atstatyti", "New password" : "Naujas slaptažodis", + "Reset password" : "Atkurti slaptažodį", "Personal" : "Asmeniniai", "Users" : "Vartotojai", "Apps" : "Programos", @@ -120,6 +115,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Jūsų failai yra tikriausiai prieinami per internetą nes .htaccess failas neveikia.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Kad gauti informaciją apie tai kaip tinkamai sukonfigūruoti savo serverį, prašome skaityti <a href=\"%s\" target=\"_blank\">dokumentaciją</a>.", "Create an <strong>admin account</strong>" : "Sukurti <strong>administratoriaus paskyrą</strong>", + "Username" : "Prisijungimo vardas", "Password" : "Slaptažodis", "Data folder" : "Duomenų katalogas", "Configure the database" : "Nustatyti duomenų bazę", diff --git a/core/l10n/lv.js b/core/l10n/lv.js index 16bb3007e4c..e71b24a060e 100644 --- a/core/l10n/lv.js +++ b/core/l10n/lv.js @@ -22,7 +22,6 @@ OC.L10N.register( "December" : "Decembris", "Settings" : "Iestatījumi", "Saving..." : "Saglabā...", - "Reset password" : "Mainīt paroli", "No" : "Nē", "Yes" : "Jā", "Choose" : "Izvēlieties", @@ -68,11 +67,8 @@ OC.L10N.register( "The update was successful. Redirecting you to ownCloud now." : "Atjaunināšana beidzās sekmīgi. Tagad pārsūta jūs uz ownCloud.", "%s password reset" : "%s paroles maiņa", "Use the following link to reset your password: {link}" : "Izmantojiet šo saiti, lai mainītu paroli: {link}", - "You will receive a link to reset your password via Email." : "Jūs savā epastā saņemsiet interneta saiti, caur kuru varēsiet atjaunot paroli.", - "Username" : "Lietotājvārds", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Jūsu faili ir šifrēti. Ja nav iespējota atgūšanas kods, tad nebūs iespēja atjaunot jūsu failus pēc tam kad tiks mainīta parole. ja neesat pārliecināts kā rīkoties, jautājiet administratoram. Vai tiešam vēlaties turpināt?", - "Yes, I really want to reset my password now" : "Jā, Es tiešām vēlos mainīt savu paroli", "New password" : "Jauna parole", + "Reset password" : "Mainīt paroli", "Personal" : "Personīgi", "Users" : "Lietotāji", "Apps" : "Lietotnes", @@ -85,6 +81,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Visticamāk, jūsu datu direktorija un datnes ir pieejamas no interneta, jo .htaccess datne nedarbojas.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Vairāk informācijai kā konfigurēt serveri, lūdzu skatiet <a href=\"%s\" target=\"_blank\">dokumentāciju</a>.", "Create an <strong>admin account</strong>" : "Izveidot <strong>administratora kontu</strong>", + "Username" : "Lietotājvārds", "Password" : "Parole", "Data folder" : "Datu mape", "Configure the database" : "Konfigurēt datubāzi", diff --git a/core/l10n/lv.json b/core/l10n/lv.json index afeb3f82a17..684c659d844 100644 --- a/core/l10n/lv.json +++ b/core/l10n/lv.json @@ -20,7 +20,6 @@ "December" : "Decembris", "Settings" : "Iestatījumi", "Saving..." : "Saglabā...", - "Reset password" : "Mainīt paroli", "No" : "Nē", "Yes" : "Jā", "Choose" : "Izvēlieties", @@ -66,11 +65,8 @@ "The update was successful. Redirecting you to ownCloud now." : "Atjaunināšana beidzās sekmīgi. Tagad pārsūta jūs uz ownCloud.", "%s password reset" : "%s paroles maiņa", "Use the following link to reset your password: {link}" : "Izmantojiet šo saiti, lai mainītu paroli: {link}", - "You will receive a link to reset your password via Email." : "Jūs savā epastā saņemsiet interneta saiti, caur kuru varēsiet atjaunot paroli.", - "Username" : "Lietotājvārds", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Jūsu faili ir šifrēti. Ja nav iespējota atgūšanas kods, tad nebūs iespēja atjaunot jūsu failus pēc tam kad tiks mainīta parole. ja neesat pārliecināts kā rīkoties, jautājiet administratoram. Vai tiešam vēlaties turpināt?", - "Yes, I really want to reset my password now" : "Jā, Es tiešām vēlos mainīt savu paroli", "New password" : "Jauna parole", + "Reset password" : "Mainīt paroli", "Personal" : "Personīgi", "Users" : "Lietotāji", "Apps" : "Lietotnes", @@ -83,6 +79,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Visticamāk, jūsu datu direktorija un datnes ir pieejamas no interneta, jo .htaccess datne nedarbojas.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Vairāk informācijai kā konfigurēt serveri, lūdzu skatiet <a href=\"%s\" target=\"_blank\">dokumentāciju</a>.", "Create an <strong>admin account</strong>" : "Izveidot <strong>administratora kontu</strong>", + "Username" : "Lietotājvārds", "Password" : "Parole", "Data folder" : "Datu mape", "Configure the database" : "Konfigurēt datubāzi", diff --git a/core/l10n/mk.js b/core/l10n/mk.js index 0b1e993a8f4..20ad24d1e38 100644 --- a/core/l10n/mk.js +++ b/core/l10n/mk.js @@ -28,7 +28,6 @@ OC.L10N.register( "December" : "Декември", "Settings" : "Подесувања", "Saving..." : "Снимам...", - "Reset password" : "Ресетирај лозинка", "No" : "Не", "Yes" : "Да", "Choose" : "Избери", @@ -86,11 +85,8 @@ OC.L10N.register( "The update was successful. Redirecting you to ownCloud now." : "Надградбата беше успешна. Веднаш ве префрлам на вашиот ownCloud.", "%s password reset" : "%s ресетирање на лозинката", "Use the following link to reset your password: {link}" : "Користете ја следната врска да ја ресетирате Вашата лозинка: {link}", - "You will receive a link to reset your password via Email." : "Ќе добиете врска по е-пошта за да може да ја ресетирате Вашата лозинка.", - "Username" : "Корисничко име", - "Yes, I really want to reset my password now" : "Да, јас сега навистина сакам да ја поништам својата лозинка", - "Reset" : "Поништи", "New password" : "Нова лозинка", + "Reset password" : "Ресетирај лозинка", "Personal" : "Лично", "Users" : "Корисници", "Apps" : "Аппликации", @@ -109,6 +105,7 @@ OC.L10N.register( "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" : "Вашата верзија на PHP е ранлива на NULL Byte attack (CVE-2006-7243)", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Вашиот директориум со податоци и датотеки се веројатно достапни преку интенернт поради што .htaccess датотеката не функционира.", "Create an <strong>admin account</strong>" : "Направете <strong>администраторска сметка</strong>", + "Username" : "Корисничко име", "Password" : "Лозинка", "Data folder" : "Фолдер со податоци", "Configure the database" : "Конфигурирај ја базата", diff --git a/core/l10n/mk.json b/core/l10n/mk.json index 2da6b74e601..19fbf344532 100644 --- a/core/l10n/mk.json +++ b/core/l10n/mk.json @@ -26,7 +26,6 @@ "December" : "Декември", "Settings" : "Подесувања", "Saving..." : "Снимам...", - "Reset password" : "Ресетирај лозинка", "No" : "Не", "Yes" : "Да", "Choose" : "Избери", @@ -84,11 +83,8 @@ "The update was successful. Redirecting you to ownCloud now." : "Надградбата беше успешна. Веднаш ве префрлам на вашиот ownCloud.", "%s password reset" : "%s ресетирање на лозинката", "Use the following link to reset your password: {link}" : "Користете ја следната врска да ја ресетирате Вашата лозинка: {link}", - "You will receive a link to reset your password via Email." : "Ќе добиете врска по е-пошта за да може да ја ресетирате Вашата лозинка.", - "Username" : "Корисничко име", - "Yes, I really want to reset my password now" : "Да, јас сега навистина сакам да ја поништам својата лозинка", - "Reset" : "Поништи", "New password" : "Нова лозинка", + "Reset password" : "Ресетирај лозинка", "Personal" : "Лично", "Users" : "Корисници", "Apps" : "Аппликации", @@ -107,6 +103,7 @@ "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" : "Вашата верзија на PHP е ранлива на NULL Byte attack (CVE-2006-7243)", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Вашиот директориум со податоци и датотеки се веројатно достапни преку интенернт поради што .htaccess датотеката не функционира.", "Create an <strong>admin account</strong>" : "Направете <strong>администраторска сметка</strong>", + "Username" : "Корисничко име", "Password" : "Лозинка", "Data folder" : "Фолдер со податоци", "Configure the database" : "Конфигурирај ја базата", diff --git a/core/l10n/ms_MY.js b/core/l10n/ms_MY.js index 612641fe748..7bf41489825 100644 --- a/core/l10n/ms_MY.js +++ b/core/l10n/ms_MY.js @@ -22,7 +22,6 @@ OC.L10N.register( "December" : "Disember", "Settings" : "Tetapan", "Saving..." : "Simpan...", - "Reset password" : "Penetapan semula kata laluan", "No" : "Tidak", "Yes" : "Ya", "Ok" : "Ok", @@ -38,9 +37,8 @@ OC.L10N.register( "Add" : "Tambah", "_download %n file_::_download %n files_" : [""], "Use the following link to reset your password: {link}" : "Guna pautan berikut untuk menetapkan semula kata laluan anda: {link}", - "You will receive a link to reset your password via Email." : "Anda akan menerima pautan untuk menetapkan semula kata laluan anda melalui emel", - "Username" : "Nama pengguna", "New password" : "Kata laluan baru", + "Reset password" : "Penetapan semula kata laluan", "Personal" : "Peribadi", "Users" : "Pengguna", "Apps" : "Aplikasi", @@ -49,6 +47,7 @@ OC.L10N.register( "Access forbidden" : "Larangan akses", "Security Warning" : "Amaran keselamatan", "Create an <strong>admin account</strong>" : "buat <strong>akaun admin</strong>", + "Username" : "Nama pengguna", "Password" : "Kata laluan", "Data folder" : "Fail data", "Configure the database" : "Konfigurasi pangkalan data", diff --git a/core/l10n/ms_MY.json b/core/l10n/ms_MY.json index c1323607c8c..3f23b40e847 100644 --- a/core/l10n/ms_MY.json +++ b/core/l10n/ms_MY.json @@ -20,7 +20,6 @@ "December" : "Disember", "Settings" : "Tetapan", "Saving..." : "Simpan...", - "Reset password" : "Penetapan semula kata laluan", "No" : "Tidak", "Yes" : "Ya", "Ok" : "Ok", @@ -36,9 +35,8 @@ "Add" : "Tambah", "_download %n file_::_download %n files_" : [""], "Use the following link to reset your password: {link}" : "Guna pautan berikut untuk menetapkan semula kata laluan anda: {link}", - "You will receive a link to reset your password via Email." : "Anda akan menerima pautan untuk menetapkan semula kata laluan anda melalui emel", - "Username" : "Nama pengguna", "New password" : "Kata laluan baru", + "Reset password" : "Penetapan semula kata laluan", "Personal" : "Peribadi", "Users" : "Pengguna", "Apps" : "Aplikasi", @@ -47,6 +45,7 @@ "Access forbidden" : "Larangan akses", "Security Warning" : "Amaran keselamatan", "Create an <strong>admin account</strong>" : "buat <strong>akaun admin</strong>", + "Username" : "Nama pengguna", "Password" : "Kata laluan", "Data folder" : "Fail data", "Configure the database" : "Konfigurasi pangkalan data", diff --git a/core/l10n/my_MM.js b/core/l10n/my_MM.js index ff87f52a5e2..4865ebd319e 100644 --- a/core/l10n/my_MM.js +++ b/core/l10n/my_MM.js @@ -28,8 +28,6 @@ OC.L10N.register( "Password protected" : "စကားဝှက်ဖြင့်ကာကွယ်ထားသည်", "Add" : "ပေါင်းထည့်", "_download %n file_::_download %n files_" : [""], - "You will receive a link to reset your password via Email." : "အီးမေးလ်မှတစ်ဆင့် သင်၏စကားဝှက်ကို ပြန်ဖော်ရန်အတွက် Link တစ်ခုလက်ခံရရှိပါလိမ့်မယ်။", - "Username" : "သုံးစွဲသူအမည်", "New password" : "စကားဝှက်အသစ်", "Users" : "သုံးစွဲသူ", "Apps" : "Apps", @@ -37,6 +35,7 @@ OC.L10N.register( "Help" : "အကူအညီ", "Security Warning" : "လုံခြုံရေးသတိပေးချက်", "Create an <strong>admin account</strong>" : "<strong>အက်ဒမင်အကောင့်</strong>တစ်ခုဖန်တီးမည်", + "Username" : "သုံးစွဲသူအမည်", "Password" : "စကားဝှက်", "Data folder" : "အချက်အလက်ဖိုလ်ဒါလ်", "Database user" : "Database သုံးစွဲသူ", diff --git a/core/l10n/my_MM.json b/core/l10n/my_MM.json index 086e14cdad0..fd30a3df74b 100644 --- a/core/l10n/my_MM.json +++ b/core/l10n/my_MM.json @@ -26,8 +26,6 @@ "Password protected" : "စကားဝှက်ဖြင့်ကာကွယ်ထားသည်", "Add" : "ပေါင်းထည့်", "_download %n file_::_download %n files_" : [""], - "You will receive a link to reset your password via Email." : "အီးမေးလ်မှတစ်ဆင့် သင်၏စကားဝှက်ကို ပြန်ဖော်ရန်အတွက် Link တစ်ခုလက်ခံရရှိပါလိမ့်မယ်။", - "Username" : "သုံးစွဲသူအမည်", "New password" : "စကားဝှက်အသစ်", "Users" : "သုံးစွဲသူ", "Apps" : "Apps", @@ -35,6 +33,7 @@ "Help" : "အကူအညီ", "Security Warning" : "လုံခြုံရေးသတိပေးချက်", "Create an <strong>admin account</strong>" : "<strong>အက်ဒမင်အကောင့်</strong>တစ်ခုဖန်တီးမည်", + "Username" : "သုံးစွဲသူအမည်", "Password" : "စကားဝှက်", "Data folder" : "အချက်အလက်ဖိုလ်ဒါလ်", "Database user" : "Database သုံးစွဲသူ", diff --git a/core/l10n/nb_NO.js b/core/l10n/nb_NO.js index a033c38aa77..5bb81e3f7a1 100644 --- a/core/l10n/nb_NO.js +++ b/core/l10n/nb_NO.js @@ -39,7 +39,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Lenken for tilbakestilling av passordet ditt er sendt til din e-postadresse. Hvis du ikke mottar den innen rimelig tid, sjekk mappen for søppelpost.<br>Hvis du ikke finner den der, kontakt din lokale administrator.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Filene dine er kryptert. Hvis du ikke har aktivert gjenopprettingsnøkkelen, vil det være helt umulig å få tilbake dataene dine etter at pasordet ditt er tilbakestilt.<br />Hvis du er usikker på hva du skal gjøre, kontakt administratoren din før du fortsetter. <br />Vil du virkelig fortsette?", "I know what I'm doing" : "Jeg vet hva jeg gjør", - "Reset password" : "Tilbakestill passord", "Password can not be changed. Please contact your administrator." : "Passordet kan ikke endres. Kontakt administratoren din.", "No" : "Nei", "Yes" : "Ja", @@ -120,13 +119,9 @@ OC.L10N.register( "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Klarte ikke å sende e-post for tilbakestilling av passord fordi det ikke finnes noen e-postadresse for dette brukernavnet. Kontakt administratoren din.", "%s password reset" : "%s tilbakestilling av passord", "Use the following link to reset your password: {link}" : "Bruk følgende lenke for å tilbakestille passordet ditt: {link}", - "You will receive a link to reset your password via Email." : "Du burde motta detaljer om å tilbakestille passordet ditt via epost.", - "Username" : "Brukernavn", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Filene dine er kryptert. Hvis du ikke har aktivert gjenopprettingsnøkkelen, vil det være helt umulig å få tilbake dataene dine etter at passordet ditt er tilbakestilt. Hvis du er usikker på hva du skal gjøre, kontakt administratoren din før du fortsetter. Vil du virkelig fortsette?", - "Yes, I really want to reset my password now" : "Ja, jeg vil virkelig tilbakestille passordet mitt nå", - "Reset" : "Tilbakestill", "New password" : "Nytt passord", "New Password" : "Nytt passord", + "Reset password" : "Tilbakestill passord", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X støttes ikke og %s vil ikke fungere korrekt på denne plattformen. Bruk på egen risiko!", "For the best results, please consider using a GNU/Linux server instead." : "For beste resultat, vurder å bruke en GNU/Linux-server i stedet.", "Personal" : "Personlig", @@ -165,6 +160,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Datamappen og filene dine er sannsynligvis tilgjengelig fra Internett fordi .htaccess-filen ikke fungerer.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "For informasjon om hvordan du setter opp serveren din riktig, se <a href=\"%s\" target=\"_blank\">dokumentasjonen</a>.", "Create an <strong>admin account</strong>" : "Opprett en <strong>administrator-konto</strong>", + "Username" : "Brukernavn", "Password" : "Passord", "Storage & database" : "Lagring og database", "Data folder" : "Datamappe", diff --git a/core/l10n/nb_NO.json b/core/l10n/nb_NO.json index 9ad2c468000..14c4ce0de01 100644 --- a/core/l10n/nb_NO.json +++ b/core/l10n/nb_NO.json @@ -37,7 +37,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Lenken for tilbakestilling av passordet ditt er sendt til din e-postadresse. Hvis du ikke mottar den innen rimelig tid, sjekk mappen for søppelpost.<br>Hvis du ikke finner den der, kontakt din lokale administrator.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Filene dine er kryptert. Hvis du ikke har aktivert gjenopprettingsnøkkelen, vil det være helt umulig å få tilbake dataene dine etter at pasordet ditt er tilbakestilt.<br />Hvis du er usikker på hva du skal gjøre, kontakt administratoren din før du fortsetter. <br />Vil du virkelig fortsette?", "I know what I'm doing" : "Jeg vet hva jeg gjør", - "Reset password" : "Tilbakestill passord", "Password can not be changed. Please contact your administrator." : "Passordet kan ikke endres. Kontakt administratoren din.", "No" : "Nei", "Yes" : "Ja", @@ -118,13 +117,9 @@ "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Klarte ikke å sende e-post for tilbakestilling av passord fordi det ikke finnes noen e-postadresse for dette brukernavnet. Kontakt administratoren din.", "%s password reset" : "%s tilbakestilling av passord", "Use the following link to reset your password: {link}" : "Bruk følgende lenke for å tilbakestille passordet ditt: {link}", - "You will receive a link to reset your password via Email." : "Du burde motta detaljer om å tilbakestille passordet ditt via epost.", - "Username" : "Brukernavn", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Filene dine er kryptert. Hvis du ikke har aktivert gjenopprettingsnøkkelen, vil det være helt umulig å få tilbake dataene dine etter at passordet ditt er tilbakestilt. Hvis du er usikker på hva du skal gjøre, kontakt administratoren din før du fortsetter. Vil du virkelig fortsette?", - "Yes, I really want to reset my password now" : "Ja, jeg vil virkelig tilbakestille passordet mitt nå", - "Reset" : "Tilbakestill", "New password" : "Nytt passord", "New Password" : "Nytt passord", + "Reset password" : "Tilbakestill passord", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X støttes ikke og %s vil ikke fungere korrekt på denne plattformen. Bruk på egen risiko!", "For the best results, please consider using a GNU/Linux server instead." : "For beste resultat, vurder å bruke en GNU/Linux-server i stedet.", "Personal" : "Personlig", @@ -163,6 +158,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Datamappen og filene dine er sannsynligvis tilgjengelig fra Internett fordi .htaccess-filen ikke fungerer.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "For informasjon om hvordan du setter opp serveren din riktig, se <a href=\"%s\" target=\"_blank\">dokumentasjonen</a>.", "Create an <strong>admin account</strong>" : "Opprett en <strong>administrator-konto</strong>", + "Username" : "Brukernavn", "Password" : "Passord", "Storage & database" : "Lagring og database", "Data folder" : "Datamappe", diff --git a/core/l10n/nl.js b/core/l10n/nl.js index 011b04fd790..a3def91c894 100644 --- a/core/l10n/nl.js +++ b/core/l10n/nl.js @@ -39,7 +39,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "De link om uw wachtwoord te herstellen is per e-mail naar u verstuurd. Als u dit bericht niet binnen redelijke tijd hebt ontvangen, controleer dan uw spammap. <br>Als het daar niet in zit, neem dan contact op met uw beheerder.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Uw bestanden zijn versleuteld. Als u de herstelsleutel niet hebt geactiveerd, is er geen mogelijk om uw gegevens terug te krijgen nadat uw wachtwoord is hersteld. <br>Als u niet weet wat u moet doen, neem dan eerst contact op met uw beheerder. <br>Wilt u echt verder gaan?", "I know what I'm doing" : "Ik weet wat ik doe", - "Reset password" : "Reset wachtwoord", "Password can not be changed. Please contact your administrator." : "Het wachtwoord kan niet worden gewijzigd. Neem contact op met uw beheerder.", "No" : "Nee", "Yes" : "Ja", @@ -124,13 +123,9 @@ OC.L10N.register( "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Kon geen herstel e-mail versturen, omdat er geen e-mailadres bekend is bij deze gebruikersnaam. Neem contact op met uw beheerder.", "%s password reset" : "%s wachtwoord reset", "Use the following link to reset your password: {link}" : "Gebruik de volgende link om uw wachtwoord te resetten: {link}", - "You will receive a link to reset your password via Email." : "U ontvangt een link om uw wachtwoord opnieuw in te stellen via e-mail.", - "Username" : "Gebruikersnaam", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Uw bestanden zijn versleuteld. Als u geen recoverykey hebt ingeschakeld is er geen manier om uw data terug te krijgen na het resetten van uw wachtwoord.\nAls u niet weet wat u moet doen, neem dan alstublieft contact op met uw systeembeheerder voordat u doorgaat.\nWil u echt doorgaan?", - "Yes, I really want to reset my password now" : "Ja, ik wil mijn wachtwoord nu echt resetten", - "Reset" : "Reset", "New password" : "Nieuw wachtwoord", "New Password" : "Nieuw wachtwoord", + "Reset password" : "Reset wachtwoord", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OSX wordt niet ondersteund en %s zal niet goed werken op dit platform. Gebruik het op uw eigen risico!", "For the best results, please consider using a GNU/Linux server instead." : "Voor het beste resultaat adviseren wij het gebruik van een GNU/Linux server.", "Personal" : "Persoonlijk", @@ -170,6 +165,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Uw gegevensdirectory en bestanden zijn vermoedelijk bereikbaar vanaf het internet omdat het .htaccess-bestand niet functioneert.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Bekijk de <a href=\"%s\" target=\"_blank\">documentatie</a> voor Informatie over het correct configureren van uw server.", "Create an <strong>admin account</strong>" : "Maak een <strong>beheerdersaccount</strong> aan", + "Username" : "Gebruikersnaam", "Password" : "Wachtwoord", "Storage & database" : "Opslag & database", "Data folder" : "Gegevensmap", diff --git a/core/l10n/nl.json b/core/l10n/nl.json index b59c04e73ff..6a5e2dccab3 100644 --- a/core/l10n/nl.json +++ b/core/l10n/nl.json @@ -37,7 +37,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "De link om uw wachtwoord te herstellen is per e-mail naar u verstuurd. Als u dit bericht niet binnen redelijke tijd hebt ontvangen, controleer dan uw spammap. <br>Als het daar niet in zit, neem dan contact op met uw beheerder.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Uw bestanden zijn versleuteld. Als u de herstelsleutel niet hebt geactiveerd, is er geen mogelijk om uw gegevens terug te krijgen nadat uw wachtwoord is hersteld. <br>Als u niet weet wat u moet doen, neem dan eerst contact op met uw beheerder. <br>Wilt u echt verder gaan?", "I know what I'm doing" : "Ik weet wat ik doe", - "Reset password" : "Reset wachtwoord", "Password can not be changed. Please contact your administrator." : "Het wachtwoord kan niet worden gewijzigd. Neem contact op met uw beheerder.", "No" : "Nee", "Yes" : "Ja", @@ -122,13 +121,9 @@ "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Kon geen herstel e-mail versturen, omdat er geen e-mailadres bekend is bij deze gebruikersnaam. Neem contact op met uw beheerder.", "%s password reset" : "%s wachtwoord reset", "Use the following link to reset your password: {link}" : "Gebruik de volgende link om uw wachtwoord te resetten: {link}", - "You will receive a link to reset your password via Email." : "U ontvangt een link om uw wachtwoord opnieuw in te stellen via e-mail.", - "Username" : "Gebruikersnaam", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Uw bestanden zijn versleuteld. Als u geen recoverykey hebt ingeschakeld is er geen manier om uw data terug te krijgen na het resetten van uw wachtwoord.\nAls u niet weet wat u moet doen, neem dan alstublieft contact op met uw systeembeheerder voordat u doorgaat.\nWil u echt doorgaan?", - "Yes, I really want to reset my password now" : "Ja, ik wil mijn wachtwoord nu echt resetten", - "Reset" : "Reset", "New password" : "Nieuw wachtwoord", "New Password" : "Nieuw wachtwoord", + "Reset password" : "Reset wachtwoord", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OSX wordt niet ondersteund en %s zal niet goed werken op dit platform. Gebruik het op uw eigen risico!", "For the best results, please consider using a GNU/Linux server instead." : "Voor het beste resultaat adviseren wij het gebruik van een GNU/Linux server.", "Personal" : "Persoonlijk", @@ -168,6 +163,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Uw gegevensdirectory en bestanden zijn vermoedelijk bereikbaar vanaf het internet omdat het .htaccess-bestand niet functioneert.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Bekijk de <a href=\"%s\" target=\"_blank\">documentatie</a> voor Informatie over het correct configureren van uw server.", "Create an <strong>admin account</strong>" : "Maak een <strong>beheerdersaccount</strong> aan", + "Username" : "Gebruikersnaam", "Password" : "Wachtwoord", "Storage & database" : "Opslag & database", "Data folder" : "Gegevensmap", diff --git a/core/l10n/nn_NO.js b/core/l10n/nn_NO.js index d6ba6612f0e..2dccb25d657 100644 --- a/core/l10n/nn_NO.js +++ b/core/l10n/nn_NO.js @@ -32,7 +32,6 @@ OC.L10N.register( "Settings" : "Innstillingar", "Saving..." : "Lagrar …", "I know what I'm doing" : "Eg veit kva eg gjer", - "Reset password" : "Nullstill passord", "No" : "Nei", "Yes" : "Ja", "Choose" : "Vel", @@ -91,11 +90,8 @@ OC.L10N.register( "The update was successful. Redirecting you to ownCloud now." : "Oppdateringa er fullført. Sender deg vidare til ownCloud no.", "%s password reset" : "%s passordnullstilling", "Use the following link to reset your password: {link}" : "Klikk følgjande lenkje til å nullstilla passordet ditt: {link}", - "You will receive a link to reset your password via Email." : "Du vil få ein e-post med ei lenkje for å nullstilla passordet.", - "Username" : "Brukarnamn", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Filene dine er krypterte. Viss du ikkje har skrudd på gjenopprettingsnøkkelen, finst det ingen måte å få tilbake dataa dine når passordet ditt er nullstilt. Viss du ikkje er sikker på kva du skal gjera bør du spørja administratoren din før du går vidare. Vil du verkeleg fortsetja?", - "Yes, I really want to reset my password now" : "Ja, eg vil nullstilla passordet mitt no", "New password" : "Nytt passord", + "Reset password" : "Nullstill passord", "Personal" : "Personleg", "Users" : "Brukarar", "Apps" : "Program", @@ -108,6 +104,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Datamappa og filene dine er sannsynlegvis tilgjengelege frå Internett sidan .htaccess-fila ikkje fungerer.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Ver venleg og les <a href=\"%s\" target=\"_blank\">dokumentasjonen</a> for meir informasjon om korleis du konfigurerer tenaren din.", "Create an <strong>admin account</strong>" : "Lag ein <strong>admin-konto</strong>", + "Username" : "Brukarnamn", "Password" : "Passord", "Data folder" : "Datamappe", "Configure the database" : "Set opp databasen", diff --git a/core/l10n/nn_NO.json b/core/l10n/nn_NO.json index 7c1bbc858f4..25151b7f68e 100644 --- a/core/l10n/nn_NO.json +++ b/core/l10n/nn_NO.json @@ -30,7 +30,6 @@ "Settings" : "Innstillingar", "Saving..." : "Lagrar …", "I know what I'm doing" : "Eg veit kva eg gjer", - "Reset password" : "Nullstill passord", "No" : "Nei", "Yes" : "Ja", "Choose" : "Vel", @@ -89,11 +88,8 @@ "The update was successful. Redirecting you to ownCloud now." : "Oppdateringa er fullført. Sender deg vidare til ownCloud no.", "%s password reset" : "%s passordnullstilling", "Use the following link to reset your password: {link}" : "Klikk følgjande lenkje til å nullstilla passordet ditt: {link}", - "You will receive a link to reset your password via Email." : "Du vil få ein e-post med ei lenkje for å nullstilla passordet.", - "Username" : "Brukarnamn", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Filene dine er krypterte. Viss du ikkje har skrudd på gjenopprettingsnøkkelen, finst det ingen måte å få tilbake dataa dine når passordet ditt er nullstilt. Viss du ikkje er sikker på kva du skal gjera bør du spørja administratoren din før du går vidare. Vil du verkeleg fortsetja?", - "Yes, I really want to reset my password now" : "Ja, eg vil nullstilla passordet mitt no", "New password" : "Nytt passord", + "Reset password" : "Nullstill passord", "Personal" : "Personleg", "Users" : "Brukarar", "Apps" : "Program", @@ -106,6 +102,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Datamappa og filene dine er sannsynlegvis tilgjengelege frå Internett sidan .htaccess-fila ikkje fungerer.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Ver venleg og les <a href=\"%s\" target=\"_blank\">dokumentasjonen</a> for meir informasjon om korleis du konfigurerer tenaren din.", "Create an <strong>admin account</strong>" : "Lag ein <strong>admin-konto</strong>", + "Username" : "Brukarnamn", "Password" : "Passord", "Data folder" : "Datamappe", "Configure the database" : "Set opp databasen", diff --git a/core/l10n/oc.js b/core/l10n/oc.js index 43fee792602..eae84339932 100644 --- a/core/l10n/oc.js +++ b/core/l10n/oc.js @@ -22,7 +22,6 @@ OC.L10N.register( "December" : "Decembre", "Settings" : "Configuracion", "Saving..." : "Enregistra...", - "Reset password" : "Senhal tornat botar", "No" : "Non", "Yes" : "Òc", "Choose" : "Causís", @@ -52,9 +51,8 @@ OC.L10N.register( "Add" : "Ajusta", "_download %n file_::_download %n files_" : ["",""], "Use the following link to reset your password: {link}" : "Utiliza lo ligam seguent per tornar botar lo senhal : {link}", - "You will receive a link to reset your password via Email." : "Reçaupràs un ligam per tornar botar ton senhal via corrièl.", - "Username" : "Non d'usancièr", "New password" : "Senhal novèl", + "Reset password" : "Senhal tornat botar", "Personal" : "Personal", "Users" : "Usancièrs", "Apps" : "Apps", @@ -63,6 +61,7 @@ OC.L10N.register( "Access forbidden" : "Acces enebit", "Security Warning" : "Avertiment de securitat", "Create an <strong>admin account</strong>" : "Crea un <strong>compte admin</strong>", + "Username" : "Non d'usancièr", "Password" : "Senhal", "Data folder" : "Dorsièr de donadas", "Configure the database" : "Configura la basa de donadas", diff --git a/core/l10n/oc.json b/core/l10n/oc.json index c2068151419..3b26135470a 100644 --- a/core/l10n/oc.json +++ b/core/l10n/oc.json @@ -20,7 +20,6 @@ "December" : "Decembre", "Settings" : "Configuracion", "Saving..." : "Enregistra...", - "Reset password" : "Senhal tornat botar", "No" : "Non", "Yes" : "Òc", "Choose" : "Causís", @@ -50,9 +49,8 @@ "Add" : "Ajusta", "_download %n file_::_download %n files_" : ["",""], "Use the following link to reset your password: {link}" : "Utiliza lo ligam seguent per tornar botar lo senhal : {link}", - "You will receive a link to reset your password via Email." : "Reçaupràs un ligam per tornar botar ton senhal via corrièl.", - "Username" : "Non d'usancièr", "New password" : "Senhal novèl", + "Reset password" : "Senhal tornat botar", "Personal" : "Personal", "Users" : "Usancièrs", "Apps" : "Apps", @@ -61,6 +59,7 @@ "Access forbidden" : "Acces enebit", "Security Warning" : "Avertiment de securitat", "Create an <strong>admin account</strong>" : "Crea un <strong>compte admin</strong>", + "Username" : "Non d'usancièr", "Password" : "Senhal", "Data folder" : "Dorsièr de donadas", "Configure the database" : "Configura la basa de donadas", diff --git a/core/l10n/pa.js b/core/l10n/pa.js index 63933496c0c..c4cc7222434 100644 --- a/core/l10n/pa.js +++ b/core/l10n/pa.js @@ -34,8 +34,8 @@ OC.L10N.register( "Warning" : "ਚੇਤਾਵਨੀ", "Delete" : "ਹਟਾਓ", "_download %n file_::_download %n files_" : ["",""], - "Username" : "ਯੂਜ਼ਰ-ਨਾਂ", "Security Warning" : "ਸੁਰੱਖਿਆ ਚੇਤਾਵਨੀ", + "Username" : "ਯੂਜ਼ਰ-ਨਾਂ", "Password" : "ਪਾਸਵਰ" }, "nplurals=2; plural=(n != 1);"); diff --git a/core/l10n/pa.json b/core/l10n/pa.json index 6b1259ba9cc..c46d4a37b42 100644 --- a/core/l10n/pa.json +++ b/core/l10n/pa.json @@ -32,8 +32,8 @@ "Warning" : "ਚੇਤਾਵਨੀ", "Delete" : "ਹਟਾਓ", "_download %n file_::_download %n files_" : ["",""], - "Username" : "ਯੂਜ਼ਰ-ਨਾਂ", "Security Warning" : "ਸੁਰੱਖਿਆ ਚੇਤਾਵਨੀ", + "Username" : "ਯੂਜ਼ਰ-ਨਾਂ", "Password" : "ਪਾਸਵਰ" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/core/l10n/pl.js b/core/l10n/pl.js index 57b18d457c3..35d7faeabf4 100644 --- a/core/l10n/pl.js +++ b/core/l10n/pl.js @@ -39,7 +39,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Link do zresetowanego hasła, został wysłany na twój adres e-mail. Jeśli nie dostałeś wiadomości w rozsądnym czasie, sprawdź folder ze spamem.<br> Jeśli nie ma wiadomości w tym folderze, skontaktuj się ze swoim administratorem.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Twoje pliki są zaszyfrowane. Jeśli nie włączyłeś klucza odzyskiwania, nie będzie możliwości odszyfrowania tych plików po zresetowaniu hasła.<br>Jeśli nie jesteś pewien co zrobić, skontaktuj się ze swoim administratorem, zanim bedziesz kontynuował. <br/> Czy chcesz kontynuować?\n ", "I know what I'm doing" : "Wiem co robię", - "Reset password" : "Zresetuj hasło", "Password can not be changed. Please contact your administrator." : "Hasło nie może zostać zmienione. Skontaktuj się z administratorem.", "No" : "Nie", "Yes" : "Tak", @@ -119,13 +118,9 @@ OC.L10N.register( "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Nie mogę wysłać maila resetującego. Sprawdź czy nazwa użytkownika lub adres email jest poprawny. Skontaktuj się z administratorem.", "%s password reset" : "%s reset hasła", "Use the following link to reset your password: {link}" : "Użyj tego odnośnika by zresetować hasło: {link}", - "You will receive a link to reset your password via Email." : "Odnośnik służący do resetowania hasła zostanie wysłany na adres e-mail.", - "Username" : "Nazwa użytkownika", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Pliki są szyfrowane. Jeśli nie włączono klucza odzyskiwania, nie będzie możliwe odzyskać dane z powrotem po zresetowaniu hasła. Jeśli nie masz pewności, co zrobić, prosimy o kontakt z administratorem, przed kontynuowaniem. Czy chcesz kontynuować?", - "Yes, I really want to reset my password now" : "Tak, naprawdę chcę zresetować hasło teraz", - "Reset" : "Resetuj", "New password" : "Nowe hasło", "New Password" : "Nowe hasło", + "Reset password" : "Zresetuj hasło", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X nie jest wspierany i %s nie będzie działać poprawnie na tej platformie. Używasz na własne ryzyko!", "For the best results, please consider using a GNU/Linux server instead." : "Aby uzyskać najlepsze rezultaty, rozważ w to miejsce użycie serwera GNU/Linux.", "Personal" : "Osobiste", @@ -164,6 +159,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Twój katalog danych i pliki są prawdopodobnie dostępne z poziomu internetu, ponieważ plik .htaccess nie działa.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Aby uzyskać informacje jak poprawnie skonfigurować swój serwer, zapoznaj się z <a href=\"%s\" target=\"_blank\">dokumentacją</a>.", "Create an <strong>admin account</strong>" : "Utwórz <strong>konta administratora</strong>", + "Username" : "Nazwa użytkownika", "Password" : "Hasło", "Storage & database" : "Zasoby dysku & baza danych", "Data folder" : "Katalog danych", diff --git a/core/l10n/pl.json b/core/l10n/pl.json index f6c0615fc4e..7ee07cc66af 100644 --- a/core/l10n/pl.json +++ b/core/l10n/pl.json @@ -37,7 +37,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Link do zresetowanego hasła, został wysłany na twój adres e-mail. Jeśli nie dostałeś wiadomości w rozsądnym czasie, sprawdź folder ze spamem.<br> Jeśli nie ma wiadomości w tym folderze, skontaktuj się ze swoim administratorem.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Twoje pliki są zaszyfrowane. Jeśli nie włączyłeś klucza odzyskiwania, nie będzie możliwości odszyfrowania tych plików po zresetowaniu hasła.<br>Jeśli nie jesteś pewien co zrobić, skontaktuj się ze swoim administratorem, zanim bedziesz kontynuował. <br/> Czy chcesz kontynuować?\n ", "I know what I'm doing" : "Wiem co robię", - "Reset password" : "Zresetuj hasło", "Password can not be changed. Please contact your administrator." : "Hasło nie może zostać zmienione. Skontaktuj się z administratorem.", "No" : "Nie", "Yes" : "Tak", @@ -117,13 +116,9 @@ "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Nie mogę wysłać maila resetującego. Sprawdź czy nazwa użytkownika lub adres email jest poprawny. Skontaktuj się z administratorem.", "%s password reset" : "%s reset hasła", "Use the following link to reset your password: {link}" : "Użyj tego odnośnika by zresetować hasło: {link}", - "You will receive a link to reset your password via Email." : "Odnośnik służący do resetowania hasła zostanie wysłany na adres e-mail.", - "Username" : "Nazwa użytkownika", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Pliki są szyfrowane. Jeśli nie włączono klucza odzyskiwania, nie będzie możliwe odzyskać dane z powrotem po zresetowaniu hasła. Jeśli nie masz pewności, co zrobić, prosimy o kontakt z administratorem, przed kontynuowaniem. Czy chcesz kontynuować?", - "Yes, I really want to reset my password now" : "Tak, naprawdę chcę zresetować hasło teraz", - "Reset" : "Resetuj", "New password" : "Nowe hasło", "New Password" : "Nowe hasło", + "Reset password" : "Zresetuj hasło", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X nie jest wspierany i %s nie będzie działać poprawnie na tej platformie. Używasz na własne ryzyko!", "For the best results, please consider using a GNU/Linux server instead." : "Aby uzyskać najlepsze rezultaty, rozważ w to miejsce użycie serwera GNU/Linux.", "Personal" : "Osobiste", @@ -162,6 +157,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Twój katalog danych i pliki są prawdopodobnie dostępne z poziomu internetu, ponieważ plik .htaccess nie działa.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Aby uzyskać informacje jak poprawnie skonfigurować swój serwer, zapoznaj się z <a href=\"%s\" target=\"_blank\">dokumentacją</a>.", "Create an <strong>admin account</strong>" : "Utwórz <strong>konta administratora</strong>", + "Username" : "Nazwa użytkownika", "Password" : "Hasło", "Storage & database" : "Zasoby dysku & baza danych", "Data folder" : "Katalog danych", diff --git a/core/l10n/pt_BR.js b/core/l10n/pt_BR.js index 041159ce172..e8f95ffb885 100644 --- a/core/l10n/pt_BR.js +++ b/core/l10n/pt_BR.js @@ -39,7 +39,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "O link para redefinir sua senha foi enviada para o seu e-mail. Se você não recebê-lo dentro de um período razoável de tempo, verifique suas pastas de spam/lixo. <br> Se ele não estiver lá, pergunte ao administrador do local.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Seus arquivos são criptografados. Se você não ativou a chave de recuperação, não haverá maneira de obter seus dados de volta após a sua senha ser redefinida. <br/> Se você não tem certeza do que fazer, por favor, contate o administrador antes de continuar. <br/> Você realmente deseja continuar?", "I know what I'm doing" : "Eu sei o que estou fazendo", - "Reset password" : "Redefinir senha", "Password can not be changed. Please contact your administrator." : "A senha não pode ser alterada. Por favor, contate o administrador.", "No" : "Não", "Yes" : "Sim", @@ -114,7 +113,7 @@ OC.L10N.register( "Hello world!" : "Alô mundo!", "sunny" : "ensolarado", "Hello {name}, the weather is {weather}" : "Olá {name}, o clima está {weather}", - "_download %n file_::_download %n files_" : ["",""], + "_download %n file_::_download %n files_" : ["baixar %n arquivo","baixar %n arquivos"], "Updating {productName} to version {version}, this may take a while." : "Atualizando {productName} para a versão {version}, isso pode demorar um pouco.", "Please reload the page." : "Por favor recarregue a página", "The update was unsuccessful." : "A atualização não foi bem sucedida.", @@ -124,13 +123,9 @@ OC.L10N.register( "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Não foi possível enviar e-mail de redefinição, porque não há nenhum endereço de e-mail para este nome de usuário. Por favor, contate o administrador.", "%s password reset" : "%s redefinir senha", "Use the following link to reset your password: {link}" : "Use o seguinte link para redefinir sua senha: {link}", - "You will receive a link to reset your password via Email." : "Você receberá um link para redefinir sua senha por e-mail.", - "Username" : "Nome de usuário", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Seus arquivos estão encriptados. Se você não habilitou a chave de recuperação, não haverá maneira de recuperar seus dados após criar uma nova senha. Se você não tem certeza do que fazer, por favor entre em contato com o administrador antes de continuar. Tem certeza que realmente quer continuar?", - "Yes, I really want to reset my password now" : "Sim, realmente quero criar uma nova senha.", - "Reset" : "Resetar", "New password" : "Nova senha", "New Password" : "Nova Senha", + "Reset password" : "Redefinir senha", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X não é suportado e %s não funcionará corretamente nesta plataforma. Use-o por sua conta e risco!", "For the best results, please consider using a GNU/Linux server instead." : "Para obter os melhores resultados, por favor, considere o uso de um servidor GNU/Linux em seu lugar.", "Personal" : "Pessoal", @@ -170,6 +165,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Seu diretório de dados e arquivos são provavelmente acessíveis pela internet, porque o .htaccess não funciona.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Para obter informações sobre como configurar corretamente o seu servidor, consulte a <a href=\"%s\" target=\"_blank\">documentação</a>.", "Create an <strong>admin account</strong>" : "Criar uma <strong>conta de administrador</strong>", + "Username" : "Nome de usuário", "Password" : "Senha", "Storage & database" : "Armazenamento & banco de dados", "Data folder" : "Pasta de dados", diff --git a/core/l10n/pt_BR.json b/core/l10n/pt_BR.json index 05be1f4cb1c..d3082d8c06d 100644 --- a/core/l10n/pt_BR.json +++ b/core/l10n/pt_BR.json @@ -37,7 +37,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "O link para redefinir sua senha foi enviada para o seu e-mail. Se você não recebê-lo dentro de um período razoável de tempo, verifique suas pastas de spam/lixo. <br> Se ele não estiver lá, pergunte ao administrador do local.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Seus arquivos são criptografados. Se você não ativou a chave de recuperação, não haverá maneira de obter seus dados de volta após a sua senha ser redefinida. <br/> Se você não tem certeza do que fazer, por favor, contate o administrador antes de continuar. <br/> Você realmente deseja continuar?", "I know what I'm doing" : "Eu sei o que estou fazendo", - "Reset password" : "Redefinir senha", "Password can not be changed. Please contact your administrator." : "A senha não pode ser alterada. Por favor, contate o administrador.", "No" : "Não", "Yes" : "Sim", @@ -112,7 +111,7 @@ "Hello world!" : "Alô mundo!", "sunny" : "ensolarado", "Hello {name}, the weather is {weather}" : "Olá {name}, o clima está {weather}", - "_download %n file_::_download %n files_" : ["",""], + "_download %n file_::_download %n files_" : ["baixar %n arquivo","baixar %n arquivos"], "Updating {productName} to version {version}, this may take a while." : "Atualizando {productName} para a versão {version}, isso pode demorar um pouco.", "Please reload the page." : "Por favor recarregue a página", "The update was unsuccessful." : "A atualização não foi bem sucedida.", @@ -122,13 +121,9 @@ "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Não foi possível enviar e-mail de redefinição, porque não há nenhum endereço de e-mail para este nome de usuário. Por favor, contate o administrador.", "%s password reset" : "%s redefinir senha", "Use the following link to reset your password: {link}" : "Use o seguinte link para redefinir sua senha: {link}", - "You will receive a link to reset your password via Email." : "Você receberá um link para redefinir sua senha por e-mail.", - "Username" : "Nome de usuário", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Seus arquivos estão encriptados. Se você não habilitou a chave de recuperação, não haverá maneira de recuperar seus dados após criar uma nova senha. Se você não tem certeza do que fazer, por favor entre em contato com o administrador antes de continuar. Tem certeza que realmente quer continuar?", - "Yes, I really want to reset my password now" : "Sim, realmente quero criar uma nova senha.", - "Reset" : "Resetar", "New password" : "Nova senha", "New Password" : "Nova Senha", + "Reset password" : "Redefinir senha", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X não é suportado e %s não funcionará corretamente nesta plataforma. Use-o por sua conta e risco!", "For the best results, please consider using a GNU/Linux server instead." : "Para obter os melhores resultados, por favor, considere o uso de um servidor GNU/Linux em seu lugar.", "Personal" : "Pessoal", @@ -168,6 +163,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Seu diretório de dados e arquivos são provavelmente acessíveis pela internet, porque o .htaccess não funciona.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Para obter informações sobre como configurar corretamente o seu servidor, consulte a <a href=\"%s\" target=\"_blank\">documentação</a>.", "Create an <strong>admin account</strong>" : "Criar uma <strong>conta de administrador</strong>", + "Username" : "Nome de usuário", "Password" : "Senha", "Storage & database" : "Armazenamento & banco de dados", "Data folder" : "Pasta de dados", diff --git a/core/l10n/pt_PT.js b/core/l10n/pt_PT.js index bc84fc7bbd9..09e688a0eb8 100644 --- a/core/l10n/pt_PT.js +++ b/core/l10n/pt_PT.js @@ -1,19 +1,19 @@ OC.L10N.register( "core", { - "Couldn't send mail to following users: %s " : "Não conseguiu enviar correio aos seguintes utilizadores: %s", - "Turned on maintenance mode" : "Activado o modo de manutenção", - "Turned off maintenance mode" : "Desactivado o modo de manutenção", - "Updated database" : "Base de dados actualizada", + "Couldn't send mail to following users: %s " : "Não foi possível enviar a mensagem para os seguintes utilizadores: %s", + "Turned on maintenance mode" : "Ativado o modo de manutenção", + "Turned off maintenance mode" : "Desativado o modo de manutenção", + "Updated database" : "Base de dados atualizada", "Checked database schema update" : "Atualização do esquema da base de dados verificada.", "Checked database schema update for apps" : "Atualização do esquema da base de dados verificada.", - "Updated \"%s\" to %s" : "Actualizado \"%s\" para %s", + "Updated \"%s\" to %s" : "Atualizado \"%s\" para %s", "Disabled incompatible apps: %s" : "Apps incompatíveis desativadas: %s", - "No image or file provided" : "Não foi selecionado nenhum ficheiro para importar", - "Unknown filetype" : "Ficheiro desconhecido", + "No image or file provided" : "Não foi fornecido nenhum ficheiro ou imagem", + "Unknown filetype" : "Tipo de ficheiro desconhecido", "Invalid image" : "Imagem inválida", - "No temporary profile picture available, try again" : "Foto temporária de perfil indisponível, tente novamente", - "No crop data provided" : "Sem dados de corte fornecidos", + "No temporary profile picture available, try again" : "Fotografia temporária do perfil indisponível, tente novamente", + "No crop data provided" : "Não foram fornecidos dados de recorte", "Sunday" : "Domingo", "Monday" : "Segunda", "Tuesday" : "Terça", @@ -33,36 +33,35 @@ OC.L10N.register( "October" : "Outubro", "November" : "Novembro", "December" : "Dezembro", - "Settings" : "Configurações", - "Saving..." : "A guardar...", - "Couldn't send reset email. Please contact your administrator." : "Ocorreu um problema com o envio do e-mail, por favor contactar o administrador.", + "Settings" : "Definições", + "Saving..." : "A guardar ...", + "Couldn't send reset email. Please contact your administrator." : "Não foi possível enviar o e-mail de reposição. Por favor, contacte o administrador.", "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "O link para fazer reset à sua password foi enviado para o seu e-mail. <br> Se não o recebeu dentro um espaço de tempo aceitável, por favor verifique a sua pasta de SPAM.<br> Se não o encontrar, por favor contacte o seu administrador.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Os seus ficheiros estão encriptados. Se não activou a chave de recuperação, não vai ser possível recuperar os seus dados no caso da sua password ser reinicializada. Se não tem a certeza do que precisa de fazer, por favor contacte o seu administrador antes de continuar. Tem a certeza que quer continuar?", - "I know what I'm doing" : "Tenho a certeza", - "Reset password" : "Repor password", - "Password can not be changed. Please contact your administrator." : "A password não pode ser alterada. Contacte o seu administrador.", + "I know what I'm doing" : "Eu sei o que eu estou a fazer", + "Password can not be changed. Please contact your administrator." : "A palavra-passe não pode ser alterada. Por favor, contacte o seu administrador.", "No" : "Não", "Yes" : "Sim", - "Choose" : "Escolha", - "Error loading file picker template: {error}" : "Erro ao carregar o modelo de selecionador de ficheiro: {error}", + "Choose" : "Escolher", + "Error loading file picker template: {error}" : "Ocorreu um erro ao carregar o modelo do selecionador de ficheiro: {error}", "Ok" : "Ok", - "Error loading message template: {error}" : "Erro ao carregar o template: {error}", + "Error loading message template: {error}" : "Ocorreu um erro ao carregar o modelo: {error}", "_{count} file conflict_::_{count} file conflicts_" : ["{count} conflicto de ficheiro","{count} conflitos de ficheiro"], "One file conflict" : "Um conflito no ficheiro", "New Files" : "Ficheiros Novos", - "Already existing files" : "Ficheiro já existente", + "Already existing files" : "Ficheiros já existentes", "Which files do you want to keep?" : "Quais os ficheiros que pretende manter?", "If you select both versions, the copied file will have a number added to its name." : "Se escolher ambas as versões, o ficheiro copiado irá ter um número adicionado ao seu nome.", "Cancel" : "Cancelar", "Continue" : "Continuar", "(all selected)" : "(todos seleccionados)", "({count} selected)" : "({count} seleccionados)", - "Error loading file exists template" : "Erro ao carregar o modelo de existências do ficheiro", - "Very weak password" : "Password muito fraca", - "Weak password" : "Password fraca", - "So-so password" : "Password aceitável", - "Good password" : "Password Forte", - "Strong password" : "Password muito forte", + "Error loading file exists template" : "Ocorreu um erro ao carregar o ficheiro do modelo existente", + "Very weak password" : "Palavra-passe muito fraca", + "Weak password" : "Palavra-passe fraca", + "So-so password" : "Palavra-passe aceitável", + "Good password" : "Palavra-passe boa", + "Strong password" : "Palavra-passe forte", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." : "O seu servidor web não está configurado correctamente para autorizar sincronização de ficheiros, pois o interface WebDAV parece estar com problemas.", "This server has no working internet connection. This means that some of the features like mounting of external storage, notifications about updates or installation of 3rd party apps don´t work. Accessing files from remote and sending of notification emails might also not work. We suggest to enable internet connection for this server if you want to have all features." : "Este servidor ownCloud não tem uma ligação de internet a funcionar. Isto significa que algumas funcionalidades como o acesso a locais externos (dropbox, gdrive, etc), notificações sobre actualizções, ou a instalação de aplicações não irá funcionar. Sugerimos que active uma ligação à internet se pretender obter todas as funcionalidades do ownCloud.", "Error occurred while checking server setup" : "Ocorreu um erro durante a verificação da configuração do servidor", @@ -76,28 +75,28 @@ OC.L10N.register( "Shared with you and the group {group} by {owner}" : "Partilhado consigo e com o grupo {group} por {owner}", "Shared with you by {owner}" : "Partilhado consigo por {owner}", "Share with user or group …" : "Partilhar com utilizador ou grupo...", - "Share link" : "Partilhar o link", + "Share link" : "Compartilhar hiperligação", "The public link will expire no later than {days} days after it is created" : "O link público expira, o mais tardar {days} dias após sua criação", - "Password protect" : "Proteger com palavra-passe", - "Choose a password for the public link" : "Defina a palavra-passe para o link público", + "Password protect" : "Proteger com Palavra-passe", + "Choose a password for the public link" : "Defina a palavra-passe para a hiperligação pública", "Allow Public Upload" : "Permitir Envios Públicos", "Email link to person" : "Enviar o link por e-mail", "Send" : "Enviar", "Set expiration date" : "Especificar data de expiração", "Expiration date" : "Data de expiração", - "Adding user..." : "A adicionar utilizador...", + "Adding user..." : "A adicionar o utilizador ...", "group" : "grupo", "Resharing is not allowed" : "Não é permitido partilhar de novo", "Shared in {item} with {user}" : "Partilhado em {item} com {user}", - "Unshare" : "Deixar de partilhar", - "notify by email" : "Notificar por email", + "Unshare" : "Cancelar partilha", + "notify by email" : "Notificar por correio eletrónico", "can share" : "pode partilhar", "can edit" : "pode editar", - "access control" : "Controlo de acesso", + "access control" : "controlo de acesso", "create" : "criar", - "update" : "actualizar", + "update" : "atualizar", "delete" : "apagar", - "Password protected" : "Protegido com palavra-passe", + "Password protected" : "Protegido com Palavra-passe", "Error unsetting expiration date" : "Erro ao retirar a data de expiração", "Error setting expiration date" : "Erro ao aplicar a data de expiração", "Sending ..." : "A Enviar...", @@ -112,25 +111,21 @@ OC.L10N.register( "No tags selected for deletion." : "Não foram escolhidas etiquetas para apagar.", "unknown text" : "texto desconhecido", "Hello world!" : "Olá mundo!", - "sunny" : "solarengo", + "sunny" : "soalheiro", "Hello {name}, the weather is {weather}" : "Olá {name}, o tempo está {weather}", - "_download %n file_::_download %n files_" : ["download %n ficheiro","download %n ficheiros"], + "_download %n file_::_download %n files_" : ["transferir %n ficheiro","transferir %n ficheiros"], "Updating {productName} to version {version}, this may take a while." : "A atualizar {productName} para a versão {version}, isto poderá demorar algum tempo.", "Please reload the page." : "Por favor recarregue a página.", "The update was unsuccessful." : "Não foi possível atualizar.", "The update was successful. Redirecting you to ownCloud now." : "A actualização foi concluída com sucesso. Vai ser redireccionado para o ownCloud agora.", - "Couldn't reset password because the token is invalid" : "É impossível efetuar reset à password. ", + "Couldn't reset password because the token is invalid" : "Não foi possível repor a palavra-passe porque a senha é inválida", "Couldn't send reset email. Please make sure your username is correct." : "Ocorreu um problema com o envio do e-mail, por favor confirme o seu utilizador.", "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Ocorreu um problema com o envio do e-mail, por favor contacte o administrador.", - "%s password reset" : "%s reposição da password", - "Use the following link to reset your password: {link}" : "Use o seguinte endereço para repor a sua password: {link}", - "You will receive a link to reset your password via Email." : "Vai receber um endereço para repor a sua password", - "Username" : "Nome de utilizador", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Os seus ficheiros estão encriptados. Se não activou a chave de recuperação, não vai ser possível recuperar os seus dados no caso da sua password ser reinicializada. Se não tem a certeza do que precisa de fazer, por favor contacte o seu administrador antes de continuar. Tem a certeza que quer continuar?", - "Yes, I really want to reset my password now" : "Sim, tenho a certeza que pretendo redefinir a minha palavra-passe agora.", - "Reset" : "Repor", + "%s password reset" : "%s reposição da palavra-passe", + "Use the following link to reset your password: {link}" : "Utilize a seguinte hiperligação para repor a sua palavra-passe: {link}", "New password" : "Nova palavra-chave", - "New Password" : "Nova password", + "New Password" : "Nova palavra-passe", + "Reset password" : "Repor palavra-passe", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Esta plataforma não suporta o sistema operativo Mac OS X e o %s poderá não funcionar correctamente. Utilize por sua conta e risco.", "For the best results, please consider using a GNU/Linux server instead." : "Para um melhor resultado, utilize antes o servidor GNU/Linux.", "Personal" : "Pessoal", @@ -170,13 +165,14 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "A pasta de dados do ownCloud e os respectivos ficheiros, estarão provavelmente acessíveis a partir da internet, pois o ficheiros .htaccess não funciona.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Para obter informações de como configurar correctamente o servidor, veja em: <a href=\"%s\" target=\"_blank\">documentação</a>.", "Create an <strong>admin account</strong>" : "Criar uma <strong>conta administrativa</strong>", - "Password" : "Password", + "Username" : "Nome de utilizador", + "Password" : "Palavra-passe", "Storage & database" : "Armazenamento e base de dados", "Data folder" : "Pasta de dados", "Configure the database" : "Configure a base de dados", "Only %s is available." : "Apenas %s está disponível.", "Database user" : "Utilizador da base de dados", - "Database password" : "Password da base de dados", + "Database password" : "Palavra-passe da base de dados", "Database name" : "Nome da base de dados", "Database tablespace" : "Tablespace da base de dados", "Database host" : "Anfitrião da base de dados", @@ -188,7 +184,7 @@ OC.L10N.register( "Log out" : "Sair", "Server side authentication failed!" : "Autenticação do lado do servidor falhou!", "Please contact your administrator." : "Por favor contacte o administrador.", - "Forgot your password? Reset it!" : "Esqueceu-se da password? Recupere-a!", + "Forgot your password? Reset it!" : "Esqueceu-se da sua palavra-passe? Recupere-a!", "remember" : "lembrar", "Log in" : "Entrar", "Alternative Logins" : "Contas de acesso alternativas", diff --git a/core/l10n/pt_PT.json b/core/l10n/pt_PT.json index f61e3c076d0..8789b6e13d8 100644 --- a/core/l10n/pt_PT.json +++ b/core/l10n/pt_PT.json @@ -1,17 +1,17 @@ { "translations": { - "Couldn't send mail to following users: %s " : "Não conseguiu enviar correio aos seguintes utilizadores: %s", - "Turned on maintenance mode" : "Activado o modo de manutenção", - "Turned off maintenance mode" : "Desactivado o modo de manutenção", - "Updated database" : "Base de dados actualizada", + "Couldn't send mail to following users: %s " : "Não foi possível enviar a mensagem para os seguintes utilizadores: %s", + "Turned on maintenance mode" : "Ativado o modo de manutenção", + "Turned off maintenance mode" : "Desativado o modo de manutenção", + "Updated database" : "Base de dados atualizada", "Checked database schema update" : "Atualização do esquema da base de dados verificada.", "Checked database schema update for apps" : "Atualização do esquema da base de dados verificada.", - "Updated \"%s\" to %s" : "Actualizado \"%s\" para %s", + "Updated \"%s\" to %s" : "Atualizado \"%s\" para %s", "Disabled incompatible apps: %s" : "Apps incompatíveis desativadas: %s", - "No image or file provided" : "Não foi selecionado nenhum ficheiro para importar", - "Unknown filetype" : "Ficheiro desconhecido", + "No image or file provided" : "Não foi fornecido nenhum ficheiro ou imagem", + "Unknown filetype" : "Tipo de ficheiro desconhecido", "Invalid image" : "Imagem inválida", - "No temporary profile picture available, try again" : "Foto temporária de perfil indisponível, tente novamente", - "No crop data provided" : "Sem dados de corte fornecidos", + "No temporary profile picture available, try again" : "Fotografia temporária do perfil indisponível, tente novamente", + "No crop data provided" : "Não foram fornecidos dados de recorte", "Sunday" : "Domingo", "Monday" : "Segunda", "Tuesday" : "Terça", @@ -31,36 +31,35 @@ "October" : "Outubro", "November" : "Novembro", "December" : "Dezembro", - "Settings" : "Configurações", - "Saving..." : "A guardar...", - "Couldn't send reset email. Please contact your administrator." : "Ocorreu um problema com o envio do e-mail, por favor contactar o administrador.", + "Settings" : "Definições", + "Saving..." : "A guardar ...", + "Couldn't send reset email. Please contact your administrator." : "Não foi possível enviar o e-mail de reposição. Por favor, contacte o administrador.", "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "O link para fazer reset à sua password foi enviado para o seu e-mail. <br> Se não o recebeu dentro um espaço de tempo aceitável, por favor verifique a sua pasta de SPAM.<br> Se não o encontrar, por favor contacte o seu administrador.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Os seus ficheiros estão encriptados. Se não activou a chave de recuperação, não vai ser possível recuperar os seus dados no caso da sua password ser reinicializada. Se não tem a certeza do que precisa de fazer, por favor contacte o seu administrador antes de continuar. Tem a certeza que quer continuar?", - "I know what I'm doing" : "Tenho a certeza", - "Reset password" : "Repor password", - "Password can not be changed. Please contact your administrator." : "A password não pode ser alterada. Contacte o seu administrador.", + "I know what I'm doing" : "Eu sei o que eu estou a fazer", + "Password can not be changed. Please contact your administrator." : "A palavra-passe não pode ser alterada. Por favor, contacte o seu administrador.", "No" : "Não", "Yes" : "Sim", - "Choose" : "Escolha", - "Error loading file picker template: {error}" : "Erro ao carregar o modelo de selecionador de ficheiro: {error}", + "Choose" : "Escolher", + "Error loading file picker template: {error}" : "Ocorreu um erro ao carregar o modelo do selecionador de ficheiro: {error}", "Ok" : "Ok", - "Error loading message template: {error}" : "Erro ao carregar o template: {error}", + "Error loading message template: {error}" : "Ocorreu um erro ao carregar o modelo: {error}", "_{count} file conflict_::_{count} file conflicts_" : ["{count} conflicto de ficheiro","{count} conflitos de ficheiro"], "One file conflict" : "Um conflito no ficheiro", "New Files" : "Ficheiros Novos", - "Already existing files" : "Ficheiro já existente", + "Already existing files" : "Ficheiros já existentes", "Which files do you want to keep?" : "Quais os ficheiros que pretende manter?", "If you select both versions, the copied file will have a number added to its name." : "Se escolher ambas as versões, o ficheiro copiado irá ter um número adicionado ao seu nome.", "Cancel" : "Cancelar", "Continue" : "Continuar", "(all selected)" : "(todos seleccionados)", "({count} selected)" : "({count} seleccionados)", - "Error loading file exists template" : "Erro ao carregar o modelo de existências do ficheiro", - "Very weak password" : "Password muito fraca", - "Weak password" : "Password fraca", - "So-so password" : "Password aceitável", - "Good password" : "Password Forte", - "Strong password" : "Password muito forte", + "Error loading file exists template" : "Ocorreu um erro ao carregar o ficheiro do modelo existente", + "Very weak password" : "Palavra-passe muito fraca", + "Weak password" : "Palavra-passe fraca", + "So-so password" : "Palavra-passe aceitável", + "Good password" : "Palavra-passe boa", + "Strong password" : "Palavra-passe forte", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." : "O seu servidor web não está configurado correctamente para autorizar sincronização de ficheiros, pois o interface WebDAV parece estar com problemas.", "This server has no working internet connection. This means that some of the features like mounting of external storage, notifications about updates or installation of 3rd party apps don´t work. Accessing files from remote and sending of notification emails might also not work. We suggest to enable internet connection for this server if you want to have all features." : "Este servidor ownCloud não tem uma ligação de internet a funcionar. Isto significa que algumas funcionalidades como o acesso a locais externos (dropbox, gdrive, etc), notificações sobre actualizções, ou a instalação de aplicações não irá funcionar. Sugerimos que active uma ligação à internet se pretender obter todas as funcionalidades do ownCloud.", "Error occurred while checking server setup" : "Ocorreu um erro durante a verificação da configuração do servidor", @@ -74,28 +73,28 @@ "Shared with you and the group {group} by {owner}" : "Partilhado consigo e com o grupo {group} por {owner}", "Shared with you by {owner}" : "Partilhado consigo por {owner}", "Share with user or group …" : "Partilhar com utilizador ou grupo...", - "Share link" : "Partilhar o link", + "Share link" : "Compartilhar hiperligação", "The public link will expire no later than {days} days after it is created" : "O link público expira, o mais tardar {days} dias após sua criação", - "Password protect" : "Proteger com palavra-passe", - "Choose a password for the public link" : "Defina a palavra-passe para o link público", + "Password protect" : "Proteger com Palavra-passe", + "Choose a password for the public link" : "Defina a palavra-passe para a hiperligação pública", "Allow Public Upload" : "Permitir Envios Públicos", "Email link to person" : "Enviar o link por e-mail", "Send" : "Enviar", "Set expiration date" : "Especificar data de expiração", "Expiration date" : "Data de expiração", - "Adding user..." : "A adicionar utilizador...", + "Adding user..." : "A adicionar o utilizador ...", "group" : "grupo", "Resharing is not allowed" : "Não é permitido partilhar de novo", "Shared in {item} with {user}" : "Partilhado em {item} com {user}", - "Unshare" : "Deixar de partilhar", - "notify by email" : "Notificar por email", + "Unshare" : "Cancelar partilha", + "notify by email" : "Notificar por correio eletrónico", "can share" : "pode partilhar", "can edit" : "pode editar", - "access control" : "Controlo de acesso", + "access control" : "controlo de acesso", "create" : "criar", - "update" : "actualizar", + "update" : "atualizar", "delete" : "apagar", - "Password protected" : "Protegido com palavra-passe", + "Password protected" : "Protegido com Palavra-passe", "Error unsetting expiration date" : "Erro ao retirar a data de expiração", "Error setting expiration date" : "Erro ao aplicar a data de expiração", "Sending ..." : "A Enviar...", @@ -110,25 +109,21 @@ "No tags selected for deletion." : "Não foram escolhidas etiquetas para apagar.", "unknown text" : "texto desconhecido", "Hello world!" : "Olá mundo!", - "sunny" : "solarengo", + "sunny" : "soalheiro", "Hello {name}, the weather is {weather}" : "Olá {name}, o tempo está {weather}", - "_download %n file_::_download %n files_" : ["download %n ficheiro","download %n ficheiros"], + "_download %n file_::_download %n files_" : ["transferir %n ficheiro","transferir %n ficheiros"], "Updating {productName} to version {version}, this may take a while." : "A atualizar {productName} para a versão {version}, isto poderá demorar algum tempo.", "Please reload the page." : "Por favor recarregue a página.", "The update was unsuccessful." : "Não foi possível atualizar.", "The update was successful. Redirecting you to ownCloud now." : "A actualização foi concluída com sucesso. Vai ser redireccionado para o ownCloud agora.", - "Couldn't reset password because the token is invalid" : "É impossível efetuar reset à password. ", + "Couldn't reset password because the token is invalid" : "Não foi possível repor a palavra-passe porque a senha é inválida", "Couldn't send reset email. Please make sure your username is correct." : "Ocorreu um problema com o envio do e-mail, por favor confirme o seu utilizador.", "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Ocorreu um problema com o envio do e-mail, por favor contacte o administrador.", - "%s password reset" : "%s reposição da password", - "Use the following link to reset your password: {link}" : "Use o seguinte endereço para repor a sua password: {link}", - "You will receive a link to reset your password via Email." : "Vai receber um endereço para repor a sua password", - "Username" : "Nome de utilizador", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Os seus ficheiros estão encriptados. Se não activou a chave de recuperação, não vai ser possível recuperar os seus dados no caso da sua password ser reinicializada. Se não tem a certeza do que precisa de fazer, por favor contacte o seu administrador antes de continuar. Tem a certeza que quer continuar?", - "Yes, I really want to reset my password now" : "Sim, tenho a certeza que pretendo redefinir a minha palavra-passe agora.", - "Reset" : "Repor", + "%s password reset" : "%s reposição da palavra-passe", + "Use the following link to reset your password: {link}" : "Utilize a seguinte hiperligação para repor a sua palavra-passe: {link}", "New password" : "Nova palavra-chave", - "New Password" : "Nova password", + "New Password" : "Nova palavra-passe", + "Reset password" : "Repor palavra-passe", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Esta plataforma não suporta o sistema operativo Mac OS X e o %s poderá não funcionar correctamente. Utilize por sua conta e risco.", "For the best results, please consider using a GNU/Linux server instead." : "Para um melhor resultado, utilize antes o servidor GNU/Linux.", "Personal" : "Pessoal", @@ -168,13 +163,14 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "A pasta de dados do ownCloud e os respectivos ficheiros, estarão provavelmente acessíveis a partir da internet, pois o ficheiros .htaccess não funciona.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Para obter informações de como configurar correctamente o servidor, veja em: <a href=\"%s\" target=\"_blank\">documentação</a>.", "Create an <strong>admin account</strong>" : "Criar uma <strong>conta administrativa</strong>", - "Password" : "Password", + "Username" : "Nome de utilizador", + "Password" : "Palavra-passe", "Storage & database" : "Armazenamento e base de dados", "Data folder" : "Pasta de dados", "Configure the database" : "Configure a base de dados", "Only %s is available." : "Apenas %s está disponível.", "Database user" : "Utilizador da base de dados", - "Database password" : "Password da base de dados", + "Database password" : "Palavra-passe da base de dados", "Database name" : "Nome da base de dados", "Database tablespace" : "Tablespace da base de dados", "Database host" : "Anfitrião da base de dados", @@ -186,7 +182,7 @@ "Log out" : "Sair", "Server side authentication failed!" : "Autenticação do lado do servidor falhou!", "Please contact your administrator." : "Por favor contacte o administrador.", - "Forgot your password? Reset it!" : "Esqueceu-se da password? Recupere-a!", + "Forgot your password? Reset it!" : "Esqueceu-se da sua palavra-passe? Recupere-a!", "remember" : "lembrar", "Log in" : "Entrar", "Alternative Logins" : "Contas de acesso alternativas", diff --git a/core/l10n/ro.js b/core/l10n/ro.js index 8c48c440460..7970ecf18ae 100644 --- a/core/l10n/ro.js +++ b/core/l10n/ro.js @@ -31,7 +31,6 @@ OC.L10N.register( "Settings" : "Setări", "Saving..." : "Se salvează...", "I know what I'm doing" : "Eu știu ce fac", - "Reset password" : "Resetează parola", "Password can not be changed. Please contact your administrator." : "Parola nu poate fi modificata. Vă rugăm să contactați administratorul dvs.", "No" : "Nu", "Yes" : "Da", @@ -94,13 +93,9 @@ OC.L10N.register( "The update was successful. Redirecting you to ownCloud now." : "Actualizare reușită. Ești redirecționat către ownCloud.", "%s password reset" : "%s resetare parola", "Use the following link to reset your password: {link}" : "Folosește următorul link pentru a reseta parola: {link}", - "You will receive a link to reset your password via Email." : "Vei primi un mesaj prin care vei putea reseta parola via email.", - "Username" : "Nume utilizator", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Fișierele tale sunt criptate. Dacă nu ai activat o cheie de recuperare, nu va mai exista nici o metodă prin care să îți recuperezi datele după resetarea parole. Dacă nu ești sigur în privința la ce ai de făcut, contactează un administrator înainte să continuii. Chiar vrei să continui?", - "Yes, I really want to reset my password now" : "Da, eu chiar doresc să îmi resetez parola acum", - "Reset" : "Resetare", "New password" : "Noua parolă", "New Password" : "Noua parolă", + "Reset password" : "Resetează parola", "Personal" : "Personal", "Users" : "Utilizatori", "Apps" : "Aplicații", @@ -114,6 +109,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Directorul tău de date și fișiere sunt probabil accesibile de pe Internet, deoarece fișierul .htaccess nu funcționează.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Pentru informații despre cum să configurezi serverul, vezi <a href=\"%s\" target=\"_blank\">documentația</a>.", "Create an <strong>admin account</strong>" : "Crează un <strong>cont de administrator</strong>", + "Username" : "Nume utilizator", "Password" : "Parolă", "Storage & database" : "Stocare și baza de date", "Data folder" : "Director date", diff --git a/core/l10n/ro.json b/core/l10n/ro.json index 137a0bc7a52..037574515eb 100644 --- a/core/l10n/ro.json +++ b/core/l10n/ro.json @@ -29,7 +29,6 @@ "Settings" : "Setări", "Saving..." : "Se salvează...", "I know what I'm doing" : "Eu știu ce fac", - "Reset password" : "Resetează parola", "Password can not be changed. Please contact your administrator." : "Parola nu poate fi modificata. Vă rugăm să contactați administratorul dvs.", "No" : "Nu", "Yes" : "Da", @@ -92,13 +91,9 @@ "The update was successful. Redirecting you to ownCloud now." : "Actualizare reușită. Ești redirecționat către ownCloud.", "%s password reset" : "%s resetare parola", "Use the following link to reset your password: {link}" : "Folosește următorul link pentru a reseta parola: {link}", - "You will receive a link to reset your password via Email." : "Vei primi un mesaj prin care vei putea reseta parola via email.", - "Username" : "Nume utilizator", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Fișierele tale sunt criptate. Dacă nu ai activat o cheie de recuperare, nu va mai exista nici o metodă prin care să îți recuperezi datele după resetarea parole. Dacă nu ești sigur în privința la ce ai de făcut, contactează un administrator înainte să continuii. Chiar vrei să continui?", - "Yes, I really want to reset my password now" : "Da, eu chiar doresc să îmi resetez parola acum", - "Reset" : "Resetare", "New password" : "Noua parolă", "New Password" : "Noua parolă", + "Reset password" : "Resetează parola", "Personal" : "Personal", "Users" : "Utilizatori", "Apps" : "Aplicații", @@ -112,6 +107,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Directorul tău de date și fișiere sunt probabil accesibile de pe Internet, deoarece fișierul .htaccess nu funcționează.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Pentru informații despre cum să configurezi serverul, vezi <a href=\"%s\" target=\"_blank\">documentația</a>.", "Create an <strong>admin account</strong>" : "Crează un <strong>cont de administrator</strong>", + "Username" : "Nume utilizator", "Password" : "Parolă", "Storage & database" : "Stocare și baza de date", "Data folder" : "Director date", diff --git a/core/l10n/ru.js b/core/l10n/ru.js index 066be34d07a..858595bab64 100644 --- a/core/l10n/ru.js +++ b/core/l10n/ru.js @@ -39,7 +39,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Ссылка для восстановления пароля была отправлена на вашу почту. Если вы не получили её, проверьте папку спама.<br>Если там письма со ссылкой нет, то обратитесь к локальному администратору.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Ваши файлы зашифрованы. Если вы не включили ключ восстановления, то ваши данные будут недоступны после сброса пароля.<br />Если вы не уверены что делать дальше - обратитесь к локальному администратору.<br />Вытдействительно хотите продолжить?", "I know what I'm doing" : "Я понимаю, что делаю", - "Reset password" : "Сбросить пароль", "Password can not be changed. Please contact your administrator." : "Пароль не может быть изменён. Пожалуйста, свяжитесь с вашим администратором.", "No" : "Нет", "Yes" : "Да", @@ -114,7 +113,7 @@ OC.L10N.register( "Hello world!" : "Привет мир!", "sunny" : "солнечно", "Hello {name}, the weather is {weather}" : "Здравствуйте {name}, погода {weather}", - "_download %n file_::_download %n files_" : ["","",""], + "_download %n file_::_download %n files_" : ["загрузить %n файл","загрузить %n файла","загрузить %n файлов"], "Updating {productName} to version {version}, this may take a while." : "Обновление {productName} до версии {version}, пожалуйста, подождите.", "Please reload the page." : "Пожалуйста, перезагрузите страницу.", "The update was unsuccessful." : "Обновление не удалось.", @@ -124,13 +123,9 @@ OC.L10N.register( "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Невозможно отправить письмо для сброса пароля, т.к. у вашего аккаунта не прописан адрес почты. Пожалуйста, свяжитесь с администратором.", "%s password reset" : "%s сброс пароля", "Use the following link to reset your password: {link}" : "Используйте следующую ссылку чтобы сбросить пароль: {link}", - "You will receive a link to reset your password via Email." : "На ваш адрес Email выслана ссылка для сброса пароля.", - "Username" : "Имя пользователя", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Ваши файлы зашифрованы. Если вы не активировали ключ восстановления, то после сброса пароля все ваши данные будут потеряны навсегда. Если вы не знаете что делать, свяжитесь со своим администратором до того как продолжить. Вы действительно хотите продолжить?", - "Yes, I really want to reset my password now" : "Да, я действительно хочу сбросить свой пароль", - "Reset" : "Сброс", "New password" : "Новый пароль", "New Password" : "Новый пароль", + "Reset password" : "Сбросить пароль", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X не поддерживается и %s не будет работать правильно на этой платформе. Используйте ее на свой страх и риск!", "For the best results, please consider using a GNU/Linux server instead." : "Для достижения наилучших результатов, пожалуйста, рассмотрите возможность использовать взамен GNU/Linux сервер.", "Personal" : "Личное", @@ -170,6 +165,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Ваша папка с данными и файлы возможно доступны из интернета потому что файл .htaccess не работает.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Для информации, как правильно настроить Ваш сервер, пожалуйста загляните в <a hrev=\"%s\"target=\"blank\">документацию</a>.", "Create an <strong>admin account</strong>" : "Создать <strong>учётную запись администратора</strong>", + "Username" : "Имя пользователя", "Password" : "Пароль", "Storage & database" : "Система хранения данных & база данных", "Data folder" : "Директория с данными", diff --git a/core/l10n/ru.json b/core/l10n/ru.json index a65f9b502b0..990a6e9bf9c 100644 --- a/core/l10n/ru.json +++ b/core/l10n/ru.json @@ -37,7 +37,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Ссылка для восстановления пароля была отправлена на вашу почту. Если вы не получили её, проверьте папку спама.<br>Если там письма со ссылкой нет, то обратитесь к локальному администратору.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Ваши файлы зашифрованы. Если вы не включили ключ восстановления, то ваши данные будут недоступны после сброса пароля.<br />Если вы не уверены что делать дальше - обратитесь к локальному администратору.<br />Вытдействительно хотите продолжить?", "I know what I'm doing" : "Я понимаю, что делаю", - "Reset password" : "Сбросить пароль", "Password can not be changed. Please contact your administrator." : "Пароль не может быть изменён. Пожалуйста, свяжитесь с вашим администратором.", "No" : "Нет", "Yes" : "Да", @@ -112,7 +111,7 @@ "Hello world!" : "Привет мир!", "sunny" : "солнечно", "Hello {name}, the weather is {weather}" : "Здравствуйте {name}, погода {weather}", - "_download %n file_::_download %n files_" : ["","",""], + "_download %n file_::_download %n files_" : ["загрузить %n файл","загрузить %n файла","загрузить %n файлов"], "Updating {productName} to version {version}, this may take a while." : "Обновление {productName} до версии {version}, пожалуйста, подождите.", "Please reload the page." : "Пожалуйста, перезагрузите страницу.", "The update was unsuccessful." : "Обновление не удалось.", @@ -122,13 +121,9 @@ "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Невозможно отправить письмо для сброса пароля, т.к. у вашего аккаунта не прописан адрес почты. Пожалуйста, свяжитесь с администратором.", "%s password reset" : "%s сброс пароля", "Use the following link to reset your password: {link}" : "Используйте следующую ссылку чтобы сбросить пароль: {link}", - "You will receive a link to reset your password via Email." : "На ваш адрес Email выслана ссылка для сброса пароля.", - "Username" : "Имя пользователя", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Ваши файлы зашифрованы. Если вы не активировали ключ восстановления, то после сброса пароля все ваши данные будут потеряны навсегда. Если вы не знаете что делать, свяжитесь со своим администратором до того как продолжить. Вы действительно хотите продолжить?", - "Yes, I really want to reset my password now" : "Да, я действительно хочу сбросить свой пароль", - "Reset" : "Сброс", "New password" : "Новый пароль", "New Password" : "Новый пароль", + "Reset password" : "Сбросить пароль", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X не поддерживается и %s не будет работать правильно на этой платформе. Используйте ее на свой страх и риск!", "For the best results, please consider using a GNU/Linux server instead." : "Для достижения наилучших результатов, пожалуйста, рассмотрите возможность использовать взамен GNU/Linux сервер.", "Personal" : "Личное", @@ -168,6 +163,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Ваша папка с данными и файлы возможно доступны из интернета потому что файл .htaccess не работает.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Для информации, как правильно настроить Ваш сервер, пожалуйста загляните в <a hrev=\"%s\"target=\"blank\">документацию</a>.", "Create an <strong>admin account</strong>" : "Создать <strong>учётную запись администратора</strong>", + "Username" : "Имя пользователя", "Password" : "Пароль", "Storage & database" : "Система хранения данных & база данных", "Data folder" : "Директория с данными", diff --git a/core/l10n/si_LK.js b/core/l10n/si_LK.js index 3a9978aea85..65184265ad6 100644 --- a/core/l10n/si_LK.js +++ b/core/l10n/si_LK.js @@ -22,7 +22,6 @@ OC.L10N.register( "December" : "දෙසැම්බර්", "Settings" : "සිටුවම්", "Saving..." : "සුරැකෙමින් පවතී...", - "Reset password" : "මුරපදය ප්රත්යාරම්භ කරන්න", "No" : "එපා", "Yes" : "ඔව්", "Choose" : "තෝරන්න", @@ -48,9 +47,8 @@ OC.L10N.register( "Delete" : "මකා දමන්න", "Add" : "එකතු කරන්න", "_download %n file_::_download %n files_" : ["",""], - "You will receive a link to reset your password via Email." : "ඔබගේ මුරපදය ප්රත්යාරම්භ කිරීම සඳහා යොමුව විද්යුත් තැපෑලෙන් ලැබෙනු ඇත", - "Username" : "පරිශීලක නම", "New password" : "නව මුරපදය", + "Reset password" : "මුරපදය ප්රත්යාරම්භ කරන්න", "Personal" : "පෞද්ගලික", "Users" : "පරිශීලකයන්", "Apps" : "යෙදුම්", @@ -58,6 +56,7 @@ OC.L10N.register( "Help" : "උදව්", "Access forbidden" : "ඇතුල් වීම තහනම්", "Security Warning" : "ආරක්ෂක නිවේදනයක්", + "Username" : "පරිශීලක නම", "Password" : "මුර පදය", "Data folder" : "දත්ත ෆෝල්ඩරය", "Configure the database" : "දත්ත සමුදාය හැඩගැසීම", diff --git a/core/l10n/si_LK.json b/core/l10n/si_LK.json index 112e6eb5014..db383dc6ae7 100644 --- a/core/l10n/si_LK.json +++ b/core/l10n/si_LK.json @@ -20,7 +20,6 @@ "December" : "දෙසැම්බර්", "Settings" : "සිටුවම්", "Saving..." : "සුරැකෙමින් පවතී...", - "Reset password" : "මුරපදය ප්රත්යාරම්භ කරන්න", "No" : "එපා", "Yes" : "ඔව්", "Choose" : "තෝරන්න", @@ -46,9 +45,8 @@ "Delete" : "මකා දමන්න", "Add" : "එකතු කරන්න", "_download %n file_::_download %n files_" : ["",""], - "You will receive a link to reset your password via Email." : "ඔබගේ මුරපදය ප්රත්යාරම්භ කිරීම සඳහා යොමුව විද්යුත් තැපෑලෙන් ලැබෙනු ඇත", - "Username" : "පරිශීලක නම", "New password" : "නව මුරපදය", + "Reset password" : "මුරපදය ප්රත්යාරම්භ කරන්න", "Personal" : "පෞද්ගලික", "Users" : "පරිශීලකයන්", "Apps" : "යෙදුම්", @@ -56,6 +54,7 @@ "Help" : "උදව්", "Access forbidden" : "ඇතුල් වීම තහනම්", "Security Warning" : "ආරක්ෂක නිවේදනයක්", + "Username" : "පරිශීලක නම", "Password" : "මුර පදය", "Data folder" : "දත්ත ෆෝල්ඩරය", "Configure the database" : "දත්ත සමුදාය හැඩගැසීම", diff --git a/core/l10n/sk.php b/core/l10n/sk.php deleted file mode 100644 index 74d6a570c09..00000000000 --- a/core/l10n/sk.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php -$TRANSLATIONS = array( -"Sunday" => "Nedeľa", -"Monday" => "Pondelok", -"Tuesday" => "Utorok", -"Wednesday" => "Streda", -"Thursday" => "Štvrtok", -"Friday" => "Piatok", -"Saturday" => "Sobota", -"January" => "Január", -"February" => "Február", -"March" => "Marec", -"April" => "Apríl", -"May" => "Máj", -"June" => "Jún", -"July" => "Júl", -"August" => "August", -"September" => "September", -"October" => "Október", -"November" => "November", -"December" => "December", -"Settings" => "Nastavenia", -"_{count} file conflict_::_{count} file conflicts_" => array("","",""), -"Cancel" => "Zrušiť", -"Share" => "Zdieľať", -"group" => "skupina", -"Delete" => "Odstrániť", -"Personal" => "Osobné" -); -$PLURAL_FORMS = "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"; diff --git a/core/l10n/sk_SK.js b/core/l10n/sk_SK.js index 2954e513327..791863c0e48 100644 --- a/core/l10n/sk_SK.js +++ b/core/l10n/sk_SK.js @@ -39,7 +39,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Odkaz na obnovu hesla bol odoslaný na váš email. Pokiaľ ho neobdržíte v primeranom čase, skontrolujte spam / priečinok nevyžiadanej pošty. <br> Ak tam nie je, kontaktujte svojho administrátora.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Súbory sú zašifrované. Ak ste nepovolili kľúč pre obnovenie, neexistuje žiadny spôsob, ako obnoviť vaše dáta po obnovení vášho hesla. <br /> Ak si nie ste istí čo urobiť, prosím skôr než budete pokračovať, obráťte sa na administrátora. <br /> Naozaj chcete pokračovať?", "I know what I'm doing" : "Viem, čo robím", - "Reset password" : "Obnovenie hesla", "Password can not be changed. Please contact your administrator." : "Heslo nemožno zmeniť. Kontaktujte prosím vášho administrátora.", "No" : "Nie", "Yes" : "Áno", @@ -122,13 +121,9 @@ OC.L10N.register( "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Nemožno poslať email pre obnovu hesla, pretože pre tohoto používateľa nie je uvedená žiadna emailová adresa. Prosím, obráťte sa na administrátora.", "%s password reset" : "reset hesla %s", "Use the following link to reset your password: {link}" : "Použite nasledujúci odkaz pre obnovenie vášho hesla: {link}", - "You will receive a link to reset your password via Email." : "Odkaz pre obnovenie hesla obdržíte emailom.", - "Username" : "Meno používateľa", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Vaše súbory sú šifrované. Ak nemáte povolený kľúč obnovy, nie je spôsob, ako získať po obnove hesla vaše dáta. Ak nie ste si istí tým, čo robíte, obráťte sa najskôr na administrátora. Naozaj chcete pokračovať?", - "Yes, I really want to reset my password now" : "Áno, želám si teraz obnoviť svoje heslo", - "Reset" : "Resetovať", "New password" : "Nové heslo", "New Password" : "Nové heslo", + "Reset password" : "Obnovenie hesla", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X nie je podporovaný a %s nebude správne fungovať na tejto platforme. Použite ho na vlastné riziko!", "For the best results, please consider using a GNU/Linux server instead." : "Pre dosiahnutie najlepších výsledkov, prosím zvážte použitie GNU/Linux servera.", "Personal" : "Osobné", @@ -164,6 +159,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Váš priečinok s dátami a súbormi je dostupný z internetu, lebo súbor .htaccess nefunguje.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Pre informácie, ako správne nastaviť váš server, sa pozrite do <a href=\"%s\" target=\"_blank\">dokumentácie</a>.", "Create an <strong>admin account</strong>" : "Vytvoriť <strong>administrátorský účet</strong>", + "Username" : "Meno používateľa", "Password" : "Heslo", "Storage & database" : "Úložislo & databáza", "Data folder" : "Priečinok dát", @@ -177,6 +173,7 @@ OC.L10N.register( "SQLite will be used as database. For larger installations we recommend to change this." : "Ako databáza bude použitá SQLite. Pri väčších inštaláciách odporúčame zmeniť na inú.", "Finish setup" : "Dokončiť inštaláciu", "Finishing …" : "Dokončujem...", + "This application requires JavaScript for correct operation. Please <a href=\"http://enable-javascript.com/\" target=\"_blank\">enable JavaScript</a> and reload the page." : "Táto aplikácia potrebuje JavaScript pre správne fungovanie. Prosím <a href=\"http://enable-javascript.com/\" target=\"_blank\">zapnite si JavaScript</a> a obnovte stránku", "%s is available. Get more information on how to update." : "%s je dostupná. Získajte viac informácií o postupe aktualizácie.", "Log out" : "Odhlásiť", "Server side authentication failed!" : "Autentifikácia na serveri zlyhala!", diff --git a/core/l10n/sk_SK.json b/core/l10n/sk_SK.json index fa6ed266564..6a539ccd773 100644 --- a/core/l10n/sk_SK.json +++ b/core/l10n/sk_SK.json @@ -37,7 +37,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Odkaz na obnovu hesla bol odoslaný na váš email. Pokiaľ ho neobdržíte v primeranom čase, skontrolujte spam / priečinok nevyžiadanej pošty. <br> Ak tam nie je, kontaktujte svojho administrátora.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Súbory sú zašifrované. Ak ste nepovolili kľúč pre obnovenie, neexistuje žiadny spôsob, ako obnoviť vaše dáta po obnovení vášho hesla. <br /> Ak si nie ste istí čo urobiť, prosím skôr než budete pokračovať, obráťte sa na administrátora. <br /> Naozaj chcete pokračovať?", "I know what I'm doing" : "Viem, čo robím", - "Reset password" : "Obnovenie hesla", "Password can not be changed. Please contact your administrator." : "Heslo nemožno zmeniť. Kontaktujte prosím vášho administrátora.", "No" : "Nie", "Yes" : "Áno", @@ -120,13 +119,9 @@ "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Nemožno poslať email pre obnovu hesla, pretože pre tohoto používateľa nie je uvedená žiadna emailová adresa. Prosím, obráťte sa na administrátora.", "%s password reset" : "reset hesla %s", "Use the following link to reset your password: {link}" : "Použite nasledujúci odkaz pre obnovenie vášho hesla: {link}", - "You will receive a link to reset your password via Email." : "Odkaz pre obnovenie hesla obdržíte emailom.", - "Username" : "Meno používateľa", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Vaše súbory sú šifrované. Ak nemáte povolený kľúč obnovy, nie je spôsob, ako získať po obnove hesla vaše dáta. Ak nie ste si istí tým, čo robíte, obráťte sa najskôr na administrátora. Naozaj chcete pokračovať?", - "Yes, I really want to reset my password now" : "Áno, želám si teraz obnoviť svoje heslo", - "Reset" : "Resetovať", "New password" : "Nové heslo", "New Password" : "Nové heslo", + "Reset password" : "Obnovenie hesla", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X nie je podporovaný a %s nebude správne fungovať na tejto platforme. Použite ho na vlastné riziko!", "For the best results, please consider using a GNU/Linux server instead." : "Pre dosiahnutie najlepších výsledkov, prosím zvážte použitie GNU/Linux servera.", "Personal" : "Osobné", @@ -162,6 +157,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Váš priečinok s dátami a súbormi je dostupný z internetu, lebo súbor .htaccess nefunguje.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Pre informácie, ako správne nastaviť váš server, sa pozrite do <a href=\"%s\" target=\"_blank\">dokumentácie</a>.", "Create an <strong>admin account</strong>" : "Vytvoriť <strong>administrátorský účet</strong>", + "Username" : "Meno používateľa", "Password" : "Heslo", "Storage & database" : "Úložislo & databáza", "Data folder" : "Priečinok dát", @@ -175,6 +171,7 @@ "SQLite will be used as database. For larger installations we recommend to change this." : "Ako databáza bude použitá SQLite. Pri väčších inštaláciách odporúčame zmeniť na inú.", "Finish setup" : "Dokončiť inštaláciu", "Finishing …" : "Dokončujem...", + "This application requires JavaScript for correct operation. Please <a href=\"http://enable-javascript.com/\" target=\"_blank\">enable JavaScript</a> and reload the page." : "Táto aplikácia potrebuje JavaScript pre správne fungovanie. Prosím <a href=\"http://enable-javascript.com/\" target=\"_blank\">zapnite si JavaScript</a> a obnovte stránku", "%s is available. Get more information on how to update." : "%s je dostupná. Získajte viac informácií o postupe aktualizácie.", "Log out" : "Odhlásiť", "Server side authentication failed!" : "Autentifikácia na serveri zlyhala!", diff --git a/core/l10n/sl.js b/core/l10n/sl.js index b60e8952b71..59a9e8bd72a 100644 --- a/core/l10n/sl.js +++ b/core/l10n/sl.js @@ -39,7 +39,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Povezava za ponastavitev gesla je bila poslana na naveden elektronski naslov. V kolikor sporočila ne dobite v kratkem, preverite tudi mapo neželene pošte.<br> Če sporočila ni niti v tej mapi, stopite v stik s skrbnikom.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Datoteke so šifrirane. Če niste omogočili obnovitvenega ključa, po ponastavitvi gesla ne bo mogoč dostop do datotek.<br />V primeru, da niste prepričani, kaj storiti, stopite v stik s skrbnikom sistema.<br />Ali ste prepričani, da želite nadaljevati?", "I know what I'm doing" : "Vem, kaj delam!", - "Reset password" : "Ponastavi geslo", "Password can not be changed. Please contact your administrator." : "Gesla ni mogoče spremeniti. Stopite v stik s skrbnikom.", "No" : "Ne", "Yes" : "Da", @@ -110,7 +109,11 @@ OC.L10N.register( "Edit tags" : "Uredi oznake", "Error loading dialog template: {error}" : "Napaka nalaganja predloge pogovornega okna: {error}", "No tags selected for deletion." : "Ni izbranih oznak za izbris.", - "_download %n file_::_download %n files_" : ["","","",""], + "unknown text" : "neznano besedilo", + "Hello world!" : "Pozdravljen svet!", + "sunny" : "sončno", + "Hello {name}, the weather is {weather}" : "Pozdravljeni, {name}, vreme je {weather}", + "_download %n file_::_download %n files_" : ["prejmi %n datoteko","prejmi %n datoteki","prejmi %n datoteke","prejmi %n datotek"], "Updating {productName} to version {version}, this may take a while." : "Poteka posodabljanje {productName} na različico {version}. Opravilo je lahko dolgotrajno.", "Please reload the page." : "Stran je treba ponovno naložiti", "The update was unsuccessful." : "Posodobitev je spodletela", @@ -120,13 +123,9 @@ OC.L10N.register( "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Ni mogoče poslati elektronskega sporočila za ponastavitev gesla, ker ni navedenega elektronskega naslova. Stopite v stik s skrbnikom sistema.", "%s password reset" : "Ponastavitev gesla %s", "Use the following link to reset your password: {link}" : "Za ponastavitev gesla uporabite povezavo: {link}", - "You will receive a link to reset your password via Email." : "Na elektronski naslov boste prejeli povezavo za ponovno nastavitev gesla.", - "Username" : "Uporabniško ime", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Datoteke so šifrirane. Če niste omogočili ključa za obnovitev, žal podatkov ne bo mogoče pridobiti nazaj, ko boste geslo enkrat spremenili. Če niste prepričani, kaj storiti, se obrnite na skrbnika storitve. Ali ste prepričani, da želite nadaljevati?", - "Yes, I really want to reset my password now" : "Da, potrjujem ponastavitev gesla", - "Reset" : "Ponastavi", "New password" : "Novo geslo", "New Password" : "Novo geslo", + "Reset password" : "Ponastavi geslo", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Sistem Mac OS X ni podprt, zato %s ne bo deloval zanesljivo v tem okolju. Program uporabljate na lastno odgovornost! ", "For the best results, please consider using a GNU/Linux server instead." : "Za najbolj še rezultate je priporočljivo uporabljati strežnik GNU/Linux.", "Personal" : "Osebno", @@ -166,6 +165,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Podatkovna mapa in datoteke so najverjetneje javno dostopni preko interneta, saj datoteka .htaccess ni ustrezno nastavljena.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Za več informacij o pravilnem nastavljanju strežnika, kliknite na povezavo do <a href=\"%s\" target=\"_blank\">dokumentacije</a>.", "Create an <strong>admin account</strong>" : "Ustvari <strong>skrbniški račun</strong>", + "Username" : "Uporabniško ime", "Password" : "Geslo", "Storage & database" : "Shramba in podatkovna zbirka", "Data folder" : "Podatkovna mapa", diff --git a/core/l10n/sl.json b/core/l10n/sl.json index 5636d2794ec..abea92d1325 100644 --- a/core/l10n/sl.json +++ b/core/l10n/sl.json @@ -37,7 +37,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Povezava za ponastavitev gesla je bila poslana na naveden elektronski naslov. V kolikor sporočila ne dobite v kratkem, preverite tudi mapo neželene pošte.<br> Če sporočila ni niti v tej mapi, stopite v stik s skrbnikom.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Datoteke so šifrirane. Če niste omogočili obnovitvenega ključa, po ponastavitvi gesla ne bo mogoč dostop do datotek.<br />V primeru, da niste prepričani, kaj storiti, stopite v stik s skrbnikom sistema.<br />Ali ste prepričani, da želite nadaljevati?", "I know what I'm doing" : "Vem, kaj delam!", - "Reset password" : "Ponastavi geslo", "Password can not be changed. Please contact your administrator." : "Gesla ni mogoče spremeniti. Stopite v stik s skrbnikom.", "No" : "Ne", "Yes" : "Da", @@ -108,7 +107,11 @@ "Edit tags" : "Uredi oznake", "Error loading dialog template: {error}" : "Napaka nalaganja predloge pogovornega okna: {error}", "No tags selected for deletion." : "Ni izbranih oznak za izbris.", - "_download %n file_::_download %n files_" : ["","","",""], + "unknown text" : "neznano besedilo", + "Hello world!" : "Pozdravljen svet!", + "sunny" : "sončno", + "Hello {name}, the weather is {weather}" : "Pozdravljeni, {name}, vreme je {weather}", + "_download %n file_::_download %n files_" : ["prejmi %n datoteko","prejmi %n datoteki","prejmi %n datoteke","prejmi %n datotek"], "Updating {productName} to version {version}, this may take a while." : "Poteka posodabljanje {productName} na različico {version}. Opravilo je lahko dolgotrajno.", "Please reload the page." : "Stran je treba ponovno naložiti", "The update was unsuccessful." : "Posodobitev je spodletela", @@ -118,13 +121,9 @@ "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Ni mogoče poslati elektronskega sporočila za ponastavitev gesla, ker ni navedenega elektronskega naslova. Stopite v stik s skrbnikom sistema.", "%s password reset" : "Ponastavitev gesla %s", "Use the following link to reset your password: {link}" : "Za ponastavitev gesla uporabite povezavo: {link}", - "You will receive a link to reset your password via Email." : "Na elektronski naslov boste prejeli povezavo za ponovno nastavitev gesla.", - "Username" : "Uporabniško ime", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Datoteke so šifrirane. Če niste omogočili ključa za obnovitev, žal podatkov ne bo mogoče pridobiti nazaj, ko boste geslo enkrat spremenili. Če niste prepričani, kaj storiti, se obrnite na skrbnika storitve. Ali ste prepričani, da želite nadaljevati?", - "Yes, I really want to reset my password now" : "Da, potrjujem ponastavitev gesla", - "Reset" : "Ponastavi", "New password" : "Novo geslo", "New Password" : "Novo geslo", + "Reset password" : "Ponastavi geslo", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Sistem Mac OS X ni podprt, zato %s ne bo deloval zanesljivo v tem okolju. Program uporabljate na lastno odgovornost! ", "For the best results, please consider using a GNU/Linux server instead." : "Za najbolj še rezultate je priporočljivo uporabljati strežnik GNU/Linux.", "Personal" : "Osebno", @@ -164,6 +163,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Podatkovna mapa in datoteke so najverjetneje javno dostopni preko interneta, saj datoteka .htaccess ni ustrezno nastavljena.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Za več informacij o pravilnem nastavljanju strežnika, kliknite na povezavo do <a href=\"%s\" target=\"_blank\">dokumentacije</a>.", "Create an <strong>admin account</strong>" : "Ustvari <strong>skrbniški račun</strong>", + "Username" : "Uporabniško ime", "Password" : "Geslo", "Storage & database" : "Shramba in podatkovna zbirka", "Data folder" : "Podatkovna mapa", diff --git a/core/l10n/sq.js b/core/l10n/sq.js index 9dd27342905..d0692b8a63e 100644 --- a/core/l10n/sq.js +++ b/core/l10n/sq.js @@ -1,9 +1,19 @@ OC.L10N.register( "core", { + "Couldn't send mail to following users: %s " : "Nuk mund ti dërgoj e-mail këtyre përdoruesve: %s", "Turned on maintenance mode" : "Mënyra e mirëmbajtjes u aktivizua", "Turned off maintenance mode" : "Mënyra e mirëmbajtjes u çaktivizua", "Updated database" : "Database-i u azhurnua", + "Checked database schema update" : "Përditësim i skemës së kontrolluar të bazës së të dhënave", + "Checked database schema update for apps" : "Përditësim i skemës së kontrolluar të bazës së të dhënave për aplikacionet", + "Updated \"%s\" to %s" : "U përditësua \"%s\" në %s", + "Disabled incompatible apps: %s" : "Aplikacione të papajtueshme të bllokuara: %s", + "No image or file provided" : "Nuk është dhënë asnjë imazh apo skedar", + "Unknown filetype" : "Tip i panjohur skedari", + "Invalid image" : "Imazh i pavlefshëm", + "No temporary profile picture available, try again" : "Nuk është i mundur asnjë imazh profili i përkohshëm, provoni përsëri", + "No crop data provided" : "Nuk është dhënë asnjë parametër prerjeje", "Sunday" : "E djelë", "Monday" : "E hënë", "Tuesday" : "E martë", @@ -25,15 +35,38 @@ OC.L10N.register( "December" : "Dhjetor", "Settings" : "Parametra", "Saving..." : "Duke ruajtur...", - "Reset password" : "Rivendos kodin", + "Couldn't send reset email. Please contact your administrator." : "Emaili i rivendosjes nuk mund të dërgohet. Ju lutem kontaktoni me administratorin.", + "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Lidhja për rivendosjen e kodit tuaj u dërgua tek email-i juaj. Nëse nuk e merrni brenda një kohe të arsyeshme, kontrolloni dosjet e postës së padëshirueshme spam.<br>Nëse nuk është as aty, pyesni administratorin tuaj.", + "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Skedarët tuaj janë të kodifikuar. Nëse nuk keni aktivizuar çelësin e restaurimit, të dhënat tuaja nuk do të jenë të arritshme pasi të keni rivendosur kodin.<br />Nëse nuk jeni i sigurt, ju lutemi kontaktoni administratorin tuaj përpara se të vazhdoni. Jeni i sigurt që dëshironi të vazhdoni?", + "I know what I'm doing" : "Unë e di se çfarë po bëj", + "Password can not be changed. Please contact your administrator." : "Fjalëkalimi nuk mund të ndryshohet. Ju lutem kontaktoni me administratorin.", "No" : "Jo", "Yes" : "Po", "Choose" : "Zgjidh", + "Error loading file picker template: {error}" : "Gabim gjatë ngarkimit të shabllonit të zgjedhësit të skedarëve: {error}", "Ok" : "Në rregull", - "_{count} file conflict_::_{count} file conflicts_" : ["",""], + "Error loading message template: {error}" : "Gabim gjatë ngarkimit të shabllonit të mesazheve: {error}", + "_{count} file conflict_::_{count} file conflicts_" : ["{count} konflikt skedari","{count} konflikte skedarësh"], + "One file conflict" : "Një konflikt skedari", + "New Files" : "Skedarë të rinj", + "Already existing files" : "Skedarë ekzistues", + "Which files do you want to keep?" : "Cilët skedarë dëshironi të mbani?", + "If you select both versions, the copied file will have a number added to its name." : "Nëse i zgjidhni të dyja versionet, skedarit të kopjuar do ti shtohet një numër në emrin e tij.", "Cancel" : "Anulo", + "Continue" : "Vazhdo", + "(all selected)" : "(të gjitha të zgjedhura)", + "({count} selected)" : "({count} të zgjedhur)", + "Error loading file exists template" : "Gabim gjatë ngarkimit të shabllonit të skedarit ekzistues", + "Very weak password" : "Fjalëkalim shumë i dobët", + "Weak password" : "Fjalëkalim i dobët", + "So-so password" : "Fjalëkalim i pranueshëm", + "Good password" : "Fjalëkalim i mirë", + "Strong password" : "Fjalëkalim shumë i mirë", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." : "Web Serveri juaj nuk është konfigurar sic duhet në mënyre që të lejojë sinkronizimin e skedare pasi ndërfaqja WevDAV duket të jetë e demtuar.", + "This server has no working internet connection. This means that some of the features like mounting of external storage, notifications about updates or installation of 3rd party apps don´t work. Accessing files from remote and sending of notification emails might also not work. We suggest to enable internet connection for this server if you want to have all features." : "Ky server nuk ka lidhje në internet. Kjo dmth qe disa nga funksionalitetet si të montohet ruajtje e jashtme, njoftime mbi versione të reja apo instalimi i aplikacioneve nga palë të 3ta nuk do të funksionojnë. Qasja në distancë e skedarëve dhe dërgimi i emaileve njoftues gjithashtu mund të mos funksionojnë. Ju sugjerojmë që të aktivizoni lidhjen në internet për këtë server nëse dëshironi ti keni të gjitha funksionalitetet.", + "Error occurred while checking server setup" : "Gabim gjatë kontrollit të konfigurimit të serverit", "Shared" : "Ndarë", + "Shared with {recipients}" : "Ndarë me {recipients}", "Share" : "Nda", "Error" : "Veprim i gabuar", "Error while sharing" : "Veprim i gabuar gjatë ndarjes", @@ -41,16 +74,22 @@ OC.L10N.register( "Error while changing permissions" : "Veprim i gabuar gjatë ndryshimit të lejeve", "Shared with you and the group {group} by {owner}" : "Ndarë me ju dhe me grupin {group} nga {owner}", "Shared with you by {owner}" : "Ndarë me ju nga {owner}", + "Share with user or group …" : "Ndajeni me përdorues ose grup ...", + "Share link" : "Ndaje lidhjen", + "The public link will expire no later than {days} days after it is created" : "Lidhja publike do të skadojë jo më vonë se {days} ditë pas krijimit", "Password protect" : "Mbro me kod", + "Choose a password for the public link" : "Zgjidhni një fjalëkalim për lidhjen publike", "Allow Public Upload" : "Lejo Ngarkimin Publik", "Email link to person" : "Dërgo email me lidhjen", "Send" : "Dërgo", "Set expiration date" : "Cakto datën e përfundimit", "Expiration date" : "Data e përfundimit", + "Adding user..." : "Duke shtuar përdoruesin ...", "group" : "grupi", "Resharing is not allowed" : "Rindarja nuk lejohet", "Shared in {item} with {user}" : "Ndarë në {item} me {user}", "Unshare" : "Hiq ndarjen", + "notify by email" : "njofto me email", "can share" : "mund të ndajnë", "can edit" : "mund të ndryshosh", "access control" : "kontrollimi i hyrjeve", @@ -62,43 +101,109 @@ OC.L10N.register( "Error setting expiration date" : "Veprim i gabuar gjatë caktimit të datës së përfundimit", "Sending ..." : "Duke dërguar...", "Email sent" : "Email-i u dërgua", + "Warning" : "Kujdes", "The object type is not specified." : "Nuk është specifikuar tipi i objektit.", + "Enter new" : "Jep të re", "Delete" : "Elimino", "Add" : "Shto", - "_download %n file_::_download %n files_" : ["",""], + "Edit tags" : "Modifiko tag", + "Error loading dialog template: {error}" : "Gabim gjatë ngarkimit të shabllonit: {error}", + "No tags selected for deletion." : "Nuk është zgjedhur asnjë tag për fshirje.", + "unknown text" : "tekst i panjohur", + "Hello world!" : "Përshendetje të gjithëve!", + "sunny" : "diell", + "Hello {name}, the weather is {weather}" : "Përshëndetje {name}, koha është {weather}", + "_download %n file_::_download %n files_" : ["shkarko %n skedar","shkarko %n skedarë"], + "Updating {productName} to version {version}, this may take a while." : "Po përditësoj {productName} në versionin {version}, kjo mund të zgjasë pak.", + "Please reload the page." : "Ju lutem ringarkoni faqen.", + "The update was unsuccessful." : "Përditësimi nuk rezultoi me sukses.", "The update was successful. Redirecting you to ownCloud now." : "Azhurnimi u krye. Tani do t'ju kaloj tek ownCloud-i.", + "Couldn't reset password because the token is invalid" : "Nuk mund të rivendos fjalëkalimin sepse shenja është e pavlefshme.", + "Couldn't send reset email. Please make sure your username is correct." : "Emaili i rivendosjes nuk mund të dërgohet. Ju lutem sigurohuni që përdoruesi juaj është i saktë.", + "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Emaili i rivendosjes nuk mund të dërgohet sepse nuk ekziston asnjë adresë email për këtë përdorues. Ju lutem kontaktoni me administratorin.", "%s password reset" : "Kodi i %s -it u rivendos", "Use the following link to reset your password: {link}" : "Përdorni lidhjen në vijim për të rivendosur kodin: {link}", - "You will receive a link to reset your password via Email." : "Do t'iu vijë një email që përmban një lidhje për ta rivendosur kodin.", - "Username" : "Përdoruesi", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Skedarët tuaj janë të kodifikuar. Nëqoftëse nuk keni aktivizuar çelësin e restaurimit, të dhënat tuaja nuk do të jenë të arritshme pasi të keni rivendosur kodin. Nëqoftëse nuk jeni i sigurt, ju lutemi kontaktoni administratorin tuaj para se të vazhdoni. Jeni i sigurt që dëshironi të vazhdoni?", - "Yes, I really want to reset my password now" : "Po, dua ta rivendos kodin tani", "New password" : "Kodi i ri", + "New Password" : "Fjalëkalim i ri", + "Reset password" : "Rivendos kodin", + "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X nuk është i mbështetur dhe %s nuk do të funksionojë si duhet në këtë platformë. Përdoreni nën përgjegjësinë tuaj!", + "For the best results, please consider using a GNU/Linux server instead." : "Për të arritur rezultatet më të mira të mundshme, ju lutem më mirë konsideroni përdorimin e një serveri GNU/Linux.", "Personal" : "Personale", "Users" : "Përdoruesit", "Apps" : "App", "Admin" : "Admin", "Help" : "Ndihmë", + "Error loading tags" : "Gabim gjatë ngarkimit të etiketave.", + "Tag already exists" : "Etiketa ekziston", + "Error deleting tag(s)" : "Gabim gjatë fshirjes së etiketës(ave)", + "Error tagging" : "Gabim etiketimi", + "Error untagging" : "Gabim në heqjen e etiketës", + "Error favoriting" : "Gabim në ruajtjen si të preferuar", + "Error unfavoriting" : "Gabim në heqjen nga të preferuarat", "Access forbidden" : "Ndalohet hyrja", + "File not found" : "Skedari nuk mund të gjendet", + "The specified document has not been found on the server." : "Dokumenti i përcaktuar nuk mund të gjendet në server.", + "You can click here to return to %s." : "Ju mund të klikoni këtu për tu kthyer në %s.", + "Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Tungjatjeta,\n\nju njoftojmë se %s ka ndarë %s me ju.\nShikojeni në: %s\n\n", + "The share will expire on %s." : "Ndarja do të skadojë në %s.", + "Cheers!" : "Gjithë të mirat", + "Internal Server Error" : "Gabim i brendshëm në server", + "The server encountered an internal error and was unable to complete your request." : "Serveri u përball me një gabim të brendshem dhe nuk mundet të mbarojë detyrën që i keni ngarkuar.", + "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Ju lutem kontaktoni me administratorin e serverit nëse ky gabim shfaqet herë të tjera, ju lutem përfshini dhe detajet e mëposhtme teknike në raportin tuaj.", + "More details can be found in the server log." : "Detaje të mëtejshme mund të gjenden në listën e veprimeve të serverit.", + "Technical details" : "Detaje teknike", + "Remote Address: %s" : "Adresa tjetër: %s", + "Request ID: %s" : "ID e kërkesës: %s", + "Code: %s" : "Kodi: %s", + "Message: %s" : "Mesazhi: %s", + "File: %s" : "Skedari: %s", + "Line: %s" : "Rreshti: %s", + "Trace" : "Gjurmim", "Security Warning" : "Paralajmërim sigurie", "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" : "Versioni juaj i PHP-së është i cënueshëm nga sulmi NULL Byte (CVE-2006-7243)", "Please update your PHP installation to use %s securely." : "Ju lutem azhurnoni instalimin tuaj të PHP-së që të përdorni %s -in në mënyrë të sigurt.", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Dosja dhe skedarët e të dhënave tuaja mbase janë të arritshme nga interneti sepse skedari .htaccess nuk po punon.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Për më shumë informacion mbi konfigurimin e duhur të serverit tuaj, ju lutem shikoni <a href=\"%s\" target=\"_blank\">dokumentacionin</a>.", "Create an <strong>admin account</strong>" : "Krijo një <strong>llogari administruesi</strong>", + "Username" : "Përdoruesi", "Password" : "Kodi", + "Storage & database" : "Ruajtja dhe baza e të dhënave", "Data folder" : "Emri i dosjes", "Configure the database" : "Konfiguro database-in", + "Only %s is available." : "Vetëm %s është e disponueshme.", "Database user" : "Përdoruesi i database-it", "Database password" : "Kodi i database-it", "Database name" : "Emri i database-it", "Database tablespace" : "Tablespace-i i database-it", "Database host" : "Pozicioni (host) i database-it", + "SQLite will be used as database. For larger installations we recommend to change this." : "SQLite do të përdoret si bazë të dhënash. Për instalime më të mëdha ju rekomandojmë që ta ndryshoni këtë.", "Finish setup" : "Mbaro setup-in", + "Finishing …" : "Duke përfunduar ...", + "This application requires JavaScript for correct operation. Please <a href=\"http://enable-javascript.com/\" target=\"_blank\">enable JavaScript</a> and reload the page." : "Këtij aplikacioni i nevojitet JavaScript për funksionim të rregullt. Ju lutem <a href=\"http://enable-javascript.com/\" target=\"_blank\">aktivizoni JavaScript</a> dhe ringarkoni faqen.", "%s is available. Get more information on how to update." : "%s është i disponueshëm. Merrni më shumë informacione mbi azhurnimin.", "Log out" : "Dalje", + "Server side authentication failed!" : "Verifikimi në krahun e serverit dështoi!", + "Please contact your administrator." : "Ju lutem kontaktoni administratorin.", + "Forgot your password? Reset it!" : "Keni harruar fjalëkalimin tuaj? Rivendoseni!", "remember" : "kujto", "Log in" : "Hyrje", - "Alternative Logins" : "Hyrje alternative" + "Alternative Logins" : "Hyrje alternative", + "Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Tungjatjeta,<br><br>dëshirojmë t'ju njoftojmë se %s ka ndarë <strong>%s</strong> me ju.<br><a href=\"%s\">Klikoni këtu për ta shikuar!</a><br>", + "This ownCloud instance is currently in single user mode." : "Kjo instancë ownCloud është aktualisht në gjendje me përdorues të vetëm.", + "This means only administrators can use the instance." : "Kjo dmth që vetëm administratorët mund të shfrytëzojnë instancën.", + "Contact your system administrator if this message persists or appeared unexpectedly." : "Kontaktoni administratorin e sistemit nëse ky mesazh vazhdon ose është shfaqur papritmas.", + "Thank you for your patience." : "Ju faleminderit për durimin tuaj.", + "You are accessing the server from an untrusted domain." : "Ju po qaseni në server nga një domain jo i besuar.", + "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domain\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Ju lutem kontaktoni me administratorin. Nëse jeni administrator i kësaj instance, konfiguroni parametrin \"domain i besuar\" në config/config.php . Një konfigurim shembull është dhënë në config/config.sample.php", + "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Në varësi të konfigurimit tuaj, ju si administrator mundet gjithashtu të jeni i aftë të përdorni butonin e mëposhtëm për ti dhënë besim këtij domain.", + "Add \"%s\" as trusted domain" : "Shtoni \"%s\" si domain të besuar", + "%s will be updated to version %s." : "%s to të përditësohet në versionin %s.", + "The following apps will be disabled:" : "Keto aplikacione do të bllokohen:", + "The theme %s has been disabled." : "Tema %s u bllokua.", + "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Ju lutem sigurohuni që bazës së të dhënave, dosjes së konfigurimit dhe dosjes së të dhënave ti jetë bërë një kopje rezervë përpara se të vazhdoni më tutje.", + "Start update" : "Fillo përditësimin.", + "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Për të shmangur momente bllokimi gjatë punës me instalime të mëdha, në vend të kësaj ju mund të kryeni komandën e mëposhtme nga dosja juaj e instalimit:", + "This %s instance is currently being updated, which may take a while." : "Kjo instancë %s është në proces përditësimi, i cili mund të zgjasë pak kohë.", + "This page will refresh itself when the %s instance is available again." : "Kjo faqe do të ringarkohet automatikisht kur instanca %s të jetë sërish e disponueshme." }, "nplurals=2; plural=(n != 1);"); diff --git a/core/l10n/sq.json b/core/l10n/sq.json index 72230681a4e..3cf8cae21d3 100644 --- a/core/l10n/sq.json +++ b/core/l10n/sq.json @@ -1,7 +1,17 @@ { "translations": { + "Couldn't send mail to following users: %s " : "Nuk mund ti dërgoj e-mail këtyre përdoruesve: %s", "Turned on maintenance mode" : "Mënyra e mirëmbajtjes u aktivizua", "Turned off maintenance mode" : "Mënyra e mirëmbajtjes u çaktivizua", "Updated database" : "Database-i u azhurnua", + "Checked database schema update" : "Përditësim i skemës së kontrolluar të bazës së të dhënave", + "Checked database schema update for apps" : "Përditësim i skemës së kontrolluar të bazës së të dhënave për aplikacionet", + "Updated \"%s\" to %s" : "U përditësua \"%s\" në %s", + "Disabled incompatible apps: %s" : "Aplikacione të papajtueshme të bllokuara: %s", + "No image or file provided" : "Nuk është dhënë asnjë imazh apo skedar", + "Unknown filetype" : "Tip i panjohur skedari", + "Invalid image" : "Imazh i pavlefshëm", + "No temporary profile picture available, try again" : "Nuk është i mundur asnjë imazh profili i përkohshëm, provoni përsëri", + "No crop data provided" : "Nuk është dhënë asnjë parametër prerjeje", "Sunday" : "E djelë", "Monday" : "E hënë", "Tuesday" : "E martë", @@ -23,15 +33,38 @@ "December" : "Dhjetor", "Settings" : "Parametra", "Saving..." : "Duke ruajtur...", - "Reset password" : "Rivendos kodin", + "Couldn't send reset email. Please contact your administrator." : "Emaili i rivendosjes nuk mund të dërgohet. Ju lutem kontaktoni me administratorin.", + "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Lidhja për rivendosjen e kodit tuaj u dërgua tek email-i juaj. Nëse nuk e merrni brenda një kohe të arsyeshme, kontrolloni dosjet e postës së padëshirueshme spam.<br>Nëse nuk është as aty, pyesni administratorin tuaj.", + "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Skedarët tuaj janë të kodifikuar. Nëse nuk keni aktivizuar çelësin e restaurimit, të dhënat tuaja nuk do të jenë të arritshme pasi të keni rivendosur kodin.<br />Nëse nuk jeni i sigurt, ju lutemi kontaktoni administratorin tuaj përpara se të vazhdoni. Jeni i sigurt që dëshironi të vazhdoni?", + "I know what I'm doing" : "Unë e di se çfarë po bëj", + "Password can not be changed. Please contact your administrator." : "Fjalëkalimi nuk mund të ndryshohet. Ju lutem kontaktoni me administratorin.", "No" : "Jo", "Yes" : "Po", "Choose" : "Zgjidh", + "Error loading file picker template: {error}" : "Gabim gjatë ngarkimit të shabllonit të zgjedhësit të skedarëve: {error}", "Ok" : "Në rregull", - "_{count} file conflict_::_{count} file conflicts_" : ["",""], + "Error loading message template: {error}" : "Gabim gjatë ngarkimit të shabllonit të mesazheve: {error}", + "_{count} file conflict_::_{count} file conflicts_" : ["{count} konflikt skedari","{count} konflikte skedarësh"], + "One file conflict" : "Një konflikt skedari", + "New Files" : "Skedarë të rinj", + "Already existing files" : "Skedarë ekzistues", + "Which files do you want to keep?" : "Cilët skedarë dëshironi të mbani?", + "If you select both versions, the copied file will have a number added to its name." : "Nëse i zgjidhni të dyja versionet, skedarit të kopjuar do ti shtohet një numër në emrin e tij.", "Cancel" : "Anulo", + "Continue" : "Vazhdo", + "(all selected)" : "(të gjitha të zgjedhura)", + "({count} selected)" : "({count} të zgjedhur)", + "Error loading file exists template" : "Gabim gjatë ngarkimit të shabllonit të skedarit ekzistues", + "Very weak password" : "Fjalëkalim shumë i dobët", + "Weak password" : "Fjalëkalim i dobët", + "So-so password" : "Fjalëkalim i pranueshëm", + "Good password" : "Fjalëkalim i mirë", + "Strong password" : "Fjalëkalim shumë i mirë", "Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." : "Web Serveri juaj nuk është konfigurar sic duhet në mënyre që të lejojë sinkronizimin e skedare pasi ndërfaqja WevDAV duket të jetë e demtuar.", + "This server has no working internet connection. This means that some of the features like mounting of external storage, notifications about updates or installation of 3rd party apps don´t work. Accessing files from remote and sending of notification emails might also not work. We suggest to enable internet connection for this server if you want to have all features." : "Ky server nuk ka lidhje në internet. Kjo dmth qe disa nga funksionalitetet si të montohet ruajtje e jashtme, njoftime mbi versione të reja apo instalimi i aplikacioneve nga palë të 3ta nuk do të funksionojnë. Qasja në distancë e skedarëve dhe dërgimi i emaileve njoftues gjithashtu mund të mos funksionojnë. Ju sugjerojmë që të aktivizoni lidhjen në internet për këtë server nëse dëshironi ti keni të gjitha funksionalitetet.", + "Error occurred while checking server setup" : "Gabim gjatë kontrollit të konfigurimit të serverit", "Shared" : "Ndarë", + "Shared with {recipients}" : "Ndarë me {recipients}", "Share" : "Nda", "Error" : "Veprim i gabuar", "Error while sharing" : "Veprim i gabuar gjatë ndarjes", @@ -39,16 +72,22 @@ "Error while changing permissions" : "Veprim i gabuar gjatë ndryshimit të lejeve", "Shared with you and the group {group} by {owner}" : "Ndarë me ju dhe me grupin {group} nga {owner}", "Shared with you by {owner}" : "Ndarë me ju nga {owner}", + "Share with user or group …" : "Ndajeni me përdorues ose grup ...", + "Share link" : "Ndaje lidhjen", + "The public link will expire no later than {days} days after it is created" : "Lidhja publike do të skadojë jo më vonë se {days} ditë pas krijimit", "Password protect" : "Mbro me kod", + "Choose a password for the public link" : "Zgjidhni një fjalëkalim për lidhjen publike", "Allow Public Upload" : "Lejo Ngarkimin Publik", "Email link to person" : "Dërgo email me lidhjen", "Send" : "Dërgo", "Set expiration date" : "Cakto datën e përfundimit", "Expiration date" : "Data e përfundimit", + "Adding user..." : "Duke shtuar përdoruesin ...", "group" : "grupi", "Resharing is not allowed" : "Rindarja nuk lejohet", "Shared in {item} with {user}" : "Ndarë në {item} me {user}", "Unshare" : "Hiq ndarjen", + "notify by email" : "njofto me email", "can share" : "mund të ndajnë", "can edit" : "mund të ndryshosh", "access control" : "kontrollimi i hyrjeve", @@ -60,43 +99,109 @@ "Error setting expiration date" : "Veprim i gabuar gjatë caktimit të datës së përfundimit", "Sending ..." : "Duke dërguar...", "Email sent" : "Email-i u dërgua", + "Warning" : "Kujdes", "The object type is not specified." : "Nuk është specifikuar tipi i objektit.", + "Enter new" : "Jep të re", "Delete" : "Elimino", "Add" : "Shto", - "_download %n file_::_download %n files_" : ["",""], + "Edit tags" : "Modifiko tag", + "Error loading dialog template: {error}" : "Gabim gjatë ngarkimit të shabllonit: {error}", + "No tags selected for deletion." : "Nuk është zgjedhur asnjë tag për fshirje.", + "unknown text" : "tekst i panjohur", + "Hello world!" : "Përshendetje të gjithëve!", + "sunny" : "diell", + "Hello {name}, the weather is {weather}" : "Përshëndetje {name}, koha është {weather}", + "_download %n file_::_download %n files_" : ["shkarko %n skedar","shkarko %n skedarë"], + "Updating {productName} to version {version}, this may take a while." : "Po përditësoj {productName} në versionin {version}, kjo mund të zgjasë pak.", + "Please reload the page." : "Ju lutem ringarkoni faqen.", + "The update was unsuccessful." : "Përditësimi nuk rezultoi me sukses.", "The update was successful. Redirecting you to ownCloud now." : "Azhurnimi u krye. Tani do t'ju kaloj tek ownCloud-i.", + "Couldn't reset password because the token is invalid" : "Nuk mund të rivendos fjalëkalimin sepse shenja është e pavlefshme.", + "Couldn't send reset email. Please make sure your username is correct." : "Emaili i rivendosjes nuk mund të dërgohet. Ju lutem sigurohuni që përdoruesi juaj është i saktë.", + "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Emaili i rivendosjes nuk mund të dërgohet sepse nuk ekziston asnjë adresë email për këtë përdorues. Ju lutem kontaktoni me administratorin.", "%s password reset" : "Kodi i %s -it u rivendos", "Use the following link to reset your password: {link}" : "Përdorni lidhjen në vijim për të rivendosur kodin: {link}", - "You will receive a link to reset your password via Email." : "Do t'iu vijë një email që përmban një lidhje për ta rivendosur kodin.", - "Username" : "Përdoruesi", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Skedarët tuaj janë të kodifikuar. Nëqoftëse nuk keni aktivizuar çelësin e restaurimit, të dhënat tuaja nuk do të jenë të arritshme pasi të keni rivendosur kodin. Nëqoftëse nuk jeni i sigurt, ju lutemi kontaktoni administratorin tuaj para se të vazhdoni. Jeni i sigurt që dëshironi të vazhdoni?", - "Yes, I really want to reset my password now" : "Po, dua ta rivendos kodin tani", "New password" : "Kodi i ri", + "New Password" : "Fjalëkalim i ri", + "Reset password" : "Rivendos kodin", + "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X nuk është i mbështetur dhe %s nuk do të funksionojë si duhet në këtë platformë. Përdoreni nën përgjegjësinë tuaj!", + "For the best results, please consider using a GNU/Linux server instead." : "Për të arritur rezultatet më të mira të mundshme, ju lutem më mirë konsideroni përdorimin e një serveri GNU/Linux.", "Personal" : "Personale", "Users" : "Përdoruesit", "Apps" : "App", "Admin" : "Admin", "Help" : "Ndihmë", + "Error loading tags" : "Gabim gjatë ngarkimit të etiketave.", + "Tag already exists" : "Etiketa ekziston", + "Error deleting tag(s)" : "Gabim gjatë fshirjes së etiketës(ave)", + "Error tagging" : "Gabim etiketimi", + "Error untagging" : "Gabim në heqjen e etiketës", + "Error favoriting" : "Gabim në ruajtjen si të preferuar", + "Error unfavoriting" : "Gabim në heqjen nga të preferuarat", "Access forbidden" : "Ndalohet hyrja", + "File not found" : "Skedari nuk mund të gjendet", + "The specified document has not been found on the server." : "Dokumenti i përcaktuar nuk mund të gjendet në server.", + "You can click here to return to %s." : "Ju mund të klikoni këtu për tu kthyer në %s.", + "Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Tungjatjeta,\n\nju njoftojmë se %s ka ndarë %s me ju.\nShikojeni në: %s\n\n", + "The share will expire on %s." : "Ndarja do të skadojë në %s.", + "Cheers!" : "Gjithë të mirat", + "Internal Server Error" : "Gabim i brendshëm në server", + "The server encountered an internal error and was unable to complete your request." : "Serveri u përball me një gabim të brendshem dhe nuk mundet të mbarojë detyrën që i keni ngarkuar.", + "Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report." : "Ju lutem kontaktoni me administratorin e serverit nëse ky gabim shfaqet herë të tjera, ju lutem përfshini dhe detajet e mëposhtme teknike në raportin tuaj.", + "More details can be found in the server log." : "Detaje të mëtejshme mund të gjenden në listën e veprimeve të serverit.", + "Technical details" : "Detaje teknike", + "Remote Address: %s" : "Adresa tjetër: %s", + "Request ID: %s" : "ID e kërkesës: %s", + "Code: %s" : "Kodi: %s", + "Message: %s" : "Mesazhi: %s", + "File: %s" : "Skedari: %s", + "Line: %s" : "Rreshti: %s", + "Trace" : "Gjurmim", "Security Warning" : "Paralajmërim sigurie", "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" : "Versioni juaj i PHP-së është i cënueshëm nga sulmi NULL Byte (CVE-2006-7243)", "Please update your PHP installation to use %s securely." : "Ju lutem azhurnoni instalimin tuaj të PHP-së që të përdorni %s -in në mënyrë të sigurt.", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Dosja dhe skedarët e të dhënave tuaja mbase janë të arritshme nga interneti sepse skedari .htaccess nuk po punon.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Për më shumë informacion mbi konfigurimin e duhur të serverit tuaj, ju lutem shikoni <a href=\"%s\" target=\"_blank\">dokumentacionin</a>.", "Create an <strong>admin account</strong>" : "Krijo një <strong>llogari administruesi</strong>", + "Username" : "Përdoruesi", "Password" : "Kodi", + "Storage & database" : "Ruajtja dhe baza e të dhënave", "Data folder" : "Emri i dosjes", "Configure the database" : "Konfiguro database-in", + "Only %s is available." : "Vetëm %s është e disponueshme.", "Database user" : "Përdoruesi i database-it", "Database password" : "Kodi i database-it", "Database name" : "Emri i database-it", "Database tablespace" : "Tablespace-i i database-it", "Database host" : "Pozicioni (host) i database-it", + "SQLite will be used as database. For larger installations we recommend to change this." : "SQLite do të përdoret si bazë të dhënash. Për instalime më të mëdha ju rekomandojmë që ta ndryshoni këtë.", "Finish setup" : "Mbaro setup-in", + "Finishing …" : "Duke përfunduar ...", + "This application requires JavaScript for correct operation. Please <a href=\"http://enable-javascript.com/\" target=\"_blank\">enable JavaScript</a> and reload the page." : "Këtij aplikacioni i nevojitet JavaScript për funksionim të rregullt. Ju lutem <a href=\"http://enable-javascript.com/\" target=\"_blank\">aktivizoni JavaScript</a> dhe ringarkoni faqen.", "%s is available. Get more information on how to update." : "%s është i disponueshëm. Merrni më shumë informacione mbi azhurnimin.", "Log out" : "Dalje", + "Server side authentication failed!" : "Verifikimi në krahun e serverit dështoi!", + "Please contact your administrator." : "Ju lutem kontaktoni administratorin.", + "Forgot your password? Reset it!" : "Keni harruar fjalëkalimin tuaj? Rivendoseni!", "remember" : "kujto", "Log in" : "Hyrje", - "Alternative Logins" : "Hyrje alternative" + "Alternative Logins" : "Hyrje alternative", + "Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> with you.<br><a href=\"%s\">View it!</a><br><br>" : "Tungjatjeta,<br><br>dëshirojmë t'ju njoftojmë se %s ka ndarë <strong>%s</strong> me ju.<br><a href=\"%s\">Klikoni këtu për ta shikuar!</a><br>", + "This ownCloud instance is currently in single user mode." : "Kjo instancë ownCloud është aktualisht në gjendje me përdorues të vetëm.", + "This means only administrators can use the instance." : "Kjo dmth që vetëm administratorët mund të shfrytëzojnë instancën.", + "Contact your system administrator if this message persists or appeared unexpectedly." : "Kontaktoni administratorin e sistemit nëse ky mesazh vazhdon ose është shfaqur papritmas.", + "Thank you for your patience." : "Ju faleminderit për durimin tuaj.", + "You are accessing the server from an untrusted domain." : "Ju po qaseni në server nga një domain jo i besuar.", + "Please contact your administrator. If you are an administrator of this instance, configure the \"trusted_domain\" setting in config/config.php. An example configuration is provided in config/config.sample.php." : "Ju lutem kontaktoni me administratorin. Nëse jeni administrator i kësaj instance, konfiguroni parametrin \"domain i besuar\" në config/config.php . Një konfigurim shembull është dhënë në config/config.sample.php", + "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Në varësi të konfigurimit tuaj, ju si administrator mundet gjithashtu të jeni i aftë të përdorni butonin e mëposhtëm për ti dhënë besim këtij domain.", + "Add \"%s\" as trusted domain" : "Shtoni \"%s\" si domain të besuar", + "%s will be updated to version %s." : "%s to të përditësohet në versionin %s.", + "The following apps will be disabled:" : "Keto aplikacione do të bllokohen:", + "The theme %s has been disabled." : "Tema %s u bllokua.", + "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Ju lutem sigurohuni që bazës së të dhënave, dosjes së konfigurimit dhe dosjes së të dhënave ti jetë bërë një kopje rezervë përpara se të vazhdoni më tutje.", + "Start update" : "Fillo përditësimin.", + "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Për të shmangur momente bllokimi gjatë punës me instalime të mëdha, në vend të kësaj ju mund të kryeni komandën e mëposhtme nga dosja juaj e instalimit:", + "This %s instance is currently being updated, which may take a while." : "Kjo instancë %s është në proces përditësimi, i cili mund të zgjasë pak kohë.", + "This page will refresh itself when the %s instance is available again." : "Kjo faqe do të ringarkohet automatikisht kur instanca %s të jetë sërish e disponueshme." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/core/l10n/sr.js b/core/l10n/sr.js index 5e2c8354261..39ca7b1fda4 100644 --- a/core/l10n/sr.js +++ b/core/l10n/sr.js @@ -22,7 +22,6 @@ OC.L10N.register( "December" : "Децембар", "Settings" : "Поставке", "Saving..." : "Чување у току...", - "Reset password" : "Ресетуј лозинку", "No" : "Не", "Yes" : "Да", "Choose" : "Одабери", @@ -61,9 +60,8 @@ OC.L10N.register( "Add" : "Додај", "_download %n file_::_download %n files_" : ["","",""], "Use the following link to reset your password: {link}" : "Овом везом ресетујте своју лозинку: {link}", - "You will receive a link to reset your password via Email." : "Добићете везу за ресетовање лозинке путем е-поште.", - "Username" : "Корисничко име", "New password" : "Нова лозинка", + "Reset password" : "Ресетуј лозинку", "Personal" : "Лично", "Users" : "Корисници", "Apps" : "Апликације", @@ -72,6 +70,7 @@ OC.L10N.register( "Access forbidden" : "Забрањен приступ", "Security Warning" : "Сигурносно упозорење", "Create an <strong>admin account</strong>" : "Направи <strong>административни налог</strong>", + "Username" : "Корисничко име", "Password" : "Лозинка", "Data folder" : "Фацикла података", "Configure the database" : "Подешавање базе", diff --git a/core/l10n/sr.json b/core/l10n/sr.json index bfd13040906..ab3e8e04495 100644 --- a/core/l10n/sr.json +++ b/core/l10n/sr.json @@ -20,7 +20,6 @@ "December" : "Децембар", "Settings" : "Поставке", "Saving..." : "Чување у току...", - "Reset password" : "Ресетуј лозинку", "No" : "Не", "Yes" : "Да", "Choose" : "Одабери", @@ -59,9 +58,8 @@ "Add" : "Додај", "_download %n file_::_download %n files_" : ["","",""], "Use the following link to reset your password: {link}" : "Овом везом ресетујте своју лозинку: {link}", - "You will receive a link to reset your password via Email." : "Добићете везу за ресетовање лозинке путем е-поште.", - "Username" : "Корисничко име", "New password" : "Нова лозинка", + "Reset password" : "Ресетуј лозинку", "Personal" : "Лично", "Users" : "Корисници", "Apps" : "Апликације", @@ -70,6 +68,7 @@ "Access forbidden" : "Забрањен приступ", "Security Warning" : "Сигурносно упозорење", "Create an <strong>admin account</strong>" : "Направи <strong>административни налог</strong>", + "Username" : "Корисничко име", "Password" : "Лозинка", "Data folder" : "Фацикла података", "Configure the database" : "Подешавање базе", diff --git a/core/l10n/sr@latin.js b/core/l10n/sr@latin.js index 11c3d2e40a7..a327c2ee55a 100644 --- a/core/l10n/sr@latin.js +++ b/core/l10n/sr@latin.js @@ -22,7 +22,6 @@ OC.L10N.register( "December" : "Decembar", "Settings" : "Podešavanja", "I know what I'm doing" : "Znam šta radim", - "Reset password" : "Resetuj lozinku", "No" : "Ne", "Yes" : "Da", "Choose" : "Izaberi", @@ -69,9 +68,8 @@ OC.L10N.register( "_download %n file_::_download %n files_" : ["","",""], "The update was successful. Redirecting you to ownCloud now." : "Ažuriranje je uspelo. Prosleđivanje na ownCloud.", "Use the following link to reset your password: {link}" : "Koristite sledeći link za reset lozinke: {link}", - "You will receive a link to reset your password via Email." : "Dobićete vezu za resetovanje lozinke putem e-pošte.", - "Username" : "Korisničko ime", "New password" : "Nova lozinka", + "Reset password" : "Resetuj lozinku", "Personal" : "Lično", "Users" : "Korisnici", "Apps" : "Programi", @@ -82,6 +80,7 @@ OC.L10N.register( "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" : "Vaša PHP verzija je ranjiva na ", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Vaši podaci i direktorijumi su verovatno dostupni sa interneta jer .htaccess fajl ne funkcioniše.", "Create an <strong>admin account</strong>" : "Napravi <strong>administrativni nalog</strong>", + "Username" : "Korisničko ime", "Password" : "Lozinka", "Data folder" : "Fascikla podataka", "Configure the database" : "Podešavanje baze", diff --git a/core/l10n/sr@latin.json b/core/l10n/sr@latin.json index a358f57d028..219141ff1df 100644 --- a/core/l10n/sr@latin.json +++ b/core/l10n/sr@latin.json @@ -20,7 +20,6 @@ "December" : "Decembar", "Settings" : "Podešavanja", "I know what I'm doing" : "Znam šta radim", - "Reset password" : "Resetuj lozinku", "No" : "Ne", "Yes" : "Da", "Choose" : "Izaberi", @@ -67,9 +66,8 @@ "_download %n file_::_download %n files_" : ["","",""], "The update was successful. Redirecting you to ownCloud now." : "Ažuriranje je uspelo. Prosleđivanje na ownCloud.", "Use the following link to reset your password: {link}" : "Koristite sledeći link za reset lozinke: {link}", - "You will receive a link to reset your password via Email." : "Dobićete vezu za resetovanje lozinke putem e-pošte.", - "Username" : "Korisničko ime", "New password" : "Nova lozinka", + "Reset password" : "Resetuj lozinku", "Personal" : "Lično", "Users" : "Korisnici", "Apps" : "Programi", @@ -80,6 +78,7 @@ "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" : "Vaša PHP verzija je ranjiva na ", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Vaši podaci i direktorijumi su verovatno dostupni sa interneta jer .htaccess fajl ne funkcioniše.", "Create an <strong>admin account</strong>" : "Napravi <strong>administrativni nalog</strong>", + "Username" : "Korisničko ime", "Password" : "Lozinka", "Data folder" : "Fascikla podataka", "Configure the database" : "Podešavanje baze", diff --git a/core/l10n/sv.js b/core/l10n/sv.js index c0066471dc0..dc427b46dba 100644 --- a/core/l10n/sv.js +++ b/core/l10n/sv.js @@ -37,7 +37,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Länken för att återställa ditt lösenord har skickats till din e-mail. Om du inte mottar något inom kort, kontrollera spam/skräpkorgen.<br>Om det inte finns något där, vänligen kontakta din lokala administratör.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Dina filer är krypterade. Om du inte angett någon återställningsnyckel, kommer det att vara omöjligt att få tillbaka dina data efter att lösenordet är återställt..<br />Om du är osäker på vad du ska göra, vänligen kontakta din administratör innan du fortsätter.<br />Är du verkligen helt säker på att du vill fortsätta?", "I know what I'm doing" : "Jag är säker på vad jag gör", - "Reset password" : "Återställ lösenordet", "Password can not be changed. Please contact your administrator." : "Lösenordet kan inte ändras. Vänligen kontakta din administratör.", "No" : "Nej", "Yes" : "Ja", @@ -118,13 +117,9 @@ OC.L10N.register( "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Kunde inte skicka något återställningsmail därför att det inte finns någon e-mailadress kopplad till detta användarnamn. Vänligen kontakta din administratör.", "%s password reset" : "%s återställ lösenord", "Use the following link to reset your password: {link}" : "Använd följande länk för att återställa lösenordet: {link}", - "You will receive a link to reset your password via Email." : "Du får en länk att återställa ditt lösenord via e-post.", - "Username" : "Användarnamn", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Dina filer är krypterade. Om du inte har aktiverat återställningsnyckeln kommer det inte att finnas någon möjlighet att få tillbaka dina filer efter att ditt lösenord har återställts. Om du är osäker, kontakta din systemadministratör innan du fortsätter. Är du verkligen säker på att fortsätta?", - "Yes, I really want to reset my password now" : "Ja, jag vill verkligen återställa mitt lösenord nu", - "Reset" : "Återställ", "New password" : "Nytt lösenord", "New Password" : "Nytt lösenord", + "Reset password" : "Återställ lösenordet", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X stöds inte och %s kommer inte att fungera korrekt på denna plattform. Använd på egen risk!", "For the best results, please consider using a GNU/Linux server instead." : "För bästa resultat, överväg att använda en GNU/Linux server istället.", "Personal" : "Personligt", @@ -150,6 +145,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Din datakatalog och filer är förmodligen tillgängliga från Internet, eftersom .htaccess-filen inte fungerar.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "För information hur du korrekt konfigurerar din servern, se ownCloud <a href=\"%s\" target=\"_blank\">dokumentationen</a>.", "Create an <strong>admin account</strong>" : "Skapa ett <strong>administratörskonto</strong>", + "Username" : "Användarnamn", "Password" : "Lösenord", "Storage & database" : "Lagring & databas", "Data folder" : "Datamapp", diff --git a/core/l10n/sv.json b/core/l10n/sv.json index 82a228565e3..c69d5001b5f 100644 --- a/core/l10n/sv.json +++ b/core/l10n/sv.json @@ -35,7 +35,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Länken för att återställa ditt lösenord har skickats till din e-mail. Om du inte mottar något inom kort, kontrollera spam/skräpkorgen.<br>Om det inte finns något där, vänligen kontakta din lokala administratör.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Dina filer är krypterade. Om du inte angett någon återställningsnyckel, kommer det att vara omöjligt att få tillbaka dina data efter att lösenordet är återställt..<br />Om du är osäker på vad du ska göra, vänligen kontakta din administratör innan du fortsätter.<br />Är du verkligen helt säker på att du vill fortsätta?", "I know what I'm doing" : "Jag är säker på vad jag gör", - "Reset password" : "Återställ lösenordet", "Password can not be changed. Please contact your administrator." : "Lösenordet kan inte ändras. Vänligen kontakta din administratör.", "No" : "Nej", "Yes" : "Ja", @@ -116,13 +115,9 @@ "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Kunde inte skicka något återställningsmail därför att det inte finns någon e-mailadress kopplad till detta användarnamn. Vänligen kontakta din administratör.", "%s password reset" : "%s återställ lösenord", "Use the following link to reset your password: {link}" : "Använd följande länk för att återställa lösenordet: {link}", - "You will receive a link to reset your password via Email." : "Du får en länk att återställa ditt lösenord via e-post.", - "Username" : "Användarnamn", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Dina filer är krypterade. Om du inte har aktiverat återställningsnyckeln kommer det inte att finnas någon möjlighet att få tillbaka dina filer efter att ditt lösenord har återställts. Om du är osäker, kontakta din systemadministratör innan du fortsätter. Är du verkligen säker på att fortsätta?", - "Yes, I really want to reset my password now" : "Ja, jag vill verkligen återställa mitt lösenord nu", - "Reset" : "Återställ", "New password" : "Nytt lösenord", "New Password" : "Nytt lösenord", + "Reset password" : "Återställ lösenordet", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X stöds inte och %s kommer inte att fungera korrekt på denna plattform. Använd på egen risk!", "For the best results, please consider using a GNU/Linux server instead." : "För bästa resultat, överväg att använda en GNU/Linux server istället.", "Personal" : "Personligt", @@ -148,6 +143,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Din datakatalog och filer är förmodligen tillgängliga från Internet, eftersom .htaccess-filen inte fungerar.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "För information hur du korrekt konfigurerar din servern, se ownCloud <a href=\"%s\" target=\"_blank\">dokumentationen</a>.", "Create an <strong>admin account</strong>" : "Skapa ett <strong>administratörskonto</strong>", + "Username" : "Användarnamn", "Password" : "Lösenord", "Storage & database" : "Lagring & databas", "Data folder" : "Datamapp", diff --git a/core/l10n/ta_LK.js b/core/l10n/ta_LK.js index 520feac8871..831729238b1 100644 --- a/core/l10n/ta_LK.js +++ b/core/l10n/ta_LK.js @@ -22,7 +22,6 @@ OC.L10N.register( "December" : "மார்கழி", "Settings" : "அமைப்புகள்", "Saving..." : "சேமிக்கப்படுகிறது...", - "Reset password" : "மீளமைத்த கடவுச்சொல்", "No" : "இல்லை", "Yes" : "ஆம்", "Choose" : "தெரிவுசெய்க ", @@ -57,9 +56,8 @@ OC.L10N.register( "Add" : "சேர்க்க", "_download %n file_::_download %n files_" : ["",""], "Use the following link to reset your password: {link}" : "உங்கள் கடவுச்சொல்லை மீளமைக்க பின்வரும் இணைப்பை பயன்படுத்தவும் : {இணைப்பு}", - "You will receive a link to reset your password via Email." : "நீங்கள் மின்னஞ்சல் மூலம் உங்களுடைய கடவுச்சொல்லை மீளமைப்பதற்கான இணைப்பை பெறுவீர்கள். ", - "Username" : "பயனாளர் பெயர்", "New password" : "புதிய கடவுச்சொல்", + "Reset password" : "மீளமைத்த கடவுச்சொல்", "Personal" : "தனிப்பட்ட", "Users" : "பயனாளர்", "Apps" : "செயலிகள்", @@ -68,6 +66,7 @@ OC.L10N.register( "Access forbidden" : "அணுக தடை", "Security Warning" : "பாதுகாப்பு எச்சரிக்கை", "Create an <strong>admin account</strong>" : "<strong> நிர்வாக கணக்கொன்றை </strong> உருவாக்குக", + "Username" : "பயனாளர் பெயர்", "Password" : "கடவுச்சொல்", "Data folder" : "தரவு கோப்புறை", "Configure the database" : "தரவுத்தளத்தை தகவமைக்க", diff --git a/core/l10n/ta_LK.json b/core/l10n/ta_LK.json index 41cdfe8281a..d88f8f42ae5 100644 --- a/core/l10n/ta_LK.json +++ b/core/l10n/ta_LK.json @@ -20,7 +20,6 @@ "December" : "மார்கழி", "Settings" : "அமைப்புகள்", "Saving..." : "சேமிக்கப்படுகிறது...", - "Reset password" : "மீளமைத்த கடவுச்சொல்", "No" : "இல்லை", "Yes" : "ஆம்", "Choose" : "தெரிவுசெய்க ", @@ -55,9 +54,8 @@ "Add" : "சேர்க்க", "_download %n file_::_download %n files_" : ["",""], "Use the following link to reset your password: {link}" : "உங்கள் கடவுச்சொல்லை மீளமைக்க பின்வரும் இணைப்பை பயன்படுத்தவும் : {இணைப்பு}", - "You will receive a link to reset your password via Email." : "நீங்கள் மின்னஞ்சல் மூலம் உங்களுடைய கடவுச்சொல்லை மீளமைப்பதற்கான இணைப்பை பெறுவீர்கள். ", - "Username" : "பயனாளர் பெயர்", "New password" : "புதிய கடவுச்சொல்", + "Reset password" : "மீளமைத்த கடவுச்சொல்", "Personal" : "தனிப்பட்ட", "Users" : "பயனாளர்", "Apps" : "செயலிகள்", @@ -66,6 +64,7 @@ "Access forbidden" : "அணுக தடை", "Security Warning" : "பாதுகாப்பு எச்சரிக்கை", "Create an <strong>admin account</strong>" : "<strong> நிர்வாக கணக்கொன்றை </strong> உருவாக்குக", + "Username" : "பயனாளர் பெயர்", "Password" : "கடவுச்சொல்", "Data folder" : "தரவு கோப்புறை", "Configure the database" : "தரவுத்தளத்தை தகவமைக்க", diff --git a/core/l10n/te.js b/core/l10n/te.js index 37dfe005efe..e4febdac9ca 100644 --- a/core/l10n/te.js +++ b/core/l10n/te.js @@ -35,11 +35,11 @@ OC.L10N.register( "Delete" : "తొలగించు", "Add" : "చేర్చు", "_download %n file_::_download %n files_" : ["",""], - "Username" : "వాడుకరి పేరు", "New password" : "కొత్త సంకేతపదం", "Personal" : "వ్యక్తిగతం", "Users" : "వాడుకరులు", "Help" : "సహాయం", + "Username" : "వాడుకరి పేరు", "Password" : "సంకేతపదం", "Log out" : "నిష్క్రమించు" }, diff --git a/core/l10n/te.json b/core/l10n/te.json index d8224f5ffa1..1f749883e2c 100644 --- a/core/l10n/te.json +++ b/core/l10n/te.json @@ -33,11 +33,11 @@ "Delete" : "తొలగించు", "Add" : "చేర్చు", "_download %n file_::_download %n files_" : ["",""], - "Username" : "వాడుకరి పేరు", "New password" : "కొత్త సంకేతపదం", "Personal" : "వ్యక్తిగతం", "Users" : "వాడుకరులు", "Help" : "సహాయం", + "Username" : "వాడుకరి పేరు", "Password" : "సంకేతపదం", "Log out" : "నిష్క్రమించు" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/core/l10n/th_TH.js b/core/l10n/th_TH.js index 7b65977d950..7cf97df4823 100644 --- a/core/l10n/th_TH.js +++ b/core/l10n/th_TH.js @@ -22,7 +22,6 @@ OC.L10N.register( "December" : "ธันวาคม", "Settings" : "ตั้งค่า", "Saving..." : "กำลังบันทึกข้อมูล...", - "Reset password" : "เปลี่ยนรหัสผ่าน", "No" : "ไม่ตกลง", "Yes" : "ตกลง", "Choose" : "เลือก", @@ -65,9 +64,8 @@ OC.L10N.register( "_download %n file_::_download %n files_" : [""], "The update was successful. Redirecting you to ownCloud now." : "การอัพเดทเสร็จเรียบร้อยแล้ว กำลังเปลี่ยนเส้นทางไปที่ ownCloud อยู่ในขณะนี้", "Use the following link to reset your password: {link}" : "ใช้ลิงค์ต่อไปนี้เพื่อเปลี่ยนรหัสผ่านของคุณใหม่: {link}", - "You will receive a link to reset your password via Email." : "คุณจะได้รับลิงค์เพื่อกำหนดรหัสผ่านใหม่ทางอีเมล์", - "Username" : "ชื่อผู้ใช้งาน", "New password" : "รหัสผ่านใหม่", + "Reset password" : "เปลี่ยนรหัสผ่าน", "Personal" : "ส่วนตัว", "Users" : "ผู้ใช้งาน", "Apps" : "แอปฯ", @@ -76,6 +74,7 @@ OC.L10N.register( "Access forbidden" : "การเข้าถึงถูกหวงห้าม", "Security Warning" : "คำเตือนเกี่ยวกับความปลอดภัย", "Create an <strong>admin account</strong>" : "สร้าง <strong>บัญชีผู้ดูแลระบบ</strong>", + "Username" : "ชื่อผู้ใช้งาน", "Password" : "รหัสผ่าน", "Data folder" : "โฟลเดอร์เก็บข้อมูล", "Configure the database" : "กำหนดค่าฐานข้อมูล", diff --git a/core/l10n/th_TH.json b/core/l10n/th_TH.json index 12457e67752..4237deb738a 100644 --- a/core/l10n/th_TH.json +++ b/core/l10n/th_TH.json @@ -20,7 +20,6 @@ "December" : "ธันวาคม", "Settings" : "ตั้งค่า", "Saving..." : "กำลังบันทึกข้อมูล...", - "Reset password" : "เปลี่ยนรหัสผ่าน", "No" : "ไม่ตกลง", "Yes" : "ตกลง", "Choose" : "เลือก", @@ -63,9 +62,8 @@ "_download %n file_::_download %n files_" : [""], "The update was successful. Redirecting you to ownCloud now." : "การอัพเดทเสร็จเรียบร้อยแล้ว กำลังเปลี่ยนเส้นทางไปที่ ownCloud อยู่ในขณะนี้", "Use the following link to reset your password: {link}" : "ใช้ลิงค์ต่อไปนี้เพื่อเปลี่ยนรหัสผ่านของคุณใหม่: {link}", - "You will receive a link to reset your password via Email." : "คุณจะได้รับลิงค์เพื่อกำหนดรหัสผ่านใหม่ทางอีเมล์", - "Username" : "ชื่อผู้ใช้งาน", "New password" : "รหัสผ่านใหม่", + "Reset password" : "เปลี่ยนรหัสผ่าน", "Personal" : "ส่วนตัว", "Users" : "ผู้ใช้งาน", "Apps" : "แอปฯ", @@ -74,6 +72,7 @@ "Access forbidden" : "การเข้าถึงถูกหวงห้าม", "Security Warning" : "คำเตือนเกี่ยวกับความปลอดภัย", "Create an <strong>admin account</strong>" : "สร้าง <strong>บัญชีผู้ดูแลระบบ</strong>", + "Username" : "ชื่อผู้ใช้งาน", "Password" : "รหัสผ่าน", "Data folder" : "โฟลเดอร์เก็บข้อมูล", "Configure the database" : "กำหนดค่าฐานข้อมูล", diff --git a/core/l10n/tr.js b/core/l10n/tr.js index 32144b5441c..37eab400dd4 100644 --- a/core/l10n/tr.js +++ b/core/l10n/tr.js @@ -39,7 +39,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Parolanızı değiştirme bağlantısı e-posta adresinize gönderildi. Makul bir süre içerisinde almadıysanız spam/gereksiz klasörlerini kontrol ediniz.<br>Bu konumlarda da yoksa yerel sistem yöneticinize sorunuz.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Dosyalarınız şifrelenmiş. Kurtarma anahtarını etkinleştirmemişseniz, parola sıfırlama işleminden sonra verilerinize erişmeniz imkansız olacak.<br />Ne yaptığınızdan emin değilseniz, devam etmeden önce sistem yöneticiniz ile iletişime geçin.<br />Gerçekten devam etmek istiyor musunuz?", "I know what I'm doing" : "Ne yaptığımı biliyorum", - "Reset password" : "Parolayı sıfırla", "Password can not be changed. Please contact your administrator." : "Parola değiştirilemedi. Lütfen yöneticiniz ile iletişime geçin.", "No" : "Hayır", "Yes" : "Evet", @@ -124,13 +123,9 @@ OC.L10N.register( "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Sıfırlama e-postası, bu kullanıcı için bir e-posta adresi olmadığından gönderilemedi. Lütfen yöneticiniz ile iletişime geçin.", "%s password reset" : "%s parola sıfırlama", "Use the following link to reset your password: {link}" : "Parolanızı sıfırlamak için bu bağlantıyı kullanın: {link}", - "You will receive a link to reset your password via Email." : "Parolanızı sıfırlamak için e-posta ile bir bağlantı alacaksınız.", - "Username" : "Kullanıcı Adı", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Dosyalarınız şifrelenmiş. Eğer kurtarma anahtarını etkinleştirmediyseniz parola sıfırlama işleminden sonra verilerinize erişmeniz imkansız olacak. Eğer ne yaptığınızdan emin değilseniz, devam etmeden önce sistem yöneticiniz ile iletişime geçin. Gerçekten devam etmek istiyor musunuz?", - "Yes, I really want to reset my password now" : "Evet, gerçekten parolamı şimdi sıfırlamak istiyorum", - "Reset" : "Sıfırla", "New password" : "Yeni parola", "New Password" : "Yeni Parola", + "Reset password" : "Parolayı sıfırla", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X desteklenmiyor ve %s bu platformda düzgün çalışmayacak. Kendi riskinizle kullanın!", "For the best results, please consider using a GNU/Linux server instead." : "En iyi sonuçlar için GNU/Linux sunucusu kullanın.", "Personal" : "Kişisel", @@ -170,6 +165,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Veri klasörünüz ve dosyalarınız .htaccess dosyası çalışmadığı için İnternet'ten erişime açık.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Sunucunuzu nasıl ayarlayacağınıza dair bilgi için, lütfen <a href=\"%s\" target=\"_blank\">belgelendirme sayfasını</a> ziyaret edin.", "Create an <strong>admin account</strong>" : "Bir <strong>yönetici hesabı</strong> oluşturun", + "Username" : "Kullanıcı Adı", "Password" : "Parola", "Storage & database" : "Depolama ve veritabanı", "Data folder" : "Veri klasörü", diff --git a/core/l10n/tr.json b/core/l10n/tr.json index c22d47c9e37..a34a07bd0e8 100644 --- a/core/l10n/tr.json +++ b/core/l10n/tr.json @@ -37,7 +37,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Parolanızı değiştirme bağlantısı e-posta adresinize gönderildi. Makul bir süre içerisinde almadıysanız spam/gereksiz klasörlerini kontrol ediniz.<br>Bu konumlarda da yoksa yerel sistem yöneticinize sorunuz.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Dosyalarınız şifrelenmiş. Kurtarma anahtarını etkinleştirmemişseniz, parola sıfırlama işleminden sonra verilerinize erişmeniz imkansız olacak.<br />Ne yaptığınızdan emin değilseniz, devam etmeden önce sistem yöneticiniz ile iletişime geçin.<br />Gerçekten devam etmek istiyor musunuz?", "I know what I'm doing" : "Ne yaptığımı biliyorum", - "Reset password" : "Parolayı sıfırla", "Password can not be changed. Please contact your administrator." : "Parola değiştirilemedi. Lütfen yöneticiniz ile iletişime geçin.", "No" : "Hayır", "Yes" : "Evet", @@ -122,13 +121,9 @@ "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Sıfırlama e-postası, bu kullanıcı için bir e-posta adresi olmadığından gönderilemedi. Lütfen yöneticiniz ile iletişime geçin.", "%s password reset" : "%s parola sıfırlama", "Use the following link to reset your password: {link}" : "Parolanızı sıfırlamak için bu bağlantıyı kullanın: {link}", - "You will receive a link to reset your password via Email." : "Parolanızı sıfırlamak için e-posta ile bir bağlantı alacaksınız.", - "Username" : "Kullanıcı Adı", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Dosyalarınız şifrelenmiş. Eğer kurtarma anahtarını etkinleştirmediyseniz parola sıfırlama işleminden sonra verilerinize erişmeniz imkansız olacak. Eğer ne yaptığınızdan emin değilseniz, devam etmeden önce sistem yöneticiniz ile iletişime geçin. Gerçekten devam etmek istiyor musunuz?", - "Yes, I really want to reset my password now" : "Evet, gerçekten parolamı şimdi sıfırlamak istiyorum", - "Reset" : "Sıfırla", "New password" : "Yeni parola", "New Password" : "Yeni Parola", + "Reset password" : "Parolayı sıfırla", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X desteklenmiyor ve %s bu platformda düzgün çalışmayacak. Kendi riskinizle kullanın!", "For the best results, please consider using a GNU/Linux server instead." : "En iyi sonuçlar için GNU/Linux sunucusu kullanın.", "Personal" : "Kişisel", @@ -168,6 +163,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Veri klasörünüz ve dosyalarınız .htaccess dosyası çalışmadığı için İnternet'ten erişime açık.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Sunucunuzu nasıl ayarlayacağınıza dair bilgi için, lütfen <a href=\"%s\" target=\"_blank\">belgelendirme sayfasını</a> ziyaret edin.", "Create an <strong>admin account</strong>" : "Bir <strong>yönetici hesabı</strong> oluşturun", + "Username" : "Kullanıcı Adı", "Password" : "Parola", "Storage & database" : "Depolama ve veritabanı", "Data folder" : "Veri klasörü", diff --git a/core/l10n/ug.js b/core/l10n/ug.js index d6a74751c7a..c71c67807c7 100644 --- a/core/l10n/ug.js +++ b/core/l10n/ug.js @@ -38,13 +38,13 @@ OC.L10N.register( "Delete" : "ئۆچۈر", "Add" : "قوش", "_download %n file_::_download %n files_" : [""], - "Username" : "ئىشلەتكۈچى ئاتى", "New password" : "يېڭى ئىم", "Personal" : "شەخسىي", "Users" : "ئىشلەتكۈچىلەر", "Apps" : "ئەپلەر", "Help" : "ياردەم", "Security Warning" : "بىخەتەرلىك ئاگاھلاندۇرۇش", + "Username" : "ئىشلەتكۈچى ئاتى", "Password" : "ئىم", "Finish setup" : "تەڭشەك تامام", "Log out" : "تىزىمدىن چىق" diff --git a/core/l10n/ug.json b/core/l10n/ug.json index bd061a85025..aadc8c1cf8b 100644 --- a/core/l10n/ug.json +++ b/core/l10n/ug.json @@ -36,13 +36,13 @@ "Delete" : "ئۆچۈر", "Add" : "قوش", "_download %n file_::_download %n files_" : [""], - "Username" : "ئىشلەتكۈچى ئاتى", "New password" : "يېڭى ئىم", "Personal" : "شەخسىي", "Users" : "ئىشلەتكۈچىلەر", "Apps" : "ئەپلەر", "Help" : "ياردەم", "Security Warning" : "بىخەتەرلىك ئاگاھلاندۇرۇش", + "Username" : "ئىشلەتكۈچى ئاتى", "Password" : "ئىم", "Finish setup" : "تەڭشەك تامام", "Log out" : "تىزىمدىن چىق" diff --git a/core/l10n/uk.js b/core/l10n/uk.js index a4ce73653df..cd444036896 100644 --- a/core/l10n/uk.js +++ b/core/l10n/uk.js @@ -39,7 +39,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Посилання для скидання вашого пароль було надіслано на ваш email. Якщо ви не отримали його найближчим часом, перевірте теку зі спамом.<br>Якщо і там немає, спитайте вашого місцевого адміністратора.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Ваші файли зашифровані. Якщо ви не зробили ключ відновлення, після скидання паролю відновити ваші дані буде неможливо.<br /> Якщо ви не знаєте, що робити, будь ласка, зверніться до адміністратора перед продовженням.<br /> Ви дійсно хочете продовжити?", "I know what I'm doing" : "Я знаю що роблю", - "Reset password" : "Скинути пароль", "Password can not be changed. Please contact your administrator." : "Пароль не може бути змінено. Будь ласка, зверніться до вашого адміністратора", "No" : "Ні", "Yes" : "Так", @@ -110,7 +109,11 @@ OC.L10N.register( "Edit tags" : "Редагувати теги", "Error loading dialog template: {error}" : "Помилка при завантаженні шаблону діалогу: {error}", "No tags selected for deletion." : "Жодних тегів не обрано для видалення.", - "_download %n file_::_download %n files_" : ["","",""], + "unknown text" : "невідомий текст", + "Hello world!" : "Привіт світ!", + "sunny" : "сонячно", + "Hello {name}, the weather is {weather}" : "Привіт {name}, {weather} погода", + "_download %n file_::_download %n files_" : ["завантяження %n файлу","завантаження %n файлів","завантаження %n файлів"], "Updating {productName} to version {version}, this may take a while." : "Оновлення {productName} до версії {version}, це може займати деякий час.", "Please reload the page." : "Будь ласка, перезавантажте сторінку.", "The update was unsuccessful." : "Оновлення завершилось невдачею.", @@ -120,13 +123,9 @@ OC.L10N.register( "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Не вдалося відправити скидання паролю, тому що немає адреси електронної пошти для цього користувача. Будь ласка, зверніться до адміністратора.", "%s password reset" : "%s пароль скинуто", "Use the following link to reset your password: {link}" : "Використовуйте наступне посилання для скидання пароля: {link}", - "You will receive a link to reset your password via Email." : "Ви отримаєте посилання для скидання вашого паролю на Ел. пошту.", - "Username" : "Ім'я користувача", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Ваші файли зашифровані. Якщо ви не зробили придатний ключ відновлення, не буде ніякої можливості отримати дані назад після того, як ваш пароль буде скинутий. Якщо ви не знаєте, що робити, будь ласка, зверніться до адміністратора, щоб продовжити. Ви дійсно хочете продовжити?", - "Yes, I really want to reset my password now" : "Так, я справді бажаю скинути мій пароль зараз", - "Reset" : "Перевстановити", "New password" : "Новий пароль", "New Password" : "Новий пароль", + "Reset password" : "Скинути пароль", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X не підтримується і %s не буде коректно працювати на цій платформі. Випробовуєте на свій риск!", "For the best results, please consider using a GNU/Linux server instead." : "Для кращих результатів розгляньте можливість використання GNU/Linux серверу", "Personal" : "Особисте", @@ -166,6 +165,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Ваші дані каталогів і файлів, ймовірно, доступні з інтернету, тому що .htaccess файл не працює.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Для отримання інформації, як правильно налаштувати сервер, див. <a href=\"%s\" target=\"_blank\">документацію</a>.", "Create an <strong>admin account</strong>" : "Створити <strong>обліковий запис адміністратора</strong>", + "Username" : "Ім'я користувача", "Password" : "Пароль", "Storage & database" : "Сховище і база даних", "Data folder" : "Каталог даних", diff --git a/core/l10n/uk.json b/core/l10n/uk.json index 885a797ee36..4e649b34ff4 100644 --- a/core/l10n/uk.json +++ b/core/l10n/uk.json @@ -37,7 +37,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Посилання для скидання вашого пароль було надіслано на ваш email. Якщо ви не отримали його найближчим часом, перевірте теку зі спамом.<br>Якщо і там немає, спитайте вашого місцевого адміністратора.", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Ваші файли зашифровані. Якщо ви не зробили ключ відновлення, після скидання паролю відновити ваші дані буде неможливо.<br /> Якщо ви не знаєте, що робити, будь ласка, зверніться до адміністратора перед продовженням.<br /> Ви дійсно хочете продовжити?", "I know what I'm doing" : "Я знаю що роблю", - "Reset password" : "Скинути пароль", "Password can not be changed. Please contact your administrator." : "Пароль не може бути змінено. Будь ласка, зверніться до вашого адміністратора", "No" : "Ні", "Yes" : "Так", @@ -108,7 +107,11 @@ "Edit tags" : "Редагувати теги", "Error loading dialog template: {error}" : "Помилка при завантаженні шаблону діалогу: {error}", "No tags selected for deletion." : "Жодних тегів не обрано для видалення.", - "_download %n file_::_download %n files_" : ["","",""], + "unknown text" : "невідомий текст", + "Hello world!" : "Привіт світ!", + "sunny" : "сонячно", + "Hello {name}, the weather is {weather}" : "Привіт {name}, {weather} погода", + "_download %n file_::_download %n files_" : ["завантяження %n файлу","завантаження %n файлів","завантаження %n файлів"], "Updating {productName} to version {version}, this may take a while." : "Оновлення {productName} до версії {version}, це може займати деякий час.", "Please reload the page." : "Будь ласка, перезавантажте сторінку.", "The update was unsuccessful." : "Оновлення завершилось невдачею.", @@ -118,13 +121,9 @@ "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "Не вдалося відправити скидання паролю, тому що немає адреси електронної пошти для цього користувача. Будь ласка, зверніться до адміністратора.", "%s password reset" : "%s пароль скинуто", "Use the following link to reset your password: {link}" : "Використовуйте наступне посилання для скидання пароля: {link}", - "You will receive a link to reset your password via Email." : "Ви отримаєте посилання для скидання вашого паролю на Ел. пошту.", - "Username" : "Ім'я користувача", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Ваші файли зашифровані. Якщо ви не зробили придатний ключ відновлення, не буде ніякої можливості отримати дані назад після того, як ваш пароль буде скинутий. Якщо ви не знаєте, що робити, будь ласка, зверніться до адміністратора, щоб продовжити. Ви дійсно хочете продовжити?", - "Yes, I really want to reset my password now" : "Так, я справді бажаю скинути мій пароль зараз", - "Reset" : "Перевстановити", "New password" : "Новий пароль", "New Password" : "Новий пароль", + "Reset password" : "Скинути пароль", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X не підтримується і %s не буде коректно працювати на цій платформі. Випробовуєте на свій риск!", "For the best results, please consider using a GNU/Linux server instead." : "Для кращих результатів розгляньте можливість використання GNU/Linux серверу", "Personal" : "Особисте", @@ -164,6 +163,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Ваші дані каталогів і файлів, ймовірно, доступні з інтернету, тому що .htaccess файл не працює.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Для отримання інформації, як правильно налаштувати сервер, див. <a href=\"%s\" target=\"_blank\">документацію</a>.", "Create an <strong>admin account</strong>" : "Створити <strong>обліковий запис адміністратора</strong>", + "Username" : "Ім'я користувача", "Password" : "Пароль", "Storage & database" : "Сховище і база даних", "Data folder" : "Каталог даних", diff --git a/core/l10n/ur.php b/core/l10n/ur.php deleted file mode 100644 index fdc6c81bd88..00000000000 --- a/core/l10n/ur.php +++ /dev/null @@ -1,6 +0,0 @@ -<?php -$TRANSLATIONS = array( -"_{count} file conflict_::_{count} file conflicts_" => array("",""), -"Error" => "خرابی" -); -$PLURAL_FORMS = "nplurals=2; plural=(n != 1);"; diff --git a/core/l10n/ur_PK.js b/core/l10n/ur_PK.js index ce5c57e5fdf..491309f60a9 100644 --- a/core/l10n/ur_PK.js +++ b/core/l10n/ur_PK.js @@ -29,7 +29,6 @@ OC.L10N.register( "December" : "دسمبر", "Settings" : "ترتیبات", "Saving..." : "محفوظ ھو رہا ہے ...", - "Reset password" : "ری سیٹ پاسورڈ", "No" : "نہیں", "Yes" : "ہاں", "Choose" : "منتخب کریں", @@ -90,11 +89,8 @@ OC.L10N.register( "Please reload the page." : "براہ مہربانی صفحہ دوبارہ لوڈ کریں.", "The update was successful. Redirecting you to ownCloud now." : "اپ ڈیٹ کامیاب تھی۔ اپ کو اون کلوڈ سے منسلک کیا جا رہا ہے", "Use the following link to reset your password: {link}" : "اپنا پاسورڈ ری سیٹ کرنے کے لیے اس لنک پر کلک کریں۔ {link}", - "You will receive a link to reset your password via Email." : "آپ ای میل کے ذریعے اپنے پاسورڈ ری سیٹ کا لنک موصول کریں گے", - "Username" : "یوزر نیم", - "Yes, I really want to reset my password now" : "جی ہاں، میں واقعی ابھی اپنا پاس ورڈ ری سیٹ کرنا چاہتا ہوں", - "Reset" : "ری سیٹ", "New password" : "نیا پاسورڈ", + "Reset password" : "ری سیٹ پاسورڈ", "Personal" : "شخصی", "Users" : "صارفین", "Apps" : "ایپز", @@ -107,6 +103,7 @@ OC.L10N.register( "Please update your PHP installation to use %s securely." : " براہ مہربانی %s کو بحفاظت استعمال کرنے کے پی ایچ پی کی تنصیب اپڈیٹ کریں", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "آپ کی ڈیٹا ڈائریکٹری اور فائلیں امکان ہےانٹرنیٹ سے قابل رسائی ہیں کیونکہ htaccess. فائل کام نہیں کرتا ہے", "Create an <strong>admin account</strong>" : "ایک<strong> ایڈمن اکاؤنٹ</strong> بنائیں", + "Username" : "یوزر نیم", "Password" : "پاسورڈ", "Storage & database" : "ذخیرہ اور ڈیٹا بیس", "Data folder" : "ڈیٹا فولڈر", diff --git a/core/l10n/ur_PK.json b/core/l10n/ur_PK.json index 6f3a5993a9f..138c67824f2 100644 --- a/core/l10n/ur_PK.json +++ b/core/l10n/ur_PK.json @@ -27,7 +27,6 @@ "December" : "دسمبر", "Settings" : "ترتیبات", "Saving..." : "محفوظ ھو رہا ہے ...", - "Reset password" : "ری سیٹ پاسورڈ", "No" : "نہیں", "Yes" : "ہاں", "Choose" : "منتخب کریں", @@ -88,11 +87,8 @@ "Please reload the page." : "براہ مہربانی صفحہ دوبارہ لوڈ کریں.", "The update was successful. Redirecting you to ownCloud now." : "اپ ڈیٹ کامیاب تھی۔ اپ کو اون کلوڈ سے منسلک کیا جا رہا ہے", "Use the following link to reset your password: {link}" : "اپنا پاسورڈ ری سیٹ کرنے کے لیے اس لنک پر کلک کریں۔ {link}", - "You will receive a link to reset your password via Email." : "آپ ای میل کے ذریعے اپنے پاسورڈ ری سیٹ کا لنک موصول کریں گے", - "Username" : "یوزر نیم", - "Yes, I really want to reset my password now" : "جی ہاں، میں واقعی ابھی اپنا پاس ورڈ ری سیٹ کرنا چاہتا ہوں", - "Reset" : "ری سیٹ", "New password" : "نیا پاسورڈ", + "Reset password" : "ری سیٹ پاسورڈ", "Personal" : "شخصی", "Users" : "صارفین", "Apps" : "ایپز", @@ -105,6 +101,7 @@ "Please update your PHP installation to use %s securely." : " براہ مہربانی %s کو بحفاظت استعمال کرنے کے پی ایچ پی کی تنصیب اپڈیٹ کریں", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "آپ کی ڈیٹا ڈائریکٹری اور فائلیں امکان ہےانٹرنیٹ سے قابل رسائی ہیں کیونکہ htaccess. فائل کام نہیں کرتا ہے", "Create an <strong>admin account</strong>" : "ایک<strong> ایڈمن اکاؤنٹ</strong> بنائیں", + "Username" : "یوزر نیم", "Password" : "پاسورڈ", "Storage & database" : "ذخیرہ اور ڈیٹا بیس", "Data folder" : "ڈیٹا فولڈر", diff --git a/core/l10n/vi.js b/core/l10n/vi.js index 5e48c7802d9..6c53239cdf4 100644 --- a/core/l10n/vi.js +++ b/core/l10n/vi.js @@ -31,7 +31,6 @@ OC.L10N.register( "December" : "Tháng 12", "Settings" : "Cài đặt", "Saving..." : "Đang lưu...", - "Reset password" : "Khôi phục mật khẩu", "No" : "Không", "Yes" : "Có", "Choose" : "Chọn", @@ -93,12 +92,8 @@ OC.L10N.register( "The update was successful. Redirecting you to ownCloud now." : "Cập nhật thành công .Hệ thống sẽ đưa bạn tới ownCloud.", "%s password reset" : "%s thiết lập lại mật khẩu", "Use the following link to reset your password: {link}" : "Dùng đường dẫn sau để khôi phục lại mật khẩu : {link}", - "You will receive a link to reset your password via Email." : "Vui lòng kiểm tra Email để khôi phục lại mật khẩu.", - "Username" : "Tên đăng nhập", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Tập tin của bạn được mã hóa. Nếu bạn chưa kích hoạt khoá phục hồi, sẽ không có cách nào để lấy lại được dữ liệu sau khi thiết lập lại mật khẩu. Nếu bạn không biết phải làm gì, xin vui lòng liên hệ với quản trị viên trước khi tiếp tục. Bạn có muốn tiếp tục?", - "Yes, I really want to reset my password now" : "Vâng, tôi muốn thiết lập lại mật khẩu ngay.", - "Reset" : "Khởi động lại", "New password" : "Mật khẩu mới", + "Reset password" : "Khôi phục mật khẩu", "Personal" : "Cá nhân", "Users" : "Người dùng", "Apps" : "Ứng dụng", @@ -119,6 +114,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Thư mục và file dữ liệu của bạn có thể được truy cập từ internet bởi vì file .htaccess không hoạt động", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Để biết thêm thông tin và cách cấu hình đúng vui lòng xem thêm <a href=\"%s\" target=\"_blank\">tài l</a>.", "Create an <strong>admin account</strong>" : "Tạo một <strong>tài khoản quản trị</strong>", + "Username" : "Tên đăng nhập", "Password" : "Mật khẩu", "Data folder" : "Thư mục dữ liệu", "Configure the database" : "Cấu hình cơ sở dữ liệu", diff --git a/core/l10n/vi.json b/core/l10n/vi.json index 7567c0a65bb..1670cad7777 100644 --- a/core/l10n/vi.json +++ b/core/l10n/vi.json @@ -29,7 +29,6 @@ "December" : "Tháng 12", "Settings" : "Cài đặt", "Saving..." : "Đang lưu...", - "Reset password" : "Khôi phục mật khẩu", "No" : "Không", "Yes" : "Có", "Choose" : "Chọn", @@ -91,12 +90,8 @@ "The update was successful. Redirecting you to ownCloud now." : "Cập nhật thành công .Hệ thống sẽ đưa bạn tới ownCloud.", "%s password reset" : "%s thiết lập lại mật khẩu", "Use the following link to reset your password: {link}" : "Dùng đường dẫn sau để khôi phục lại mật khẩu : {link}", - "You will receive a link to reset your password via Email." : "Vui lòng kiểm tra Email để khôi phục lại mật khẩu.", - "Username" : "Tên đăng nhập", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "Tập tin của bạn được mã hóa. Nếu bạn chưa kích hoạt khoá phục hồi, sẽ không có cách nào để lấy lại được dữ liệu sau khi thiết lập lại mật khẩu. Nếu bạn không biết phải làm gì, xin vui lòng liên hệ với quản trị viên trước khi tiếp tục. Bạn có muốn tiếp tục?", - "Yes, I really want to reset my password now" : "Vâng, tôi muốn thiết lập lại mật khẩu ngay.", - "Reset" : "Khởi động lại", "New password" : "Mật khẩu mới", + "Reset password" : "Khôi phục mật khẩu", "Personal" : "Cá nhân", "Users" : "Người dùng", "Apps" : "Ứng dụng", @@ -117,6 +112,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Thư mục và file dữ liệu của bạn có thể được truy cập từ internet bởi vì file .htaccess không hoạt động", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "Để biết thêm thông tin và cách cấu hình đúng vui lòng xem thêm <a href=\"%s\" target=\"_blank\">tài l</a>.", "Create an <strong>admin account</strong>" : "Tạo một <strong>tài khoản quản trị</strong>", + "Username" : "Tên đăng nhập", "Password" : "Mật khẩu", "Data folder" : "Thư mục dữ liệu", "Configure the database" : "Cấu hình cơ sở dữ liệu", diff --git a/core/l10n/zh_CN.js b/core/l10n/zh_CN.js index da5521925ea..8a432e857ff 100644 --- a/core/l10n/zh_CN.js +++ b/core/l10n/zh_CN.js @@ -39,7 +39,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "密码重置邮件已经发送到您的电子邮箱中。如果您长时间没能收到邮件,请检查您的垃圾/广告邮件箱。<br>如果未能收到邮件请联系管理员。", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "您的文件已被加密。如果您没有启用恢复密钥,密码重置后您将无法取回您的文件。<br />在继续之前,如果有疑问请联系您的管理员。<br />确认继续?", "I know what I'm doing" : "我知道我在做什么", - "Reset password" : "重置密码", "Password can not be changed. Please contact your administrator." : "无法修改密码,请联系管理员。", "No" : "否", "Yes" : "是", @@ -120,13 +119,9 @@ OC.L10N.register( "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "此用户名的电子邮件地址不存在导致无法发送重置邮件,请联系管理员。", "%s password reset" : "重置 %s 的密码", "Use the following link to reset your password: {link}" : "使用以下链接重置您的密码:{link}", - "You will receive a link to reset your password via Email." : "您将会收到包含可以重置密码链接的邮件。", - "Username" : "用户名", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "您的文件已加密。如果您不启用恢复密钥,您将无法在重设密码后取回文件。如果您不太确定,请在继续前联系您的管理员。您真的要继续吗?", - "Yes, I really want to reset my password now" : "使得,我真的要现在重设密码", - "Reset" : "重置", "New password" : "新密码", "New Password" : "新密码", + "Reset password" : "重置密码", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X 不被支持并且 %s 在这个平台上无法正常工作。请自行承担风险!", "For the best results, please consider using a GNU/Linux server instead." : "为了达到最好的效果,请考虑使用 GNU/Linux 服务器。", "Personal" : "个人", @@ -165,6 +160,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "您的数据目录和文件可能可以直接被互联网访问,因为 .htaccess 并未正常工作。", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "关于如何配置服务器,请参见 <a href=\"%s\" target=\"_blank\">此文档</a>。", "Create an <strong>admin account</strong>" : "创建<strong>管理员账号</strong>", + "Username" : "用户名", "Password" : "密码", "Storage & database" : "存储 & 数据库", "Data folder" : "数据目录", diff --git a/core/l10n/zh_CN.json b/core/l10n/zh_CN.json index ff67feacad0..7f2aa70e0cd 100644 --- a/core/l10n/zh_CN.json +++ b/core/l10n/zh_CN.json @@ -37,7 +37,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "密码重置邮件已经发送到您的电子邮箱中。如果您长时间没能收到邮件,请检查您的垃圾/广告邮件箱。<br>如果未能收到邮件请联系管理员。", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "您的文件已被加密。如果您没有启用恢复密钥,密码重置后您将无法取回您的文件。<br />在继续之前,如果有疑问请联系您的管理员。<br />确认继续?", "I know what I'm doing" : "我知道我在做什么", - "Reset password" : "重置密码", "Password can not be changed. Please contact your administrator." : "无法修改密码,请联系管理员。", "No" : "否", "Yes" : "是", @@ -118,13 +117,9 @@ "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "此用户名的电子邮件地址不存在导致无法发送重置邮件,请联系管理员。", "%s password reset" : "重置 %s 的密码", "Use the following link to reset your password: {link}" : "使用以下链接重置您的密码:{link}", - "You will receive a link to reset your password via Email." : "您将会收到包含可以重置密码链接的邮件。", - "Username" : "用户名", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "您的文件已加密。如果您不启用恢复密钥,您将无法在重设密码后取回文件。如果您不太确定,请在继续前联系您的管理员。您真的要继续吗?", - "Yes, I really want to reset my password now" : "使得,我真的要现在重设密码", - "Reset" : "重置", "New password" : "新密码", "New Password" : "新密码", + "Reset password" : "重置密码", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X 不被支持并且 %s 在这个平台上无法正常工作。请自行承担风险!", "For the best results, please consider using a GNU/Linux server instead." : "为了达到最好的效果,请考虑使用 GNU/Linux 服务器。", "Personal" : "个人", @@ -163,6 +158,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "您的数据目录和文件可能可以直接被互联网访问,因为 .htaccess 并未正常工作。", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "关于如何配置服务器,请参见 <a href=\"%s\" target=\"_blank\">此文档</a>。", "Create an <strong>admin account</strong>" : "创建<strong>管理员账号</strong>", + "Username" : "用户名", "Password" : "密码", "Storage & database" : "存储 & 数据库", "Data folder" : "数据目录", diff --git a/core/l10n/zh_HK.js b/core/l10n/zh_HK.js index c36746e12fc..9e4ef8969d8 100644 --- a/core/l10n/zh_HK.js +++ b/core/l10n/zh_HK.js @@ -22,7 +22,6 @@ OC.L10N.register( "December" : "十二月", "Settings" : "設定", "Saving..." : "儲存中...", - "Reset password" : "重設密碼", "No" : "否", "Yes" : "是", "Ok" : "確認", @@ -54,17 +53,16 @@ OC.L10N.register( "_download %n file_::_download %n files_" : [""], "The update was successful. Redirecting you to ownCloud now." : "更新成功, 正", "Use the following link to reset your password: {link}" : "請用以下連結重設你的密碼: {link}", - "You will receive a link to reset your password via Email." : "你將收到一封電郵", - "Username" : "用戶名稱", - "Reset" : "重設", "New password" : "新密碼", "New Password" : "新密碼", + "Reset password" : "重設密碼", "Personal" : "個人", "Users" : "用戶", "Apps" : "軟件", "Admin" : "管理", "Help" : "幫助", "Create an <strong>admin account</strong>" : "建立管理員帳戶", + "Username" : "用戶名稱", "Password" : "密碼", "Configure the database" : "設定資料庫", "Database user" : "資料庫帳戶", diff --git a/core/l10n/zh_HK.json b/core/l10n/zh_HK.json index 294bdce33b6..83806390d1f 100644 --- a/core/l10n/zh_HK.json +++ b/core/l10n/zh_HK.json @@ -20,7 +20,6 @@ "December" : "十二月", "Settings" : "設定", "Saving..." : "儲存中...", - "Reset password" : "重設密碼", "No" : "否", "Yes" : "是", "Ok" : "確認", @@ -52,17 +51,16 @@ "_download %n file_::_download %n files_" : [""], "The update was successful. Redirecting you to ownCloud now." : "更新成功, 正", "Use the following link to reset your password: {link}" : "請用以下連結重設你的密碼: {link}", - "You will receive a link to reset your password via Email." : "你將收到一封電郵", - "Username" : "用戶名稱", - "Reset" : "重設", "New password" : "新密碼", "New Password" : "新密碼", + "Reset password" : "重設密碼", "Personal" : "個人", "Users" : "用戶", "Apps" : "軟件", "Admin" : "管理", "Help" : "幫助", "Create an <strong>admin account</strong>" : "建立管理員帳戶", + "Username" : "用戶名稱", "Password" : "密碼", "Configure the database" : "設定資料庫", "Database user" : "資料庫帳戶", diff --git a/core/l10n/zh_TW.js b/core/l10n/zh_TW.js index 47a9f738ed0..2a3e38d6ff8 100644 --- a/core/l10n/zh_TW.js +++ b/core/l10n/zh_TW.js @@ -39,7 +39,6 @@ OC.L10N.register( "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "重設密碼的連結已經 email 至你的信箱,如果你在一段時間內沒收到,請檢查垃圾郵件資料夾,如果還是找不到,請聯絡系統管理員。", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "您的檔案是加密的,如果您沒有啟用救援金鑰,當您重設密碼之後將無法存取您的資料。<br/>如果不確定該怎麼做,請聯絡您的系統管理員。<br/>您確定要繼續嗎?", "I know what I'm doing" : "我知道我在幹嘛", - "Reset password" : "重設密碼", "Password can not be changed. Please contact your administrator." : "無法變更密碼,請聯絡您的系統管理員", "No" : "否", "Yes" : "是", @@ -120,13 +119,9 @@ OC.L10N.register( "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "無法寄送重設 email ,因為這個帳號沒有設定 email 地址,請聯絡您的系統管理員", "%s password reset" : "%s 密碼重設", "Use the following link to reset your password: {link}" : "請至以下連結重設您的密碼: {link}", - "You will receive a link to reset your password via Email." : "重設密碼的連結將會寄到您的電子郵件信箱。", - "Username" : "使用者名稱", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "您的檔案已加密,如果您沒有設定還原金鑰,未來重設密碼後將無法取回您的資料。如果您不確定該怎麼做,請洽詢系統管理員後再繼續。您確定要現在繼續嗎?", - "Yes, I really want to reset my password now" : "對,我現在想要重設我的密碼。", - "Reset" : "重設", "New password" : "新密碼", "New Password" : "新密碼", + "Reset password" : "重設密碼", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "不支援 Mac OS X 而且 %s 在這個平台上面無法正常運作,請自行衡量風險!", "For the best results, please consider using a GNU/Linux server instead." : "請考慮使用 GNU/Linux 伺服器以取得最好的效果", "Personal" : "個人", @@ -165,6 +160,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "您的資料目錄看起來可以被 Internet 公開存取,因為 .htaccess 設定並未生效。", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "請參考<a href=\"%s\" target=\"_blank\">說明文件</a>以瞭解如何正確設定您的伺服器。", "Create an <strong>admin account</strong>" : "建立一個<strong>管理者帳號</strong>", + "Username" : "使用者名稱", "Password" : "密碼", "Storage & database" : "儲存空間和資料庫", "Data folder" : "資料儲存位置", diff --git a/core/l10n/zh_TW.json b/core/l10n/zh_TW.json index 875b5b5af4a..c8db6e348c7 100644 --- a/core/l10n/zh_TW.json +++ b/core/l10n/zh_TW.json @@ -37,7 +37,6 @@ "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "重設密碼的連結已經 email 至你的信箱,如果你在一段時間內沒收到,請檢查垃圾郵件資料夾,如果還是找不到,請聯絡系統管理員。", "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "您的檔案是加密的,如果您沒有啟用救援金鑰,當您重設密碼之後將無法存取您的資料。<br/>如果不確定該怎麼做,請聯絡您的系統管理員。<br/>您確定要繼續嗎?", "I know what I'm doing" : "我知道我在幹嘛", - "Reset password" : "重設密碼", "Password can not be changed. Please contact your administrator." : "無法變更密碼,請聯絡您的系統管理員", "No" : "否", "Yes" : "是", @@ -118,13 +117,9 @@ "Couldn't send reset email because there is no email address for this username. Please contact your administrator." : "無法寄送重設 email ,因為這個帳號沒有設定 email 地址,請聯絡您的系統管理員", "%s password reset" : "%s 密碼重設", "Use the following link to reset your password: {link}" : "請至以下連結重設您的密碼: {link}", - "You will receive a link to reset your password via Email." : "重設密碼的連結將會寄到您的電子郵件信箱。", - "Username" : "使用者名稱", - "Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" : "您的檔案已加密,如果您沒有設定還原金鑰,未來重設密碼後將無法取回您的資料。如果您不確定該怎麼做,請洽詢系統管理員後再繼續。您確定要現在繼續嗎?", - "Yes, I really want to reset my password now" : "對,我現在想要重設我的密碼。", - "Reset" : "重設", "New password" : "新密碼", "New Password" : "新密碼", + "Reset password" : "重設密碼", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "不支援 Mac OS X 而且 %s 在這個平台上面無法正常運作,請自行衡量風險!", "For the best results, please consider using a GNU/Linux server instead." : "請考慮使用 GNU/Linux 伺服器以取得最好的效果", "Personal" : "個人", @@ -163,6 +158,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "您的資料目錄看起來可以被 Internet 公開存取,因為 .htaccess 設定並未生效。", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." : "請參考<a href=\"%s\" target=\"_blank\">說明文件</a>以瞭解如何正確設定您的伺服器。", "Create an <strong>admin account</strong>" : "建立一個<strong>管理者帳號</strong>", + "Username" : "使用者名稱", "Password" : "密碼", "Storage & database" : "儲存空間和資料庫", "Data folder" : "資料儲存位置", diff --git a/core/lostpassword/controller/lostcontroller.php b/core/lostpassword/controller/lostcontroller.php index e4d51fde077..aee4001ed37 100644 --- a/core/lostpassword/controller/lostcontroller.php +++ b/core/lostpassword/controller/lostcontroller.php @@ -9,68 +9,73 @@ namespace OC\Core\LostPassword\Controller; use \OCP\AppFramework\Controller; -use \OCP\AppFramework\Http\JSONResponse; use \OCP\AppFramework\Http\TemplateResponse; use \OCP\IURLGenerator; use \OCP\IRequest; use \OCP\IL10N; use \OCP\IConfig; -use \OCP\IUserSession; -use \OC\Core\LostPassword\EncryptedDataException; +use OCP\IUserManager; +use OCP\Security\ISecureRandom; +use \OC_Defaults; +use OCP\Security\StringUtils; +/** + * Class LostController + * + * Successfully changing a password will emit the post_passwordReset hook. + * + * @package OC\Core\LostPassword\Controller + */ class LostController extends Controller { - /** - * @var \OCP\IURLGenerator - */ + /** @var IURLGenerator */ protected $urlGenerator; - - /** - * @var \OCP\IUserManager - */ + /** @var IUserManager */ protected $userManager; - - /** - * @var \OC_Defaults - */ + /** @var OC_Defaults */ protected $defaults; - - /** - * @var IL10N - */ + /** @var IL10N */ protected $l10n; + /** @var string */ protected $from; + /** @var bool */ protected $isDataEncrypted; - - /** - * @var IConfig - */ + /** @var IConfig */ protected $config; + /** @var ISecureRandom */ + protected $secureRandom; /** - * @var IUserSession + * @param string $appName + * @param IRequest $request + * @param IURLGenerator $urlGenerator + * @param IUserManager $userManager + * @param OC_Defaults $defaults + * @param IL10N $l10n + * @param IConfig $config + * @param ISecureRandom $secureRandom + * @param string $from + * @param string $isDataEncrypted */ - protected $userSession; - public function __construct($appName, - IRequest $request, - IURLGenerator $urlGenerator, - $userManager, - $defaults, - IL10N $l10n, - IConfig $config, - IUserSession $userSession, - $from, - $isDataEncrypted) { + IRequest $request, + IURLGenerator $urlGenerator, + IUserManager $userManager, + OC_Defaults $defaults, + IL10N $l10n, + IConfig $config, + ISecureRandom $secureRandom, + $from, + $isDataEncrypted) { parent::__construct($appName, $request); $this->urlGenerator = $urlGenerator; $this->userManager = $userManager; $this->defaults = $defaults; $this->l10n = $l10n; + $this->secureRandom = $secureRandom; $this->from = $from; $this->isDataEncrypted = $isDataEncrypted; $this->config = $config; - $this->userSession = $userSession; } /** @@ -81,23 +86,31 @@ class LostController extends Controller { * * @param string $token * @param string $userId + * @return TemplateResponse */ public function resetform($token, $userId) { return new TemplateResponse( 'core/lostpassword', 'resetpassword', array( - 'isEncrypted' => $this->isDataEncrypted, - 'link' => $this->getLink('core.lost.setPassword', $userId, $token), + 'link' => $this->urlGenerator->linkToRouteAbsolute('core.lost.setPassword', array('userId' => $userId, 'token' => $token)), ), 'guest' ); } + /** + * @param $message + * @param array $additional + * @return array + */ private function error($message, array $additional=array()) { return array_merge(array('status' => 'error', 'msg' => $message), $additional); } + /** + * @return array + */ private function success() { return array('status'=>'success'); } @@ -106,14 +119,12 @@ class LostController extends Controller { * @PublicPage * * @param string $user - * @param bool $proceed + * @return array */ - public function email($user, $proceed){ + public function email($user){ // FIXME: use HTTP error codes try { - $this->sendEmail($user, $proceed); - } catch (EncryptedDataException $e){ - return $this->error('', array('encryption' => '1')); + $this->sendEmail($user); } catch (\Exception $e){ return $this->error($e->getMessage()); } @@ -121,15 +132,23 @@ class LostController extends Controller { return $this->success(); } - /** * @PublicPage + * @param string $token + * @param string $userId + * @param string $password + * @param boolean $proceed + * @return array */ - public function setPassword($token, $userId, $password) { + public function setPassword($token, $userId, $password, $proceed) { + if ($this->isDataEncrypted && !$proceed){ + return $this->error('', array('encryption' => true)); + } + try { $user = $this->userManager->get($userId); - if (!$this->checkToken($userId, $token)) { + if (!StringUtils::equals($this->config->getUserValue($userId, 'owncloud', 'lostpassword'), $token)) { throw new \Exception($this->l10n->t('Couldn\'t reset password because the token is invalid')); } @@ -137,9 +156,10 @@ class LostController extends Controller { throw new \Exception(); } - // FIXME: should be added to the all config at some point - \OC_Preferences::deleteKey($userId, 'owncloud', 'lostpassword'); - $this->userSession->unsetMagicInCookie(); + \OC_Hook::emit('\OC\Core\LostPassword\Controller\LostController', 'post_passwordReset', array('uid' => $userId, 'password' => $password)); + + $this->config->deleteUserValue($userId, 'owncloud', 'lostpassword'); + @\OC_User::unsetMagicInCookie(); } catch (\Exception $e){ return $this->error($e->getMessage()); @@ -148,36 +168,32 @@ class LostController extends Controller { return $this->success(); } - - protected function sendEmail($user, $proceed) { - if ($this->isDataEncrypted && !$proceed){ - throw new EncryptedDataException(); - } - + /** + * @param string $user + * @throws \Exception + */ + protected function sendEmail($user) { if (!$this->userManager->userExists($user)) { - throw new \Exception( - $this->l10n->t('Couldn\'t send reset email. Please make sure '. - 'your username is correct.')); + throw new \Exception($this->l10n->t('Couldn\'t send reset email. Please make sure your username is correct.')); } - $token = hash('sha256', \OC_Util::generateRandomBytes(30)); - - // Hash the token again to prevent timing attacks - $this->config->setUserValue( - $user, 'owncloud', 'lostpassword', hash('sha256', $token) - ); - $email = $this->config->getUserValue($user, 'settings', 'email'); if (empty($email)) { throw new \Exception( $this->l10n->t('Couldn\'t send reset email because there is no '. - 'email address for this username. Please ' . - 'contact your administrator.') + 'email address for this username. Please ' . + 'contact your administrator.') ); } - $link = $this->getLink('core.lost.resetform', $user, $token); + $token = $this->secureRandom->getMediumStrengthGenerator()->generate(21, + ISecureRandom::CHAR_DIGITS. + ISecureRandom::CHAR_LOWER. + ISecureRandom::CHAR_UPPER); + $this->config->setUserValue($user, 'owncloud', 'lostpassword', $token); + + $link = $this->urlGenerator->linkToRouteAbsolute('core.lost.resetform', array('userId' => $user, 'token' => $token)); $tmpl = new \OC_Template('core/lostpassword', 'email'); $tmpl->assign('link', $link, false); @@ -200,23 +216,4 @@ class LostController extends Controller { } } - - protected function getLink($route, $user, $token){ - $parameters = array( - 'token' => $token, - 'userId' => $user - ); - $link = $this->urlGenerator->linkToRoute($route, $parameters); - - return $this->urlGenerator->getAbsoluteUrl($link); - } - - - protected function checkToken($user, $token) { - return $this->config->getUserValue( - $user, 'owncloud', 'lostpassword' - ) === hash('sha256', $token); - } - - } diff --git a/core/lostpassword/css/resetpassword.css b/core/lostpassword/css/resetpassword.css index 012af672d97..29a7e875537 100644 --- a/core/lostpassword/css/resetpassword.css +++ b/core/lostpassword/css/resetpassword.css @@ -2,6 +2,10 @@ position: relative; } +.text-center { + text-align: center; +} + #password-icon { top: 20px; } diff --git a/core/lostpassword/encrypteddataexception.php b/core/lostpassword/encrypteddataexception.php deleted file mode 100644 index 99d19445b6c..00000000000 --- a/core/lostpassword/encrypteddataexception.php +++ /dev/null @@ -1,14 +0,0 @@ -<?php -/** - * @author Victor Dubiniuk - * @copyright 2013 Victor Dubiniuk victor.dubiniuk@gmail.com - * - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - -namespace OC\Core\LostPassword; - -class EncryptedDataException extends \Exception{ -} diff --git a/core/lostpassword/templates/lostpassword.php b/core/lostpassword/templates/lostpassword.php deleted file mode 100644 index 00dd139e71f..00000000000 --- a/core/lostpassword/templates/lostpassword.php +++ /dev/null @@ -1,20 +0,0 @@ -<?php -//load the file we need -OCP\Util::addStyle('lostpassword', 'lostpassword'); ?> -<form action="<?php print_unescaped($_['link']) ?>" method="post"> - <fieldset> - <div class="update"><?php p($l->t('You will receive a link to reset your password via Email.')); ?></div> - <p> - <input type="text" name="user" id="user" placeholder="<?php p($l->t( 'Username' )); ?>" value="" autocomplete="off" required autofocus /> - <label for="user" class="infield"><?php p($l->t( 'Username' )); ?></label> - <img class="svg" src="<?php print_unescaped(image_path('', 'actions/user.svg')); ?>" alt=""/> - <?php if ($_['isEncrypted']): ?> - <br /> - <p class="warning"><?php p($l->t("Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?")); ?><br /> - <input type="checkbox" name="continue" value="Yes" /> - <?php p($l->t('Yes, I really want to reset my password now')); ?></p> - <?php endif; ?> - </p> - <input type="submit" id="submit" value="<?php p($l->t('Reset')); ?>" /> - </fieldset> -</form> diff --git a/core/lostpassword/templates/resetpassword.php b/core/lostpassword/templates/resetpassword.php index 118fe787116..498c692f12e 100644 --- a/core/lostpassword/templates/resetpassword.php +++ b/core/lostpassword/templates/resetpassword.php @@ -1,4 +1,10 @@ -<?php OCP\Util::addStyle('lostpassword', 'resetpassword'); ?> +<?php +/** @var array $_ */ +/** @var $l OC_L10N */ +style('lostpassword', 'resetpassword'); +script('core', 'lostpassword'); +?> + <form action="<?php print_unescaped($_['link']) ?>" id="reset-password" method="post"> <fieldset> <p> @@ -7,6 +13,8 @@ <img class="svg" id="password-icon" src="<?php print_unescaped(image_path('', 'actions/password.svg')); ?>" alt=""/> </p> <input type="submit" id="submit" value="<?php p($l->t('Reset password')); ?>" /> + <p class="text-center"> + <img class="hidden" id="float-spinner" src="<?php p(\OCP\Util::imagePath('core', 'loading-dark.gif'));?>"/> + </p> </fieldset> </form> -<?php OCP\Util::addScript('core', 'lostpassword'); ?> diff --git a/core/register_command.php b/core/register_command.php index c5d9b6e342d..8f79473ced8 100644 --- a/core/register_command.php +++ b/core/register_command.php @@ -11,14 +11,14 @@ $repair = new \OC\Repair(\OC\Repair::getRepairSteps()); /** @var $application Symfony\Component\Console\Application */ $application->add(new OC\Core\Command\Status); $application->add(new OC\Core\Command\Db\GenerateChangeScript()); -$application->add(new OC\Core\Command\Db\ConvertType(OC_Config::getObject(), new \OC\DB\ConnectionFactory())); +$application->add(new OC\Core\Command\Db\ConvertType(\OC::$server->getConfig(), new \OC\DB\ConnectionFactory())); $application->add(new OC\Core\Command\Upgrade(\OC::$server->getConfig())); $application->add(new OC\Core\Command\Maintenance\SingleUser()); -$application->add(new OC\Core\Command\Maintenance\Mode(OC_Config::getObject())); +$application->add(new OC\Core\Command\Maintenance\Mode(\OC::$server->getConfig())); $application->add(new OC\Core\Command\App\Disable()); $application->add(new OC\Core\Command\App\Enable()); $application->add(new OC\Core\Command\App\ListApps()); -$application->add(new OC\Core\Command\Maintenance\Repair($repair, OC_Config::getObject())); +$application->add(new OC\Core\Command\Maintenance\Repair($repair, \OC::$server->getConfig())); $application->add(new OC\Core\Command\User\Report()); $application->add(new OC\Core\Command\User\ResetPassword(\OC::$server->getUserManager())); $application->add(new OC\Core\Command\User\LastSeen()); diff --git a/core/routes.php b/core/routes.php index 92545d0322e..ced70898f50 100644 --- a/core/routes.php +++ b/core/routes.php @@ -95,9 +95,22 @@ $this->create('core_avatar_post_cropped', '/avatar/cropped') ->action('OC\Core\Avatar\Controller', 'postCroppedAvatar'); // Sharing routes -$this->create('core_share_show_share', '/s/{token}') - ->get() - ->action('OC\Core\Share\Controller', 'showShare'); +$this->create('files_sharing.sharecontroller.showShare', '/s/{token}')->action(function($urlParams) { + $app = new \OCA\Files_Sharing\Application($urlParams); + $app->dispatch('ShareController', 'showShare'); +}); +$this->create('files_sharing.sharecontroller.authenticate', '/s/{token}/authenticate')->post()->action(function($urlParams) { + $app = new \OCA\Files_Sharing\Application($urlParams); + $app->dispatch('ShareController', 'authenticate'); +}); +$this->create('files_sharing.sharecontroller.showAuthenticate', '/s/{token}/authenticate')->get()->action(function($urlParams) { + $app = new \OCA\Files_Sharing\Application($urlParams); + $app->dispatch('ShareController', 'showAuthenticate'); +}); +$this->create('files_sharing.sharecontroller.downloadShare', '/s/{token}/download')->get()->action(function($urlParams) { + $app = new \OCA\Files_Sharing\Application($urlParams); + $app->dispatch('ShareController', 'downloadShare'); +}); // used for heartbeat $this->create('heartbeat', '/heartbeat')->action(function(){ diff --git a/core/setup/controller.php b/core/setup/controller.php index 0722a2b13c3..5a52b18f73b 100644 --- a/core/setup/controller.php +++ b/core/setup/controller.php @@ -12,13 +12,21 @@ namespace OC\Core\Setup; use OCP\IConfig; class Controller { - /** @var \OCP\IConfig */ + /** + * @var \OCP\IConfig + */ protected $config; /** + * @var string + */ + private $autoConfigFile; + + /** * @param IConfig $config */ function __construct(IConfig $config) { + $this->autoConfigFile = \OC::$SERVERROOT.'/config/autoconfig.php'; $this->config = $config; } @@ -64,15 +72,17 @@ class Controller { } public function finishSetup() { + if( file_exists( $this->autoConfigFile )) { + unlink($this->autoConfigFile); + } \OC_Util::redirectToDefaultPage(); } public function loadAutoConfig($post) { - $autosetup_file = \OC::$SERVERROOT.'/config/autoconfig.php'; - if( file_exists( $autosetup_file )) { + if( file_exists($this->autoConfigFile)) { \OC_Log::write('core', 'Autoconfig file found, setting up owncloud...', \OC_Log::INFO); $AUTOCONFIG = array(); - include $autosetup_file; + include $this->autoConfigFile; $post = array_merge ($post, $AUTOCONFIG); } @@ -82,9 +92,6 @@ class Controller { if ($dbIsSet AND $directoryIsSet AND $adminAccountIsSet) { $post['install'] = 'true'; - if( file_exists( $autosetup_file )) { - unlink($autosetup_file); - } } $post['dbIsSet'] = $dbIsSet; $post['directoryIsSet'] = $directoryIsSet; @@ -147,7 +154,7 @@ class Controller { return array( 'hasSQLite' => isset($databases['sqlite']), 'hasMySQL' => isset($databases['mysql']), - 'hasPostgreSQL' => isset($databases['postgre']), + 'hasPostgreSQL' => isset($databases['pgsql']), 'hasOracle' => isset($databases['oci']), 'hasMSSQL' => isset($databases['mssql']), 'databases' => $databases, diff --git a/core/share/controller.php b/core/share/controller.php deleted file mode 100644 index c1741af0d98..00000000000 --- a/core/share/controller.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Christopher Schäpers <christopher@schaepers.it> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - -namespace OC\Core\Share; - -class Controller { - public static function showShare($args) { - \OC_Util::checkAppEnabled('files_sharing'); - - $token = $args['token']; - - \OC_App::loadApp('files_sharing'); - \OC_User::setIncognitoMode(true); - - require_once \OC_App::getAppPath('files_sharing') .'/public.php'; - } -} -?> diff --git a/core/templates/layout.guest.php b/core/templates/layout.guest.php index 763af4dc1d2..34d7a210841 100644 --- a/core/templates/layout.guest.php +++ b/core/templates/layout.guest.php @@ -31,7 +31,9 @@ <?php if ($_['bodyid'] === 'body-login' ): ?> <header> <div id="header"> - <div class="logo svg"></div> + <div class="logo svg"> + <h1><?php p($theme->getName()); ?></h1> + </div> <div id="logo-claim" style="display:none;"><?php p($theme->getLogoClaim()); ?></div> </div> </header> diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php index f7f2b3dc735..d8129ecfc67 100644 --- a/core/templates/layout.user.php +++ b/core/templates/layout.user.php @@ -43,8 +43,8 @@ <a href="<?php print_unescaped(link_to('', 'index.php')); ?>" title="" id="owncloud"> <div class="logo-icon svg"></div> </a> - <a href="#" class="menutoggle"> - <div class="header-appname"> + <a href="#" class="menutoggle" tabindex="1"> + <h1 class="header-appname"> <?php if(OC_Util::getEditionString() === '') { p(!empty($_['application'])?$_['application']: $l->t('Apps')); @@ -52,12 +52,12 @@ print_unescaped($theme->getHTMLName()); } ?> - </div> + </h1> <div class="icon-caret svg"></div> </a> <div id="logo-claim" style="display:none;"><?php p($theme->getLogoClaim()); ?></div> <div id="settings" class="svg"> - <div id="expand" tabindex="0" role="link"> + <div id="expand" tabindex="3" role="link"> <?php if ($_['enableAvatars']): ?> <div class="avatardiv<?php if ($_['userAvatarSet']) { print_unescaped(' avatardiv-shown"'); } else { print_unescaped('" style="display: none"'); } ?>> <?php if ($_['userAvatarSet']): ?> @@ -92,7 +92,7 @@ <form class="searchbox" action="#" method="post"> <input id="searchbox" class="svg" type="search" name="query" value="<?php if(isset($_POST['query'])) {p($_POST['query']);};?>" - autocomplete="off" /> + autocomplete="off" tabindex="2" /> </form> </div></header> diff --git a/core/templates/login.php b/core/templates/login.php index ad9db14bac1..425c3db75c8 100644 --- a/core/templates/login.php +++ b/core/templates/login.php @@ -14,7 +14,8 @@ </div> <?php endif; ?> <p id="message" class="hidden"> - <img class="float-spinner" src="<?php p(\OCP\Util::imagePath('core', 'loading-dark.gif'));?>"/> + <img class="float-spinner" alt="" + src="<?php p(\OCP\Util::imagePath('core', 'loading-dark.gif'));?>" /> <span id="messageText"></span> <!-- the following div ensures that the spinner is always inside the #message div --> <div style="clear: both;"></div> diff --git a/l10n/.gitignore b/l10n/.gitignore index 6d609cec52b..72ab4b0e236 100644 --- a/l10n/.gitignore +++ b/l10n/.gitignore @@ -1 +1,2 @@ *.po +*.pot diff --git a/l10n/templates/core.pot b/l10n/templates/core.pot deleted file mode 100644 index dacc144fc01..00000000000 --- a/l10n/templates/core.pot +++ /dev/null @@ -1,944 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: ownCloud Core 8.0.0\n" -"Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-11-06 01:54-0500\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: LANGUAGE <LL@li.org>\n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" - -#: ajax/share.php:118 ajax/share.php:160 -#, php-format -msgid "Couldn't send mail to following users: %s " -msgstr "" - -#: ajax/update.php:14 -msgid "Turned on maintenance mode" -msgstr "" - -#: ajax/update.php:17 -msgid "Turned off maintenance mode" -msgstr "" - -#: ajax/update.php:20 -msgid "Updated database" -msgstr "" - -#: ajax/update.php:23 -msgid "Checked database schema update" -msgstr "" - -#: ajax/update.php:26 -msgid "Checked database schema update for apps" -msgstr "" - -#: ajax/update.php:29 -#, php-format -msgid "Updated \"%s\" to %s" -msgstr "" - -#: ajax/update.php:37 -#, php-format -msgid "Disabled incompatible apps: %s" -msgstr "" - -#: avatar/controller.php:70 -msgid "No image or file provided" -msgstr "" - -#: avatar/controller.php:87 -msgid "Unknown filetype" -msgstr "" - -#: avatar/controller.php:91 -msgid "Invalid image" -msgstr "" - -#: avatar/controller.php:121 avatar/controller.php:148 -msgid "No temporary profile picture available, try again" -msgstr "" - -#: avatar/controller.php:141 -msgid "No crop data provided" -msgstr "" - -#: js/config.php:45 -msgid "Sunday" -msgstr "" - -#: js/config.php:46 -msgid "Monday" -msgstr "" - -#: js/config.php:47 -msgid "Tuesday" -msgstr "" - -#: js/config.php:48 -msgid "Wednesday" -msgstr "" - -#: js/config.php:49 -msgid "Thursday" -msgstr "" - -#: js/config.php:50 -msgid "Friday" -msgstr "" - -#: js/config.php:51 -msgid "Saturday" -msgstr "" - -#: js/config.php:56 -msgid "January" -msgstr "" - -#: js/config.php:57 -msgid "February" -msgstr "" - -#: js/config.php:58 -msgid "March" -msgstr "" - -#: js/config.php:59 -msgid "April" -msgstr "" - -#: js/config.php:60 -msgid "May" -msgstr "" - -#: js/config.php:61 -msgid "June" -msgstr "" - -#: js/config.php:62 -msgid "July" -msgstr "" - -#: js/config.php:63 -msgid "August" -msgstr "" - -#: js/config.php:64 -msgid "September" -msgstr "" - -#: js/config.php:65 -msgid "October" -msgstr "" - -#: js/config.php:66 -msgid "November" -msgstr "" - -#: js/config.php:67 -msgid "December" -msgstr "" - -#: js/js.js:384 -msgid "Settings" -msgstr "" - -#: js/js.js:483 -msgid "Saving..." -msgstr "" - -#: js/lostpassword.js:3 lostpassword/controller/lostcontroller.php:198 -msgid "Couldn't send reset email. Please contact your administrator." -msgstr "" - -#: js/lostpassword.js:5 -msgid "" -"The link to reset your password has been sent to your email. If you do not " -"receive it within a reasonable amount of time, check your spam/junk folders." -"<br>If it is not there ask your local administrator." -msgstr "" - -#: js/lostpassword.js:7 -msgid "" -"Your files are encrypted. If you haven't enabled the recovery key, there " -"will be no way to get your data back after your password is reset.<br />If " -"you are not sure what to do, please contact your administrator before you " -"continue. <br />Do you really want to continue?" -msgstr "" - -#: js/lostpassword.js:10 -msgid "I know what I'm doing" -msgstr "" - -#: js/lostpassword.js:13 lostpassword/templates/resetpassword.php:9 -msgid "Reset password" -msgstr "" - -#: js/lostpassword.js:16 -msgid "Password can not be changed. Please contact your administrator." -msgstr "" - -#: js/oc-dialogs.js:108 js/oc-dialogs.js:255 -msgid "No" -msgstr "" - -#: js/oc-dialogs.js:116 js/oc-dialogs.js:264 -msgid "Yes" -msgstr "" - -#: js/oc-dialogs.js:202 -msgid "Choose" -msgstr "" - -#: js/oc-dialogs.js:229 -msgid "Error loading file picker template: {error}" -msgstr "" - -#: js/oc-dialogs.js:282 -msgid "Ok" -msgstr "" - -#: js/oc-dialogs.js:302 -msgid "Error loading message template: {error}" -msgstr "" - -#: js/oc-dialogs.js:430 -msgid "{count} file conflict" -msgid_plural "{count} file conflicts" -msgstr[0] "" -msgstr[1] "" - -#: js/oc-dialogs.js:444 -msgid "One file conflict" -msgstr "" - -#: js/oc-dialogs.js:450 -msgid "New Files" -msgstr "" - -#: js/oc-dialogs.js:451 -msgid "Already existing files" -msgstr "" - -#: js/oc-dialogs.js:453 -msgid "Which files do you want to keep?" -msgstr "" - -#: js/oc-dialogs.js:454 -msgid "" -"If you select both versions, the copied file will have a number added to its " -"name." -msgstr "" - -#: js/oc-dialogs.js:462 -msgid "Cancel" -msgstr "" - -#: js/oc-dialogs.js:472 -msgid "Continue" -msgstr "" - -#: js/oc-dialogs.js:519 js/oc-dialogs.js:532 -msgid "(all selected)" -msgstr "" - -#: js/oc-dialogs.js:522 js/oc-dialogs.js:536 -msgid "({count} selected)" -msgstr "" - -#: js/oc-dialogs.js:544 -msgid "Error loading file exists template" -msgstr "" - -#: js/setup.js:99 -msgid "Very weak password" -msgstr "" - -#: js/setup.js:100 -msgid "Weak password" -msgstr "" - -#: js/setup.js:101 -msgid "So-so password" -msgstr "" - -#: js/setup.js:102 -msgid "Good password" -msgstr "" - -#: js/setup.js:103 -msgid "Strong password" -msgstr "" - -#: js/setupchecks.js:24 -msgid "" -"Your web server is not yet properly setup to allow files synchronization " -"because the WebDAV interface seems to be broken." -msgstr "" - -#: js/setupchecks.js:54 -msgid "" -"This server has no working internet connection. This means that some of the " -"features like mounting of external storage, notifications about updates or " -"installation of 3rd party apps don´t work. Accessing files from remote and " -"sending of notification emails might also not work. We suggest to enable " -"internet connection for this server if you want to have all features." -msgstr "" - -#: js/setupchecks.js:58 -msgid "Error occurred while checking server setup" -msgstr "" - -#: js/share.js:129 js/share.js:251 -msgid "Shared" -msgstr "" - -#: js/share.js:257 -msgid "Shared with {recipients}" -msgstr "" - -#: js/share.js:266 -msgid "Share" -msgstr "" - -#: js/share.js:326 js/share.js:340 js/share.js:347 js/share.js:1077 -#: templates/installation.php:10 -msgid "Error" -msgstr "" - -#: js/share.js:328 js/share.js:1140 -msgid "Error while sharing" -msgstr "" - -#: js/share.js:340 -msgid "Error while unsharing" -msgstr "" - -#: js/share.js:347 -msgid "Error while changing permissions" -msgstr "" - -#: js/share.js:357 -msgid "Shared with you and the group {group} by {owner}" -msgstr "" - -#: js/share.js:359 -msgid "Shared with you by {owner}" -msgstr "" - -#: js/share.js:383 -msgid "Share with user or group …" -msgstr "" - -#: js/share.js:391 -msgid "Share link" -msgstr "" - -#: js/share.js:396 -msgid "" -"The public link will expire no later than {days} days after it is created" -msgstr "" - -#: js/share.js:400 -msgid "Password protect" -msgstr "" - -#: js/share.js:402 js/share.js:1028 -msgid "Choose a password for the public link" -msgstr "" - -#: js/share.js:410 -msgid "Allow Public Upload" -msgstr "" - -#: js/share.js:414 -msgid "Email link to person" -msgstr "" - -#: js/share.js:415 -msgid "Send" -msgstr "" - -#: js/share.js:420 -msgid "Set expiration date" -msgstr "" - -#: js/share.js:421 -msgid "Expiration date" -msgstr "" - -#: js/share.js:496 -msgid "Adding user..." -msgstr "" - -#: js/share.js:513 js/share.js:581 -msgid "group" -msgstr "" - -#: js/share.js:546 -msgid "Resharing is not allowed" -msgstr "" - -#: js/share.js:597 -msgid "Shared in {item} with {user}" -msgstr "" - -#: js/share.js:619 -msgid "Unshare" -msgstr "" - -#: js/share.js:627 -msgid "notify by email" -msgstr "" - -#: js/share.js:630 -msgid "can share" -msgstr "" - -#: js/share.js:633 -msgid "can edit" -msgstr "" - -#: js/share.js:635 -msgid "access control" -msgstr "" - -#: js/share.js:638 -msgid "create" -msgstr "" - -#: js/share.js:641 -msgid "update" -msgstr "" - -#: js/share.js:644 -msgid "delete" -msgstr "" - -#: js/share.js:1058 -msgid "Password protected" -msgstr "" - -#: js/share.js:1077 -msgid "Error unsetting expiration date" -msgstr "" - -#: js/share.js:1098 -msgid "Error setting expiration date" -msgstr "" - -#: js/share.js:1127 -msgid "Sending ..." -msgstr "" - -#: js/share.js:1138 -msgid "Email sent" -msgstr "" - -#: js/share.js:1162 -msgid "Warning" -msgstr "" - -#: js/tags.js:8 -msgid "The object type is not specified." -msgstr "" - -#: js/tags.js:19 -msgid "Enter new" -msgstr "" - -#: js/tags.js:33 -msgid "Delete" -msgstr "" - -#: js/tags.js:43 -msgid "Add" -msgstr "" - -#: js/tags.js:57 -msgid "Edit tags" -msgstr "" - -#: js/tags.js:75 -msgid "Error loading dialog template: {error}" -msgstr "" - -#: js/tags.js:288 -msgid "No tags selected for deletion." -msgstr "" - -#: js/tests/specs/l10nSpec.js:28 js/tests/specs/l10nSpec.js:31 -msgid "unknown text" -msgstr "" - -#: js/tests/specs/l10nSpec.js:34 -msgid "Hello world!" -msgstr "" - -#: js/tests/specs/l10nSpec.js:38 -msgid "sunny" -msgstr "" - -#: js/tests/specs/l10nSpec.js:38 -msgid "Hello {name}, the weather is {weather}" -msgstr "" - -#: js/tests/specs/l10nSpec.js:45 js/tests/specs/l10nSpec.js:48 -#: js/tests/specs/l10nSpec.js:51 js/tests/specs/l10nSpec.js:54 -#: js/tests/specs/l10nSpec.js:62 js/tests/specs/l10nSpec.js:65 -#: js/tests/specs/l10nSpec.js:68 js/tests/specs/l10nSpec.js:71 -msgid "download %n file" -msgid_plural "download %n files" -msgstr[0] "" -msgstr[1] "" - -#: js/update.js:30 -msgid "Updating {productName} to version {version}, this may take a while." -msgstr "" - -#: js/update.js:43 -msgid "Please reload the page." -msgstr "" - -#: js/update.js:52 -msgid "The update was unsuccessful." -msgstr "" - -#: js/update.js:61 -msgid "The update was successful. Redirecting you to ownCloud now." -msgstr "" - -#: lostpassword/controller/lostcontroller.php:133 -msgid "Couldn't reset password because the token is invalid" -msgstr "" - -#: lostpassword/controller/lostcontroller.php:159 -msgid "Couldn't send reset email. Please make sure your username is correct." -msgstr "" - -#: lostpassword/controller/lostcontroller.php:174 -msgid "" -"Couldn't send reset email because there is no email address for this " -"username. Please contact your administrator." -msgstr "" - -#: lostpassword/controller/lostcontroller.php:191 -#, php-format -msgid "%s password reset" -msgstr "" - -#: lostpassword/templates/email.php:2 -msgid "Use the following link to reset your password: {link}" -msgstr "" - -#: lostpassword/templates/lostpassword.php:6 -msgid "You will receive a link to reset your password via Email." -msgstr "" - -#: lostpassword/templates/lostpassword.php:8 -#: lostpassword/templates/lostpassword.php:9 templates/installation.php:44 -#: templates/installation.php:47 templates/login.php:24 templates/login.php:28 -msgid "Username" -msgstr "" - -#: lostpassword/templates/lostpassword.php:13 -msgid "" -"Your files are encrypted. If you haven't enabled the recovery key, there " -"will be no way to get your data back after your password is reset. If you " -"are not sure what to do, please contact your administrator before you " -"continue. Do you really want to continue?" -msgstr "" - -#: lostpassword/templates/lostpassword.php:15 -msgid "Yes, I really want to reset my password now" -msgstr "" - -#: lostpassword/templates/lostpassword.php:18 -msgid "Reset" -msgstr "" - -#: lostpassword/templates/resetpassword.php:5 -msgid "New password" -msgstr "" - -#: lostpassword/templates/resetpassword.php:6 -msgid "New Password" -msgstr "" - -#: setup/controller.php:139 -#, php-format -msgid "" -"Mac OS X is not supported and %s will not work properly on this platform. " -"Use it at your own risk! " -msgstr "" - -#: setup/controller.php:143 -msgid "For the best results, please consider using a GNU/Linux server instead." -msgstr "" - -#: strings.php:5 -msgid "Personal" -msgstr "" - -#: strings.php:6 -msgid "Users" -msgstr "" - -#: strings.php:7 templates/layout.user.php:50 templates/layout.user.php:123 -msgid "Apps" -msgstr "" - -#: strings.php:8 -msgid "Admin" -msgstr "" - -#: strings.php:9 -msgid "Help" -msgstr "" - -#: tags/controller.php:22 -msgid "Error loading tags" -msgstr "" - -#: tags/controller.php:48 -msgid "Tag already exists" -msgstr "" - -#: tags/controller.php:64 -msgid "Error deleting tag(s)" -msgstr "" - -#: tags/controller.php:75 -msgid "Error tagging" -msgstr "" - -#: tags/controller.php:86 -msgid "Error untagging" -msgstr "" - -#: tags/controller.php:97 -msgid "Error favoriting" -msgstr "" - -#: tags/controller.php:108 -msgid "Error unfavoriting" -msgstr "" - -#: templates/403.php:12 -msgid "Access forbidden" -msgstr "" - -#: templates/404.php:17 -msgid "File not found" -msgstr "" - -#: templates/404.php:18 -msgid "The specified document has not been found on the server." -msgstr "" - -#: templates/404.php:19 -#, php-format -msgid "You can click here to return to %s." -msgstr "" - -#: templates/altmail.php:2 -#, php-format -msgid "" -"Hey there,\n" -"\n" -"just letting you know that %s shared %s with you.\n" -"View it: %s\n" -"\n" -msgstr "" - -#: templates/altmail.php:4 templates/mail.php:17 -#, php-format -msgid "The share will expire on %s." -msgstr "" - -#. TRANSLATORS term at the end of a mail -#: templates/altmail.php:8 templates/mail.php:21 -msgid "Cheers!" -msgstr "" - -#: templates/exception.php:6 -msgid "Internal Server Error" -msgstr "" - -#: templates/exception.php:7 -msgid "" -"The server encountered an internal error and was unable to complete your " -"request." -msgstr "" - -#: templates/exception.php:8 -msgid "" -"Please contact the server administrator if this error reappears multiple " -"times, please include the technical details below in your report." -msgstr "" - -#: templates/exception.php:9 -msgid "More details can be found in the server log." -msgstr "" - -#: templates/exception.php:12 -msgid "Technical details" -msgstr "" - -#: templates/exception.php:14 -#, php-format -msgid "Remote Address: %s" -msgstr "" - -#: templates/exception.php:15 -#, php-format -msgid "Request ID: %s" -msgstr "" - -#: templates/exception.php:17 -#, php-format -msgid "Code: %s" -msgstr "" - -#: templates/exception.php:18 -#, php-format -msgid "Message: %s" -msgstr "" - -#: templates/exception.php:19 -#, php-format -msgid "File: %s" -msgstr "" - -#: templates/exception.php:20 -#, php-format -msgid "Line: %s" -msgstr "" - -#: templates/exception.php:26 -msgid "Trace" -msgstr "" - -#: templates/installation.php:25 templates/installation.php:32 -msgid "Security Warning" -msgstr "" - -#: templates/installation.php:26 -msgid "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" -msgstr "" - -#: templates/installation.php:27 -#, php-format -msgid "Please update your PHP installation to use %s securely." -msgstr "" - -#: templates/installation.php:33 -msgid "" -"Your data directory and files are probably accessible from the internet " -"because the .htaccess file does not work." -msgstr "" - -#: templates/installation.php:35 -#, php-format -msgid "" -"For information how to properly configure your server, please see the <a " -"href=\"%s\" target=\"_blank\">documentation</a>." -msgstr "" - -#: templates/installation.php:41 -msgid "Create an <strong>admin account</strong>" -msgstr "" - -#: templates/installation.php:52 templates/installation.php:55 -#: templates/login.php:34 templates/login.php:37 -msgid "Password" -msgstr "" - -#: templates/installation.php:65 -msgid "Storage & database" -msgstr "" - -#: templates/installation.php:72 -msgid "Data folder" -msgstr "" - -#: templates/installation.php:85 -msgid "Configure the database" -msgstr "" - -#: templates/installation.php:89 -#, php-format -msgid "Only %s is available." -msgstr "" - -#: templates/installation.php:104 templates/installation.php:106 -msgid "Database user" -msgstr "" - -#: templates/installation.php:112 templates/installation.php:115 -msgid "Database password" -msgstr "" - -#: templates/installation.php:120 templates/installation.php:122 -msgid "Database name" -msgstr "" - -#: templates/installation.php:130 templates/installation.php:132 -msgid "Database tablespace" -msgstr "" - -#: templates/installation.php:139 templates/installation.php:141 -msgid "Database host" -msgstr "" - -#: templates/installation.php:151 -msgid "" -"SQLite will be used as database. For larger installations we recommend to " -"change this." -msgstr "" - -#: templates/installation.php:154 -msgid "Finish setup" -msgstr "" - -#: templates/installation.php:154 -msgid "Finishing …" -msgstr "" - -#: templates/layout.base.php:27 templates/layout.guest.php:28 -#: templates/layout.user.php:35 -msgid "" -"This application requires JavaScript for correct operation. Please <a href=" -"\"http://enable-javascript.com/\" target=\"_blank\">enable JavaScript</a> " -"and reload the page." -msgstr "" - -#: templates/layout.user.php:39 -#, php-format -msgid "%s is available. Get more information on how to update." -msgstr "" - -#: templates/layout.user.php:85 templates/singleuser.user.php:8 -msgid "Log out" -msgstr "" - -#: templates/login.php:12 -msgid "Server side authentication failed!" -msgstr "" - -#: templates/login.php:13 -msgid "Please contact your administrator." -msgstr "" - -#: templates/login.php:43 -msgid "Forgot your password? Reset it!" -msgstr "" - -#: templates/login.php:48 -msgid "remember" -msgstr "" - -#: templates/login.php:53 -msgid "Log in" -msgstr "" - -#: templates/login.php:59 -msgid "Alternative Logins" -msgstr "" - -#: templates/mail.php:15 -#, php-format -msgid "" -"Hey there,<br><br>just letting you know that %s shared <strong>%s</strong> " -"with you.<br><a href=\"%s\">View it!</a><br><br>" -msgstr "" - -#: templates/singleuser.user.php:3 -msgid "This ownCloud instance is currently in single user mode." -msgstr "" - -#: templates/singleuser.user.php:4 -msgid "This means only administrators can use the instance." -msgstr "" - -#: templates/singleuser.user.php:5 templates/update.user.php:5 -msgid "" -"Contact your system administrator if this message persists or appeared " -"unexpectedly." -msgstr "" - -#: templates/singleuser.user.php:7 templates/update.user.php:6 -msgid "Thank you for your patience." -msgstr "" - -#: templates/untrustedDomain.php:5 -msgid "You are accessing the server from an untrusted domain." -msgstr "" - -#: templates/untrustedDomain.php:8 -msgid "" -"Please contact your administrator. If you are an administrator of this " -"instance, configure the \"trusted_domain\" setting in config/config.php. An " -"example configuration is provided in config/config.sample.php." -msgstr "" - -#: templates/untrustedDomain.php:10 -msgid "" -"Depending on your configuration, as an administrator you might also be able " -"to use the button below to trust this domain." -msgstr "" - -#: templates/untrustedDomain.php:14 -#, php-format -msgid "Add \"%s\" as trusted domain" -msgstr "" - -#: templates/update.admin.php:3 -#, php-format -msgid "%s will be updated to version %s." -msgstr "" - -#: templates/update.admin.php:7 -msgid "The following apps will be disabled:" -msgstr "" - -#: templates/update.admin.php:17 -#, php-format -msgid "The theme %s has been disabled." -msgstr "" - -#: templates/update.admin.php:21 -msgid "" -"Please make sure that the database, the config folder and the data folder " -"have been backed up before proceeding." -msgstr "" - -#: templates/update.admin.php:23 -msgid "Start update" -msgstr "" - -#: templates/update.admin.php:25 -msgid "" -"To avoid timeouts with larger installations, you can instead run the " -"following command from your installation directory:" -msgstr "" - -#: templates/update.user.php:3 -#, php-format -msgid "This %s instance is currently being updated, which may take a while." -msgstr "" - -#: templates/update.user.php:4 -#, php-format -msgid "This page will refresh itself when the %s instance is available again." -msgstr "" diff --git a/l10n/templates/files.pot b/l10n/templates/files.pot deleted file mode 100644 index c7f9ce54301..00000000000 --- a/l10n/templates/files.pot +++ /dev/null @@ -1,423 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: ownCloud Core 8.0.0\n" -"Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-11-06 01:54-0500\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: LANGUAGE <LL@li.org>\n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" - -#: ajax/list.php:39 -msgid "Storage not available" -msgstr "" - -#: ajax/list.php:47 -msgid "Storage invalid" -msgstr "" - -#: ajax/list.php:55 -msgid "Unknown error" -msgstr "" - -#: ajax/move.php:15 -#, php-format -msgid "Could not move %s - File with this name already exists" -msgstr "" - -#: ajax/move.php:26 ajax/move.php:34 -#, php-format -msgid "Could not move %s" -msgstr "" - -#: ajax/move.php:29 -msgid "Permission denied" -msgstr "" - -#: ajax/newfile.php:59 js/files.js:103 -msgid "File name cannot be empty." -msgstr "" - -#: ajax/newfile.php:64 -#, php-format -msgid "\"%s\" is an invalid file name." -msgstr "" - -#: ajax/newfile.php:70 ajax/newfolder.php:28 js/files.js:110 -msgid "" -"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " -"allowed." -msgstr "" - -#: ajax/newfile.php:77 ajax/newfolder.php:35 ajax/upload.php:161 -#: lib/app.php:87 -msgid "The target folder has been moved or deleted." -msgstr "" - -#: ajax/newfile.php:89 ajax/newfolder.php:47 lib/app.php:96 -#, php-format -msgid "" -"The name %s is already used in the folder %s. Please choose a different name." -msgstr "" - -#: ajax/newfile.php:99 -msgid "Not a valid source" -msgstr "" - -#: ajax/newfile.php:104 -msgid "" -"Server is not allowed to open URLs, please check the server configuration" -msgstr "" - -#: ajax/newfile.php:131 -#, php-format -msgid "The file exceeds your quota by %s" -msgstr "" - -#: ajax/newfile.php:146 -#, php-format -msgid "Error while downloading %s to %s" -msgstr "" - -#: ajax/newfile.php:174 -msgid "Error when creating the file" -msgstr "" - -#: ajax/newfolder.php:22 -msgid "Folder name cannot be empty." -msgstr "" - -#: ajax/newfolder.php:66 -msgid "Error when creating the folder" -msgstr "" - -#: ajax/upload.php:19 ajax/upload.php:59 -msgid "Unable to set upload directory." -msgstr "" - -#: ajax/upload.php:35 -msgid "Invalid Token" -msgstr "" - -#: ajax/upload.php:79 -msgid "No file was uploaded. Unknown error" -msgstr "" - -#: ajax/upload.php:86 -msgid "There is no error, the file uploaded with success" -msgstr "" - -#: ajax/upload.php:87 -msgid "" -"The uploaded file exceeds the upload_max_filesize directive in php.ini: " -msgstr "" - -#: ajax/upload.php:89 -msgid "" -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " -"the HTML form" -msgstr "" - -#: ajax/upload.php:90 -msgid "The uploaded file was only partially uploaded" -msgstr "" - -#: ajax/upload.php:91 -msgid "No file was uploaded" -msgstr "" - -#: ajax/upload.php:92 -msgid "Missing a temporary folder" -msgstr "" - -#: ajax/upload.php:93 -msgid "Failed to write to disk" -msgstr "" - -#: ajax/upload.php:113 -msgid "Not enough storage available" -msgstr "" - -#: ajax/upload.php:175 -msgid "Upload failed. Could not find uploaded file" -msgstr "" - -#: ajax/upload.php:185 -msgid "Upload failed. Could not get file info." -msgstr "" - -#: ajax/upload.php:200 -msgid "Invalid directory." -msgstr "" - -#: appinfo/app.php:11 js/filelist.js:25 -msgid "Files" -msgstr "" - -#: appinfo/app.php:27 -msgid "All files" -msgstr "" - -#: js/file-upload.js:269 -msgid "Unable to upload {filename} as it is a directory or has 0 bytes" -msgstr "" - -#: js/file-upload.js:284 -msgid "Total file size {size1} exceeds upload limit {size2}" -msgstr "" - -#: js/file-upload.js:295 -msgid "" -"Not enough free space, you are uploading {size1} but only {size2} is left" -msgstr "" - -#: js/file-upload.js:372 -msgid "Upload cancelled." -msgstr "" - -#: js/file-upload.js:418 -msgid "Could not get result from server." -msgstr "" - -#: js/file-upload.js:510 -msgid "" -"File upload is in progress. Leaving the page now will cancel the upload." -msgstr "" - -#: js/file-upload.js:575 -msgid "URL cannot be empty" -msgstr "" - -#: js/file-upload.js:579 js/filelist.js:1310 -msgid "{new_name} already exists" -msgstr "" - -#: js/file-upload.js:634 -msgid "Could not create file" -msgstr "" - -#: js/file-upload.js:650 -msgid "Could not create folder" -msgstr "" - -#: js/file-upload.js:697 -msgid "Error fetching URL" -msgstr "" - -#: js/fileactions.js:285 -msgid "Share" -msgstr "" - -#: js/fileactions.js:295 templates/list.php:77 templates/list.php:78 -msgid "Delete" -msgstr "" - -#: js/fileactions.js:297 -msgid "Disconnect storage" -msgstr "" - -#: js/fileactions.js:299 -msgid "Unshare" -msgstr "" - -#: js/fileactions.js:301 -msgid "Delete permanently" -msgstr "" - -#: js/fileactions.js:342 -msgid "Rename" -msgstr "" - -#: js/filelist.js:700 js/filelist.js:1856 -msgid "Pending" -msgstr "" - -#: js/filelist.js:1261 -msgid "Error moving file." -msgstr "" - -#: js/filelist.js:1269 -msgid "Error moving file" -msgstr "" - -#: js/filelist.js:1269 -msgid "Error" -msgstr "" - -#: js/filelist.js:1358 -msgid "Could not rename file" -msgstr "" - -#: js/filelist.js:1480 -msgid "Error deleting file." -msgstr "" - -#: js/filelist.js:1582 templates/list.php:61 -msgid "Name" -msgstr "" - -#: js/filelist.js:1583 templates/list.php:72 -msgid "Size" -msgstr "" - -#: js/filelist.js:1584 templates/list.php:75 -msgid "Modified" -msgstr "" - -#: js/filelist.js:1594 js/filesummary.js:141 js/filesummary.js:168 -msgid "%n folder" -msgid_plural "%n folders" -msgstr[0] "" -msgstr[1] "" - -#: js/filelist.js:1600 js/filesummary.js:142 js/filesummary.js:169 -msgid "%n file" -msgid_plural "%n files" -msgstr[0] "" -msgstr[1] "" - -#: js/filelist.js:1657 templates/list.php:47 -msgid "You don’t have permission to upload or create files here" -msgstr "" - -#: js/filelist.js:1749 js/filelist.js:1788 -msgid "Uploading %n file" -msgid_plural "Uploading %n files" -msgstr[0] "" -msgstr[1] "" - -#: js/files.js:101 -msgid "\"{name}\" is an invalid file name." -msgstr "" - -#: js/files.js:122 -msgid "Your storage is full, files can not be updated or synced anymore!" -msgstr "" - -#: js/files.js:126 -msgid "Your storage is almost full ({usedSpacePercent}%)" -msgstr "" - -#: js/files.js:140 -msgid "" -"Encryption App is enabled but your keys are not initialized, please log-out " -"and log-in again" -msgstr "" - -#: js/files.js:144 -msgid "" -"Invalid private key for Encryption App. Please update your private key " -"password in your personal settings to recover access to your encrypted files." -msgstr "" - -#: js/files.js:148 -msgid "" -"Encryption was disabled but your files are still encrypted. Please go to " -"your personal settings to decrypt your files." -msgstr "" - -#: js/filesummary.js:182 -msgid "{dirs} and {files}" -msgstr "" - -#: lib/app.php:80 -#, php-format -msgid "%s could not be renamed as it has been deleted" -msgstr "" - -#: lib/app.php:113 -#, php-format -msgid "%s could not be renamed" -msgstr "" - -#: lib/helper.php:25 templates/list.php:25 -#, php-format -msgid "Upload (max. %s)" -msgstr "" - -#: templates/admin.php:6 -msgid "File handling" -msgstr "" - -#: templates/admin.php:7 -msgid "Maximum upload size" -msgstr "" - -#: templates/admin.php:10 -msgid "max. possible: " -msgstr "" - -#: templates/admin.php:15 -msgid "Save" -msgstr "" - -#: templates/appnavigation.php:12 -msgid "WebDAV" -msgstr "" - -#: templates/appnavigation.php:14 -#, php-format -msgid "" -"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via " -"WebDAV</a>" -msgstr "" - -#: templates/list.php:5 -msgid "New" -msgstr "" - -#: templates/list.php:8 -msgid "New text file" -msgstr "" - -#: templates/list.php:9 -msgid "Text file" -msgstr "" - -#: templates/list.php:12 -msgid "New folder" -msgstr "" - -#: templates/list.php:13 -msgid "Folder" -msgstr "" - -#: templates/list.php:16 -msgid "From link" -msgstr "" - -#: templates/list.php:52 -msgid "Nothing in here. Upload something!" -msgstr "" - -#: templates/list.php:66 -msgid "Download" -msgstr "" - -#: templates/list.php:91 -msgid "Upload too large" -msgstr "" - -#: templates/list.php:93 -msgid "" -"The files you are trying to upload exceed the maximum size for file uploads " -"on this server." -msgstr "" - -#: templates/list.php:98 -msgid "Files are being scanned, please wait." -msgstr "" - -#: templates/list.php:101 -msgid "Currently scanning" -msgstr "" diff --git a/l10n/templates/files_encryption.pot b/l10n/templates/files_encryption.pot deleted file mode 100644 index a8046e6d05b..00000000000 --- a/l10n/templates/files_encryption.pot +++ /dev/null @@ -1,229 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: ownCloud Core 8.0.0\n" -"Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-11-06 01:54-0500\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: LANGUAGE <LL@li.org>\n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ajax/adminrecovery.php:19 -msgid "Unknown error" -msgstr "" - -#: ajax/adminrecovery.php:23 -msgid "Missing recovery key password" -msgstr "" - -#: ajax/adminrecovery.php:29 -msgid "Please repeat the recovery key password" -msgstr "" - -#: ajax/adminrecovery.php:35 ajax/changeRecoveryPassword.php:46 -msgid "" -"Repeated recovery key password does not match the provided recovery key " -"password" -msgstr "" - -#: ajax/adminrecovery.php:49 -msgid "Recovery key successfully enabled" -msgstr "" - -#: ajax/adminrecovery.php:51 ajax/adminrecovery.php:64 -msgid "" -"Could not disable recovery key. Please check your recovery key password!" -msgstr "" - -#: ajax/adminrecovery.php:62 -msgid "Recovery key successfully disabled" -msgstr "" - -#: ajax/changeRecoveryPassword.php:28 -msgid "Please provide the old recovery password" -msgstr "" - -#: ajax/changeRecoveryPassword.php:34 -msgid "Please provide a new recovery password" -msgstr "" - -#: ajax/changeRecoveryPassword.php:40 -msgid "Please repeat the new recovery password" -msgstr "" - -#: ajax/changeRecoveryPassword.php:76 -msgid "Password successfully changed." -msgstr "" - -#: ajax/changeRecoveryPassword.php:78 -msgid "Could not change the password. Maybe the old password was not correct." -msgstr "" - -#: ajax/updatePrivateKeyPassword.php:52 -msgid "Private key password successfully updated." -msgstr "" - -#: ajax/updatePrivateKeyPassword.php:54 -msgid "" -"Could not update the private key password. Maybe the old password was not " -"correct." -msgstr "" - -#: ajax/userrecovery.php:44 -msgid "File recovery settings updated" -msgstr "" - -#: ajax/userrecovery.php:46 -msgid "Could not update file recovery" -msgstr "" - -#: files/error.php:16 -msgid "" -"Encryption app not initialized! Maybe the encryption app was re-enabled " -"during your session. Please try to log out and log back in to initialize the " -"encryption app." -msgstr "" - -#: files/error.php:20 -#, php-format -msgid "" -"Your private key is not valid! Likely your password was changed outside of " -"%s (e.g. your corporate directory). You can update your private key password " -"in your personal settings to recover access to your encrypted files." -msgstr "" - -#: files/error.php:23 -msgid "" -"Can not decrypt this file, probably this is a shared file. Please ask the " -"file owner to reshare the file with you." -msgstr "" - -#: files/error.php:26 files/error.php:31 -msgid "" -"Unknown error. Please check your system settings or contact your " -"administrator" -msgstr "" - -#: hooks/hooks.php:66 -msgid "Missing requirements." -msgstr "" - -#: hooks/hooks.php:67 -msgid "" -"Please make sure that PHP 5.3.3 or newer is installed and that OpenSSL " -"together with the PHP extension is enabled and configured properly. For now, " -"the encryption app has been disabled." -msgstr "" - -#: hooks/hooks.php:300 -msgid "Following users are not set up for encryption:" -msgstr "" - -#: js/detect-migration.js:21 -msgid "Initial encryption started... This can take some time. Please wait." -msgstr "" - -#: js/detect-migration.js:25 -msgid "Initial encryption running... Please try again later." -msgstr "" - -#: templates/invalid_private_key.php:8 -#, php-format -msgid "Go directly to your %spersonal settings%s." -msgstr "" - -#: templates/settings-admin.php:2 templates/settings-personal.php:2 -msgid "Encryption" -msgstr "" - -#: templates/settings-admin.php:5 templates/settings-personal.php:6 -msgid "" -"Encryption App is enabled but your keys are not initialized, please log-out " -"and log-in again" -msgstr "" - -#: templates/settings-admin.php:8 -msgid "" -"Enable recovery key (allow to recover users files in case of password loss):" -msgstr "" - -#: templates/settings-admin.php:13 -msgid "Recovery key password" -msgstr "" - -#: templates/settings-admin.php:16 -msgid "Repeat Recovery key password" -msgstr "" - -#: templates/settings-admin.php:24 templates/settings-personal.php:54 -msgid "Enabled" -msgstr "" - -#: templates/settings-admin.php:33 templates/settings-personal.php:63 -msgid "Disabled" -msgstr "" - -#: templates/settings-admin.php:38 -msgid "Change recovery key password:" -msgstr "" - -#: templates/settings-admin.php:45 -msgid "Old Recovery key password" -msgstr "" - -#: templates/settings-admin.php:52 -msgid "New Recovery key password" -msgstr "" - -#: templates/settings-admin.php:58 -msgid "Repeat New Recovery key password" -msgstr "" - -#: templates/settings-admin.php:63 -msgid "Change Password" -msgstr "" - -#: templates/settings-personal.php:12 -msgid "Your private key password no longer matches your log-in password." -msgstr "" - -#: templates/settings-personal.php:15 -msgid "Set your old private key password to your current log-in password:" -msgstr "" - -#: templates/settings-personal.php:17 -msgid "" -" If you don't remember your old password you can ask your administrator to " -"recover your files." -msgstr "" - -#: templates/settings-personal.php:24 -msgid "Old log-in password" -msgstr "" - -#: templates/settings-personal.php:30 -msgid "Current log-in password" -msgstr "" - -#: templates/settings-personal.php:35 -msgid "Update Private Key Password" -msgstr "" - -#: templates/settings-personal.php:43 -msgid "Enable password recovery:" -msgstr "" - -#: templates/settings-personal.php:46 -msgid "" -"Enabling this option will allow you to reobtain access to your encrypted " -"files in case of password loss" -msgstr "" diff --git a/l10n/templates/files_external.pot b/l10n/templates/files_external.pot deleted file mode 100644 index 6a044f6fb0e..00000000000 --- a/l10n/templates/files_external.pot +++ /dev/null @@ -1,313 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: ownCloud Core 8.0.0\n" -"Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-11-06 01:54-0500\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: LANGUAGE <LL@li.org>\n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ajax/dropbox.php:27 -msgid "" -"Fetching request tokens failed. Verify that your Dropbox app key and secret " -"are correct." -msgstr "" - -#: ajax/dropbox.php:40 -msgid "" -"Fetching access tokens failed. Verify that your Dropbox app key and secret " -"are correct." -msgstr "" - -#: ajax/dropbox.php:48 js/dropbox.js:102 -msgid "Please provide a valid Dropbox app key and secret." -msgstr "" - -#: ajax/google.php:27 -#, php-format -msgid "Step 1 failed. Exception: %s" -msgstr "" - -#: ajax/google.php:38 -#, php-format -msgid "Step 2 failed. Exception: %s" -msgstr "" - -#: appinfo/app.php:37 js/app.js:32 templates/settings.php:9 -msgid "External storage" -msgstr "" - -#: appinfo/app.php:46 -msgid "Local" -msgstr "" - -#: appinfo/app.php:49 -msgid "Location" -msgstr "" - -#: appinfo/app.php:52 -msgid "Amazon S3" -msgstr "" - -#: appinfo/app.php:55 -msgid "Key" -msgstr "" - -#: appinfo/app.php:56 -msgid "Secret" -msgstr "" - -#: appinfo/app.php:57 appinfo/app.php:66 appinfo/app.php:114 -msgid "Bucket" -msgstr "" - -#: appinfo/app.php:61 -msgid "Amazon S3 and compliant" -msgstr "" - -#: appinfo/app.php:64 -msgid "Access Key" -msgstr "" - -#: appinfo/app.php:65 -msgid "Secret Key" -msgstr "" - -#: appinfo/app.php:67 -msgid "Hostname" -msgstr "" - -#: appinfo/app.php:68 -msgid "Port" -msgstr "" - -#: appinfo/app.php:69 -msgid "Region" -msgstr "" - -#: appinfo/app.php:70 -msgid "Enable SSL" -msgstr "" - -#: appinfo/app.php:71 -msgid "Enable Path Style" -msgstr "" - -#: appinfo/app.php:79 -msgid "App key" -msgstr "" - -#: appinfo/app.php:80 -msgid "App secret" -msgstr "" - -#: appinfo/app.php:90 appinfo/app.php:131 appinfo/app.php:142 -#: appinfo/app.php:175 -msgid "Host" -msgstr "" - -#: appinfo/app.php:91 appinfo/app.php:113 appinfo/app.php:132 -#: appinfo/app.php:154 appinfo/app.php:165 appinfo/app.php:176 -msgid "Username" -msgstr "" - -#: appinfo/app.php:92 appinfo/app.php:133 appinfo/app.php:155 -#: appinfo/app.php:166 appinfo/app.php:177 -msgid "Password" -msgstr "" - -#: appinfo/app.php:93 appinfo/app.php:135 appinfo/app.php:145 -#: appinfo/app.php:156 appinfo/app.php:178 -msgid "Root" -msgstr "" - -#: appinfo/app.php:94 -msgid "Secure ftps://" -msgstr "" - -#: appinfo/app.php:102 -msgid "Client ID" -msgstr "" - -#: appinfo/app.php:103 -msgid "Client secret" -msgstr "" - -#: appinfo/app.php:110 -msgid "OpenStack Object Storage" -msgstr "" - -#: appinfo/app.php:115 -msgid "Region (optional for OpenStack Object Storage)" -msgstr "" - -#: appinfo/app.php:116 -msgid "API Key (required for Rackspace Cloud Files)" -msgstr "" - -#: appinfo/app.php:117 -msgid "Tenantname (required for OpenStack Object Storage)" -msgstr "" - -#: appinfo/app.php:118 -msgid "Password (required for OpenStack Object Storage)" -msgstr "" - -#: appinfo/app.php:119 -msgid "Service Name (required for OpenStack Object Storage)" -msgstr "" - -#: appinfo/app.php:120 -msgid "URL of identity endpoint (required for OpenStack Object Storage)" -msgstr "" - -#: appinfo/app.php:121 -msgid "Timeout of HTTP requests in seconds" -msgstr "" - -#: appinfo/app.php:134 appinfo/app.php:144 -msgid "Share" -msgstr "" - -#: appinfo/app.php:139 -msgid "SMB / CIFS using OC login" -msgstr "" - -#: appinfo/app.php:143 -msgid "Username as share" -msgstr "" - -#: appinfo/app.php:153 appinfo/app.php:164 -msgid "URL" -msgstr "" - -#: appinfo/app.php:157 appinfo/app.php:168 -msgid "Secure https://" -msgstr "" - -#: appinfo/app.php:167 -msgid "Remote subfolder" -msgstr "" - -#: js/dropbox.js:7 js/dropbox.js:29 js/google.js:8 js/google.js:40 -msgid "Access granted" -msgstr "" - -#: js/dropbox.js:33 js/dropbox.js:97 js/dropbox.js:103 -msgid "Error configuring Dropbox storage" -msgstr "" - -#: js/dropbox.js:68 js/google.js:89 -msgid "Grant access" -msgstr "" - -#: js/google.js:45 js/google.js:122 -msgid "Error configuring Google Drive storage" -msgstr "" - -#: js/mountsfilelist.js:34 -msgid "Personal" -msgstr "" - -#: js/mountsfilelist.js:36 -msgid "System" -msgstr "" - -#: js/settings.js:211 -msgid "All users. Type to select user or group." -msgstr "" - -#: js/settings.js:294 -msgid "(group)" -msgstr "" - -#: js/settings.js:471 js/settings.js:478 -msgid "Saved" -msgstr "" - -#: lib/config.php:713 -msgid "<b>Note:</b> " -msgstr "" - -#: lib/config.php:724 -msgid " and " -msgstr "" - -#: lib/config.php:746 -#, php-format -msgid "" -"<b>Note:</b> The cURL support in PHP is not enabled or installed. Mounting " -"of %s is not possible. Please ask your system administrator to install it." -msgstr "" - -#: lib/config.php:748 -#, php-format -msgid "" -"<b>Note:</b> The FTP support in PHP is not enabled or installed. Mounting of " -"%s is not possible. Please ask your system administrator to install it." -msgstr "" - -#: lib/config.php:750 -#, php-format -msgid "" -"<b>Note:</b> \"%s\" is not installed. Mounting of %s is not possible. Please " -"ask your system administrator to install it." -msgstr "" - -#: templates/list.php:7 -msgid "You don't have any external storages" -msgstr "" - -#: templates/list.php:16 -msgid "Name" -msgstr "" - -#: templates/list.php:20 -msgid "Storage type" -msgstr "" - -#: templates/list.php:23 -msgid "Scope" -msgstr "" - -#: templates/settings.php:2 -msgid "External Storage" -msgstr "" - -#: templates/settings.php:8 templates/settings.php:27 -msgid "Folder name" -msgstr "" - -#: templates/settings.php:10 -msgid "Configuration" -msgstr "" - -#: templates/settings.php:11 -msgid "Available for" -msgstr "" - -#: templates/settings.php:33 -msgid "Add storage" -msgstr "" - -#: templates/settings.php:96 templates/settings.php:97 -msgid "Delete" -msgstr "" - -#: templates/settings.php:110 -msgid "Enable User External Storage" -msgstr "" - -#: templates/settings.php:113 -msgid "Allow users to mount the following external storage" -msgstr "" diff --git a/l10n/templates/files_sharing.pot b/l10n/templates/files_sharing.pot deleted file mode 100644 index 08ebd45a43b..00000000000 --- a/l10n/templates/files_sharing.pot +++ /dev/null @@ -1,163 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: ownCloud Core 8.0.0\n" -"Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-11-06 01:54-0500\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: LANGUAGE <LL@li.org>\n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ajax/external.php:17 -msgid "Server to server sharing is not enabled on this server" -msgstr "" - -#: ajax/external.php:29 -msgid "The mountpoint name contains invalid characters." -msgstr "" - -#: ajax/external.php:44 -msgid "Invalid or untrusted SSL certificate" -msgstr "" - -#: ajax/external.php:58 -msgid "Couldn't add remote share" -msgstr "" - -#: appinfo/app.php:40 js/app.js:34 -msgid "Shared with you" -msgstr "" - -#: appinfo/app.php:52 js/app.js:53 -msgid "Shared with others" -msgstr "" - -#: appinfo/app.php:61 js/app.js:72 -msgid "Shared by link" -msgstr "" - -#: js/app.js:35 -msgid "No files have been shared with you yet." -msgstr "" - -#: js/app.js:54 -msgid "You haven't shared any files yet." -msgstr "" - -#: js/app.js:73 -msgid "You haven't shared any files by link yet." -msgstr "" - -#: js/external.js:48 js/external.js:59 -msgid "Do you want to add the remote share {name} from {owner}@{remote}?" -msgstr "" - -#: js/external.js:51 js/external.js:62 -msgid "Remote share" -msgstr "" - -#: js/external.js:65 -msgid "Remote share password" -msgstr "" - -#: js/external.js:76 -msgid "Cancel" -msgstr "" - -#: js/external.js:77 -msgid "Add remote share" -msgstr "" - -#: js/public.js:213 -msgid "No ownCloud installation found at {remote}" -msgstr "" - -#: js/public.js:214 -msgid "Invalid ownCloud url" -msgstr "" - -#: js/sharedfilelist.js:128 -msgid "Shared by" -msgstr "" - -#: templates/authenticate.php:4 -msgid "This share is password-protected" -msgstr "" - -#: templates/authenticate.php:7 -msgid "The password is wrong. Try again." -msgstr "" - -#: templates/authenticate.php:10 templates/authenticate.php:12 -msgid "Password" -msgstr "" - -#: templates/list.php:16 -msgid "Name" -msgstr "" - -#: templates/list.php:20 -msgid "Share time" -msgstr "" - -#: templates/part.404.php:3 -msgid "Sorry, this link doesn’t seem to work anymore." -msgstr "" - -#: templates/part.404.php:4 -msgid "Reasons might be:" -msgstr "" - -#: templates/part.404.php:6 -msgid "the item was removed" -msgstr "" - -#: templates/part.404.php:7 -msgid "the link expired" -msgstr "" - -#: templates/part.404.php:8 -msgid "sharing is disabled" -msgstr "" - -#: templates/part.404.php:10 -msgid "For more info, please ask the person who sent this link." -msgstr "" - -#: templates/public.php:38 -msgid "Add to your ownCloud" -msgstr "" - -#: templates/public.php:47 -msgid "Download" -msgstr "" - -#: templates/public.php:70 -#, php-format -msgid "Download %s" -msgstr "" - -#: templates/public.php:74 -msgid "Direct link" -msgstr "" - -#: templates/settings-admin.php:7 -msgid "Server-to-Server Sharing" -msgstr "" - -#: templates/settings-admin.php:12 -msgid "Allow users on this server to send shares to other servers" -msgstr "" - -#: templates/settings-admin.php:18 -msgid "Allow users on this server to receive shares from other servers" -msgstr "" diff --git a/l10n/templates/files_trashbin.pot b/l10n/templates/files_trashbin.pot deleted file mode 100644 index 7b7b062bdc3..00000000000 --- a/l10n/templates/files_trashbin.pot +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: ownCloud Core 8.0.0\n" -"Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-11-06 01:54-0500\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: LANGUAGE <LL@li.org>\n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ajax/delete.php:61 -#, php-format -msgid "Couldn't delete %s permanently" -msgstr "" - -#: ajax/undelete.php:65 -#, php-format -msgid "Couldn't restore %s" -msgstr "" - -#: appinfo/app.php:17 js/filelist.js:34 -msgid "Deleted files" -msgstr "" - -#: js/app.js:52 templates/index.php:21 templates/index.php:23 -msgid "Restore" -msgstr "" - -#: js/filelist.js:119 js/filelist.js:164 js/filelist.js:214 -msgid "Error" -msgstr "" - -#: lib/trashbin.php:980 lib/trashbin.php:982 -msgid "restored" -msgstr "" - -#: templates/index.php:7 -msgid "Nothing in here. Your trash bin is empty!" -msgstr "" - -#: templates/index.php:18 -msgid "Name" -msgstr "" - -#: templates/index.php:29 -msgid "Deleted" -msgstr "" - -#: templates/index.php:32 templates/index.php:33 -msgid "Delete" -msgstr "" diff --git a/l10n/templates/files_versions.pot b/l10n/templates/files_versions.pot deleted file mode 100644 index 47edc7a17f5..00000000000 --- a/l10n/templates/files_versions.pot +++ /dev/null @@ -1,43 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: ownCloud Core 8.0.0\n" -"Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-11-06 01:54-0500\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: LANGUAGE <LL@li.org>\n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ajax/rollbackVersion.php:13 -#, php-format -msgid "Could not revert: %s" -msgstr "" - -#: js/versions.js:48 -msgid "Versions" -msgstr "" - -#: js/versions.js:70 -msgid "Failed to revert {file} to revision {timestamp}." -msgstr "" - -#: js/versions.js:97 -msgid "More versions..." -msgstr "" - -#: js/versions.js:135 -msgid "No other versions available" -msgstr "" - -#: js/versions.js:165 -msgid "Restore" -msgstr "" diff --git a/l10n/templates/lib.pot b/l10n/templates/lib.pot deleted file mode 100644 index 74fc434fcc4..00000000000 --- a/l10n/templates/lib.pot +++ /dev/null @@ -1,621 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: ownCloud Core 8.0.0\n" -"Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-11-06 01:54-0500\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: LANGUAGE <LL@li.org>\n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" - -#: base.php:201 base.php:208 -msgid "Cannot write into \"config\" directory!" -msgstr "" - -#: base.php:202 -msgid "" -"This can usually be fixed by giving the webserver write access to the config " -"directory" -msgstr "" - -#: base.php:204 -#, php-format -msgid "See %s" -msgstr "" - -#: base.php:209 private/util.php:502 -#, php-format -msgid "" -"This can usually be fixed by %sgiving the webserver write access to the " -"config directory%s." -msgstr "" - -#: base.php:592 -msgid "Sample configuration detected" -msgstr "" - -#: base.php:593 -msgid "" -"It has been detected that the sample configuration has been copied. This can " -"break your installation and is unsupported. Please read the documentation " -"before performing changes on config.php" -msgstr "" - -#: private/app.php:410 -msgid "Help" -msgstr "" - -#: private/app.php:423 -msgid "Personal" -msgstr "" - -#: private/app.php:434 -msgid "Settings" -msgstr "" - -#: private/app.php:446 -msgid "Users" -msgstr "" - -#: private/app.php:459 -msgid "Admin" -msgstr "" - -#: private/app.php:865 private/app.php:976 -msgid "Recommended" -msgstr "" - -#: private/app.php:1158 -#, php-format -msgid "" -"App \\\"%s\\\" can't be installed because it is not compatible with this " -"version of ownCloud." -msgstr "" - -#: private/app.php:1170 -msgid "No app name specified" -msgstr "" - -#: private/avatar.php:66 -msgid "Unknown filetype" -msgstr "" - -#: private/avatar.php:71 -msgid "Invalid image" -msgstr "" - -#: private/defaults.php:44 -msgid "web services under your control" -msgstr "" - -#: private/installer.php:77 -msgid "App directory already exists" -msgstr "" - -#: private/installer.php:90 -#, php-format -msgid "Can't create app folder. Please fix permissions. %s" -msgstr "" - -#: private/installer.php:234 -msgid "No source specified when installing app" -msgstr "" - -#: private/installer.php:242 -msgid "No href specified when installing app from http" -msgstr "" - -#: private/installer.php:247 -msgid "No path specified when installing app from local file" -msgstr "" - -#: private/installer.php:255 -#, php-format -msgid "Archives of type %s are not supported" -msgstr "" - -#: private/installer.php:269 -msgid "Failed to open archive when installing app" -msgstr "" - -#: private/installer.php:307 -msgid "App does not provide an info.xml file" -msgstr "" - -#: private/installer.php:313 -msgid "App can't be installed because of not allowed code in the App" -msgstr "" - -#: private/installer.php:319 -msgid "" -"App can't be installed because it is not compatible with this version of " -"ownCloud" -msgstr "" - -#: private/installer.php:325 -msgid "" -"App can't be installed because it contains the <shipped>true</shipped> tag " -"which is not allowed for non shipped apps" -msgstr "" - -#: private/installer.php:338 -msgid "" -"App can't be installed because the version in info.xml/version is not the " -"same as the version reported from the app store" -msgstr "" - -#: private/json.php:29 -msgid "Application is not enabled" -msgstr "" - -#: private/json.php:40 private/json.php:62 private/json.php:87 -msgid "Authentication error" -msgstr "" - -#: private/json.php:51 -msgid "Token expired. Please reload page." -msgstr "" - -#: private/json.php:74 -msgid "Unknown user" -msgstr "" - -#: private/setup/abstractdatabase.php:26 private/setup/oci.php:26 -#, php-format -msgid "%s enter the database username." -msgstr "" - -#: private/setup/abstractdatabase.php:29 private/setup/oci.php:29 -#, php-format -msgid "%s enter the database name." -msgstr "" - -#: private/setup/abstractdatabase.php:32 -#, php-format -msgid "%s you may not use dots in the database name" -msgstr "" - -#: private/setup/mssql.php:20 -#, php-format -msgid "MS SQL username and/or password not valid: %s" -msgstr "" - -#: private/setup/mssql.php:21 private/setup/mysql.php:13 -#: private/setup/oci.php:128 private/setup/postgresql.php:31 -#: private/setup/postgresql.php:84 -msgid "You need to enter either an existing account or the administrator." -msgstr "" - -#: private/setup/mysql.php:12 -msgid "MySQL/MariaDB username and/or password not valid" -msgstr "" - -#: private/setup/mysql.php:81 private/setup/oci.php:68 -#: private/setup/oci.php:135 private/setup/oci.php:158 -#: private/setup/oci.php:165 private/setup/oci.php:176 -#: private/setup/oci.php:183 private/setup/oci.php:192 -#: private/setup/oci.php:200 private/setup/oci.php:209 -#: private/setup/oci.php:215 private/setup/postgresql.php:103 -#: private/setup/postgresql.php:112 private/setup/postgresql.php:129 -#: private/setup/postgresql.php:139 private/setup/postgresql.php:148 -#, php-format -msgid "DB Error: \"%s\"" -msgstr "" - -#: private/setup/mysql.php:82 private/setup/oci.php:69 -#: private/setup/oci.php:136 private/setup/oci.php:159 -#: private/setup/oci.php:166 private/setup/oci.php:177 -#: private/setup/oci.php:193 private/setup/oci.php:201 -#: private/setup/oci.php:210 private/setup/postgresql.php:104 -#: private/setup/postgresql.php:113 private/setup/postgresql.php:130 -#: private/setup/postgresql.php:140 private/setup/postgresql.php:149 -#, php-format -msgid "Offending command was: \"%s\"" -msgstr "" - -#: private/setup/mysql.php:99 -#, php-format -msgid "MySQL/MariaDB user '%s'@'localhost' exists already." -msgstr "" - -#: private/setup/mysql.php:100 -msgid "Drop this user from MySQL/MariaDB" -msgstr "" - -#: private/setup/mysql.php:105 -#, php-format -msgid "MySQL/MariaDB user '%s'@'%%' already exists" -msgstr "" - -#: private/setup/mysql.php:106 -msgid "Drop this user from MySQL/MariaDB." -msgstr "" - -#: private/setup/oci.php:48 -msgid "Oracle connection could not be established" -msgstr "" - -#: private/setup/oci.php:55 private/setup/oci.php:127 -msgid "Oracle username and/or password not valid" -msgstr "" - -#: private/setup/oci.php:184 private/setup/oci.php:216 -#, php-format -msgid "Offending command was: \"%s\", name: %s, password: %s" -msgstr "" - -#: private/setup/postgresql.php:30 private/setup/postgresql.php:83 -msgid "PostgreSQL username and/or password not valid" -msgstr "" - -#: private/setup.php:129 -msgid "Set an admin username." -msgstr "" - -#: private/setup.php:132 -msgid "Set an admin password." -msgstr "" - -#: private/setup.php:156 -#, php-format -msgid "Can't create or write into the data directory %s" -msgstr "" - -#: private/share/mailnotifications.php:91 -#: private/share/mailnotifications.php:142 -#, php-format -msgid "%s shared »%s« with you" -msgstr "" - -#: private/share/share.php:509 -#, php-format -msgid "Sharing %s failed, because the file does not exist" -msgstr "" - -#: private/share/share.php:516 -#, php-format -msgid "You are not allowed to share %s" -msgstr "" - -#: private/share/share.php:546 -#, php-format -msgid "Sharing %s failed, because the user %s is the item owner" -msgstr "" - -#: private/share/share.php:552 -#, php-format -msgid "Sharing %s failed, because the user %s does not exist" -msgstr "" - -#: private/share/share.php:561 -#, php-format -msgid "" -"Sharing %s failed, because the user %s is not a member of any groups that %s " -"is a member of" -msgstr "" - -#: private/share/share.php:574 private/share/share.php:602 -#, php-format -msgid "Sharing %s failed, because this item is already shared with %s" -msgstr "" - -#: private/share/share.php:582 -#, php-format -msgid "Sharing %s failed, because the group %s does not exist" -msgstr "" - -#: private/share/share.php:589 -#, php-format -msgid "Sharing %s failed, because %s is not a member of the group %s" -msgstr "" - -#: private/share/share.php:643 -msgid "" -"You need to provide a password to create a public link, only protected links " -"are allowed" -msgstr "" - -#: private/share/share.php:672 -#, php-format -msgid "Sharing %s failed, because sharing with links is not allowed" -msgstr "" - -#: private/share/share.php:678 -#, php-format -msgid "Share type %s is not valid for %s" -msgstr "" - -#: private/share/share.php:902 -#, php-format -msgid "" -"Setting permissions for %s failed, because the permissions exceed " -"permissions granted to %s" -msgstr "" - -#: private/share/share.php:963 -#, php-format -msgid "Setting permissions for %s failed, because the item was not found" -msgstr "" - -#: private/share/share.php:1001 -#, php-format -msgid "" -"Cannot set expiration date. Shares cannot expire later than %s after they " -"have been shared" -msgstr "" - -#: private/share/share.php:1009 -msgid "Cannot set expiration date. Expiration date is in the past" -msgstr "" - -#: private/share/share.php:1135 -#, php-format -msgid "Sharing backend %s must implement the interface OCP\\Share_Backend" -msgstr "" - -#: private/share/share.php:1142 -#, php-format -msgid "Sharing backend %s not found" -msgstr "" - -#: private/share/share.php:1148 -#, php-format -msgid "Sharing backend for %s not found" -msgstr "" - -#: private/share/share.php:1891 -#, php-format -msgid "Sharing %s failed, because the user %s is the original sharer" -msgstr "" - -#: private/share/share.php:1901 -#, php-format -msgid "" -"Sharing %s failed, because the permissions exceed permissions granted to %s" -msgstr "" - -#: private/share/share.php:1927 -#, php-format -msgid "Sharing %s failed, because resharing is not allowed" -msgstr "" - -#: private/share/share.php:1941 -#, php-format -msgid "" -"Sharing %s failed, because the sharing backend for %s could not find its " -"source" -msgstr "" - -#: private/share/share.php:1955 -#, php-format -msgid "" -"Sharing %s failed, because the file could not be found in the file cache" -msgstr "" - -#: private/tags.php:226 -#, php-format -msgid "Could not find category \"%s\"" -msgstr "" - -#: private/template/functions.php:225 -msgid "seconds ago" -msgstr "" - -#: private/template/functions.php:226 -msgid "%n minute ago" -msgid_plural "%n minutes ago" -msgstr[0] "" -msgstr[1] "" - -#: private/template/functions.php:227 -msgid "%n hour ago" -msgid_plural "%n hours ago" -msgstr[0] "" -msgstr[1] "" - -#: private/template/functions.php:228 -msgid "today" -msgstr "" - -#: private/template/functions.php:229 -msgid "yesterday" -msgstr "" - -#: private/template/functions.php:231 -msgid "%n day go" -msgid_plural "%n days ago" -msgstr[0] "" -msgstr[1] "" - -#: private/template/functions.php:233 -msgid "last month" -msgstr "" - -#: private/template/functions.php:234 -msgid "%n month ago" -msgid_plural "%n months ago" -msgstr[0] "" -msgstr[1] "" - -#: private/template/functions.php:236 -msgid "last year" -msgstr "" - -#: private/template/functions.php:237 -msgid "years ago" -msgstr "" - -#: private/user/manager.php:244 -msgid "" -"Only the following characters are allowed in a username: \"a-z\", \"A-Z\", " -"\"0-9\", and \"_.@-\"" -msgstr "" - -#: private/user/manager.php:249 -msgid "A valid username must be provided" -msgstr "" - -#: private/user/manager.php:253 -msgid "A valid password must be provided" -msgstr "" - -#: private/user/manager.php:258 -msgid "The username is already being used" -msgstr "" - -#: private/util.php:487 -msgid "No database drivers (sqlite, mysql, or postgresql) installed." -msgstr "" - -#: private/util.php:494 -#, php-format -msgid "" -"Permissions can usually be fixed by %sgiving the webserver write access to " -"the root directory%s." -msgstr "" - -#: private/util.php:501 -msgid "Cannot write into \"config\" directory" -msgstr "" - -#: private/util.php:515 -msgid "Cannot write into \"apps\" directory" -msgstr "" - -#: private/util.php:516 -#, php-format -msgid "" -"This can usually be fixed by %sgiving the webserver write access to the apps " -"directory%s or disabling the appstore in the config file." -msgstr "" - -#: private/util.php:531 -#, php-format -msgid "Cannot create \"data\" directory (%s)" -msgstr "" - -#: private/util.php:532 -#, php-format -msgid "" -"This can usually be fixed by <a href=\"%s\" target=\"_blank\">giving the " -"webserver write access to the root directory</a>." -msgstr "" - -#: private/util.php:549 -#, php-format -msgid "Setting locale to %s failed" -msgstr "" - -#: private/util.php:552 -msgid "" -"Please install one of these locales on your system and restart your " -"webserver." -msgstr "" - -#: private/util.php:581 -msgid "Please ask your server administrator to install the module." -msgstr "" - -#: private/util.php:601 -#, php-format -msgid "PHP module %s not installed." -msgstr "" - -#: private/util.php:609 -#, php-format -msgid "PHP %s or higher is required." -msgstr "" - -#: private/util.php:610 -msgid "" -"Please ask your server administrator to update PHP to the latest version. " -"Your PHP version is no longer supported by ownCloud and the PHP community." -msgstr "" - -#: private/util.php:621 -msgid "" -"PHP Safe Mode is enabled. ownCloud requires that it is disabled to work " -"properly." -msgstr "" - -#: private/util.php:622 -msgid "" -"PHP Safe Mode is a deprecated and mostly useless setting that should be " -"disabled. Please ask your server administrator to disable it in php.ini or " -"in your webserver config." -msgstr "" - -#: private/util.php:629 -msgid "" -"Magic Quotes is enabled. ownCloud requires that it is disabled to work " -"properly." -msgstr "" - -#: private/util.php:630 -msgid "" -"Magic Quotes is a deprecated and mostly useless setting that should be " -"disabled. Please ask your server administrator to disable it in php.ini or " -"in your webserver config." -msgstr "" - -#: private/util.php:644 -msgid "PHP modules have been installed, but they are still listed as missing?" -msgstr "" - -#: private/util.php:645 -msgid "Please ask your server administrator to restart the web server." -msgstr "" - -#: private/util.php:675 -msgid "PostgreSQL >= 9 required" -msgstr "" - -#: private/util.php:676 -msgid "Please upgrade your database version" -msgstr "" - -#: private/util.php:683 -msgid "Error occurred while checking PostgreSQL version" -msgstr "" - -#: private/util.php:684 -msgid "" -"Please make sure you have PostgreSQL >= 9 or check the logs for more " -"information about the error" -msgstr "" - -#: private/util.php:749 -msgid "" -"Please change the permissions to 0770 so that the directory cannot be listed " -"by other users." -msgstr "" - -#: private/util.php:758 -#, php-format -msgid "Data directory (%s) is readable by other users" -msgstr "" - -#: private/util.php:779 -#, php-format -msgid "Data directory (%s) is invalid" -msgstr "" - -#: private/util.php:780 -msgid "" -"Please check that the data directory contains a file \".ocdata\" in its root." -msgstr "" - -#: public/files/locknotacquiredexception.php:39 -#, php-format -msgid "Could not obtain lock type %d on \"%s\"." -msgstr "" diff --git a/l10n/templates/private.pot b/l10n/templates/private.pot deleted file mode 100644 index d44e6ef00e3..00000000000 --- a/l10n/templates/private.pot +++ /dev/null @@ -1,582 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: ownCloud Core 8.0.0\n" -"Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-11-06 01:54-0500\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: LANGUAGE <LL@li.org>\n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" - -#: app.php:410 -msgid "Help" -msgstr "" - -#: app.php:423 -msgid "Personal" -msgstr "" - -#: app.php:434 -msgid "Settings" -msgstr "" - -#: app.php:446 -msgid "Users" -msgstr "" - -#: app.php:459 -msgid "Admin" -msgstr "" - -#: app.php:865 app.php:976 -msgid "Recommended" -msgstr "" - -#: app.php:1158 -#, php-format -msgid "" -"App \\\"%s\\\" can't be installed because it is not compatible with this " -"version of ownCloud." -msgstr "" - -#: app.php:1170 -msgid "No app name specified" -msgstr "" - -#: avatar.php:66 -msgid "Unknown filetype" -msgstr "" - -#: avatar.php:71 -msgid "Invalid image" -msgstr "" - -#: defaults.php:44 -msgid "web services under your control" -msgstr "" - -#: installer.php:77 -msgid "App directory already exists" -msgstr "" - -#: installer.php:90 -#, php-format -msgid "Can't create app folder. Please fix permissions. %s" -msgstr "" - -#: installer.php:234 -msgid "No source specified when installing app" -msgstr "" - -#: installer.php:242 -msgid "No href specified when installing app from http" -msgstr "" - -#: installer.php:247 -msgid "No path specified when installing app from local file" -msgstr "" - -#: installer.php:255 -#, php-format -msgid "Archives of type %s are not supported" -msgstr "" - -#: installer.php:269 -msgid "Failed to open archive when installing app" -msgstr "" - -#: installer.php:307 -msgid "App does not provide an info.xml file" -msgstr "" - -#: installer.php:313 -msgid "App can't be installed because of not allowed code in the App" -msgstr "" - -#: installer.php:319 -msgid "" -"App can't be installed because it is not compatible with this version of " -"ownCloud" -msgstr "" - -#: installer.php:325 -msgid "" -"App can't be installed because it contains the <shipped>true</shipped> tag " -"which is not allowed for non shipped apps" -msgstr "" - -#: installer.php:338 -msgid "" -"App can't be installed because the version in info.xml/version is not the " -"same as the version reported from the app store" -msgstr "" - -#: json.php:29 -msgid "Application is not enabled" -msgstr "" - -#: json.php:40 json.php:62 json.php:87 -msgid "Authentication error" -msgstr "" - -#: json.php:51 -msgid "Token expired. Please reload page." -msgstr "" - -#: json.php:74 -msgid "Unknown user" -msgstr "" - -#: setup/abstractdatabase.php:26 setup/oci.php:26 -#, php-format -msgid "%s enter the database username." -msgstr "" - -#: setup/abstractdatabase.php:29 setup/oci.php:29 -#, php-format -msgid "%s enter the database name." -msgstr "" - -#: setup/abstractdatabase.php:32 -#, php-format -msgid "%s you may not use dots in the database name" -msgstr "" - -#: setup/mssql.php:20 -#, php-format -msgid "MS SQL username and/or password not valid: %s" -msgstr "" - -#: setup/mssql.php:21 setup/mysql.php:13 setup/oci.php:128 -#: setup/postgresql.php:31 setup/postgresql.php:84 -msgid "You need to enter either an existing account or the administrator." -msgstr "" - -#: setup/mysql.php:12 -msgid "MySQL/MariaDB username and/or password not valid" -msgstr "" - -#: setup/mysql.php:81 setup/oci.php:68 setup/oci.php:135 setup/oci.php:158 -#: setup/oci.php:165 setup/oci.php:176 setup/oci.php:183 setup/oci.php:192 -#: setup/oci.php:200 setup/oci.php:209 setup/oci.php:215 -#: setup/postgresql.php:103 setup/postgresql.php:112 setup/postgresql.php:129 -#: setup/postgresql.php:139 setup/postgresql.php:148 -#, php-format -msgid "DB Error: \"%s\"" -msgstr "" - -#: setup/mysql.php:82 setup/oci.php:69 setup/oci.php:136 setup/oci.php:159 -#: setup/oci.php:166 setup/oci.php:177 setup/oci.php:193 setup/oci.php:201 -#: setup/oci.php:210 setup/postgresql.php:104 setup/postgresql.php:113 -#: setup/postgresql.php:130 setup/postgresql.php:140 setup/postgresql.php:149 -#, php-format -msgid "Offending command was: \"%s\"" -msgstr "" - -#: setup/mysql.php:99 -#, php-format -msgid "MySQL/MariaDB user '%s'@'localhost' exists already." -msgstr "" - -#: setup/mysql.php:100 -msgid "Drop this user from MySQL/MariaDB" -msgstr "" - -#: setup/mysql.php:105 -#, php-format -msgid "MySQL/MariaDB user '%s'@'%%' already exists" -msgstr "" - -#: setup/mysql.php:106 -msgid "Drop this user from MySQL/MariaDB." -msgstr "" - -#: setup/oci.php:48 -msgid "Oracle connection could not be established" -msgstr "" - -#: setup/oci.php:55 setup/oci.php:127 -msgid "Oracle username and/or password not valid" -msgstr "" - -#: setup/oci.php:184 setup/oci.php:216 -#, php-format -msgid "Offending command was: \"%s\", name: %s, password: %s" -msgstr "" - -#: setup/postgresql.php:30 setup/postgresql.php:83 -msgid "PostgreSQL username and/or password not valid" -msgstr "" - -#: setup.php:129 -msgid "Set an admin username." -msgstr "" - -#: setup.php:132 -msgid "Set an admin password." -msgstr "" - -#: setup.php:156 -#, php-format -msgid "Can't create or write into the data directory %s" -msgstr "" - -#: share/mailnotifications.php:91 share/mailnotifications.php:142 -#, php-format -msgid "%s shared »%s« with you" -msgstr "" - -#: share/share.php:509 -#, php-format -msgid "Sharing %s failed, because the file does not exist" -msgstr "" - -#: share/share.php:516 -#, php-format -msgid "You are not allowed to share %s" -msgstr "" - -#: share/share.php:546 -#, php-format -msgid "Sharing %s failed, because the user %s is the item owner" -msgstr "" - -#: share/share.php:552 -#, php-format -msgid "Sharing %s failed, because the user %s does not exist" -msgstr "" - -#: share/share.php:561 -#, php-format -msgid "" -"Sharing %s failed, because the user %s is not a member of any groups that %s " -"is a member of" -msgstr "" - -#: share/share.php:574 share/share.php:602 -#, php-format -msgid "Sharing %s failed, because this item is already shared with %s" -msgstr "" - -#: share/share.php:582 -#, php-format -msgid "Sharing %s failed, because the group %s does not exist" -msgstr "" - -#: share/share.php:589 -#, php-format -msgid "Sharing %s failed, because %s is not a member of the group %s" -msgstr "" - -#: share/share.php:643 -msgid "" -"You need to provide a password to create a public link, only protected links " -"are allowed" -msgstr "" - -#: share/share.php:672 -#, php-format -msgid "Sharing %s failed, because sharing with links is not allowed" -msgstr "" - -#: share/share.php:678 -#, php-format -msgid "Share type %s is not valid for %s" -msgstr "" - -#: share/share.php:902 -#, php-format -msgid "" -"Setting permissions for %s failed, because the permissions exceed " -"permissions granted to %s" -msgstr "" - -#: share/share.php:963 -#, php-format -msgid "Setting permissions for %s failed, because the item was not found" -msgstr "" - -#: share/share.php:1001 -#, php-format -msgid "" -"Cannot set expiration date. Shares cannot expire later than %s after they " -"have been shared" -msgstr "" - -#: share/share.php:1009 -msgid "Cannot set expiration date. Expiration date is in the past" -msgstr "" - -#: share/share.php:1135 -#, php-format -msgid "Sharing backend %s must implement the interface OCP\\Share_Backend" -msgstr "" - -#: share/share.php:1142 -#, php-format -msgid "Sharing backend %s not found" -msgstr "" - -#: share/share.php:1148 -#, php-format -msgid "Sharing backend for %s not found" -msgstr "" - -#: share/share.php:1891 -#, php-format -msgid "Sharing %s failed, because the user %s is the original sharer" -msgstr "" - -#: share/share.php:1901 -#, php-format -msgid "" -"Sharing %s failed, because the permissions exceed permissions granted to %s" -msgstr "" - -#: share/share.php:1927 -#, php-format -msgid "Sharing %s failed, because resharing is not allowed" -msgstr "" - -#: share/share.php:1941 -#, php-format -msgid "" -"Sharing %s failed, because the sharing backend for %s could not find its " -"source" -msgstr "" - -#: share/share.php:1955 -#, php-format -msgid "" -"Sharing %s failed, because the file could not be found in the file cache" -msgstr "" - -#: tags.php:226 -#, php-format -msgid "Could not find category \"%s\"" -msgstr "" - -#: template/functions.php:225 -msgid "seconds ago" -msgstr "" - -#: template/functions.php:226 -msgid "%n minute ago" -msgid_plural "%n minutes ago" -msgstr[0] "" -msgstr[1] "" - -#: template/functions.php:227 -msgid "%n hour ago" -msgid_plural "%n hours ago" -msgstr[0] "" -msgstr[1] "" - -#: template/functions.php:228 -msgid "today" -msgstr "" - -#: template/functions.php:229 -msgid "yesterday" -msgstr "" - -#: template/functions.php:231 -msgid "%n day go" -msgid_plural "%n days ago" -msgstr[0] "" -msgstr[1] "" - -#: template/functions.php:233 -msgid "last month" -msgstr "" - -#: template/functions.php:234 -msgid "%n month ago" -msgid_plural "%n months ago" -msgstr[0] "" -msgstr[1] "" - -#: template/functions.php:236 -msgid "last year" -msgstr "" - -#: template/functions.php:237 -msgid "years ago" -msgstr "" - -#: user/manager.php:244 -msgid "" -"Only the following characters are allowed in a username: \"a-z\", \"A-Z\", " -"\"0-9\", and \"_.@-\"" -msgstr "" - -#: user/manager.php:249 -msgid "A valid username must be provided" -msgstr "" - -#: user/manager.php:253 -msgid "A valid password must be provided" -msgstr "" - -#: user/manager.php:258 -msgid "The username is already being used" -msgstr "" - -#: util.php:487 -msgid "No database drivers (sqlite, mysql, or postgresql) installed." -msgstr "" - -#: util.php:494 -#, php-format -msgid "" -"Permissions can usually be fixed by %sgiving the webserver write access to " -"the root directory%s." -msgstr "" - -#: util.php:501 -msgid "Cannot write into \"config\" directory" -msgstr "" - -#: util.php:502 -#, php-format -msgid "" -"This can usually be fixed by %sgiving the webserver write access to the " -"config directory%s." -msgstr "" - -#: util.php:515 -msgid "Cannot write into \"apps\" directory" -msgstr "" - -#: util.php:516 -#, php-format -msgid "" -"This can usually be fixed by %sgiving the webserver write access to the apps " -"directory%s or disabling the appstore in the config file." -msgstr "" - -#: util.php:531 -#, php-format -msgid "Cannot create \"data\" directory (%s)" -msgstr "" - -#: util.php:532 -#, php-format -msgid "" -"This can usually be fixed by <a href=\"%s\" target=\"_blank\">giving the " -"webserver write access to the root directory</a>." -msgstr "" - -#: util.php:549 -#, php-format -msgid "Setting locale to %s failed" -msgstr "" - -#: util.php:552 -msgid "" -"Please install one of these locales on your system and restart your " -"webserver." -msgstr "" - -#: util.php:581 -msgid "Please ask your server administrator to install the module." -msgstr "" - -#: util.php:601 -#, php-format -msgid "PHP module %s not installed." -msgstr "" - -#: util.php:609 -#, php-format -msgid "PHP %s or higher is required." -msgstr "" - -#: util.php:610 -msgid "" -"Please ask your server administrator to update PHP to the latest version. " -"Your PHP version is no longer supported by ownCloud and the PHP community." -msgstr "" - -#: util.php:621 -msgid "" -"PHP Safe Mode is enabled. ownCloud requires that it is disabled to work " -"properly." -msgstr "" - -#: util.php:622 -msgid "" -"PHP Safe Mode is a deprecated and mostly useless setting that should be " -"disabled. Please ask your server administrator to disable it in php.ini or " -"in your webserver config." -msgstr "" - -#: util.php:629 -msgid "" -"Magic Quotes is enabled. ownCloud requires that it is disabled to work " -"properly." -msgstr "" - -#: util.php:630 -msgid "" -"Magic Quotes is a deprecated and mostly useless setting that should be " -"disabled. Please ask your server administrator to disable it in php.ini or " -"in your webserver config." -msgstr "" - -#: util.php:644 -msgid "PHP modules have been installed, but they are still listed as missing?" -msgstr "" - -#: util.php:645 -msgid "Please ask your server administrator to restart the web server." -msgstr "" - -#: util.php:675 -msgid "PostgreSQL >= 9 required" -msgstr "" - -#: util.php:676 -msgid "Please upgrade your database version" -msgstr "" - -#: util.php:683 -msgid "Error occurred while checking PostgreSQL version" -msgstr "" - -#: util.php:684 -msgid "" -"Please make sure you have PostgreSQL >= 9 or check the logs for more " -"information about the error" -msgstr "" - -#: util.php:749 -msgid "" -"Please change the permissions to 0770 so that the directory cannot be listed " -"by other users." -msgstr "" - -#: util.php:758 -#, php-format -msgid "Data directory (%s) is readable by other users" -msgstr "" - -#: util.php:779 -#, php-format -msgid "Data directory (%s) is invalid" -msgstr "" - -#: util.php:780 -msgid "" -"Please check that the data directory contains a file \".ocdata\" in its root." -msgstr "" diff --git a/l10n/templates/settings.pot b/l10n/templates/settings.pot deleted file mode 100644 index 2ba8eb33c0c..00000000000 --- a/l10n/templates/settings.pot +++ /dev/null @@ -1,1048 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: ownCloud Core 8.0.0\n" -"Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-11-06 01:54-0500\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: LANGUAGE <LL@li.org>\n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: admin.php:84 -msgid "Security & Setup Warnings" -msgstr "" - -#: admin.php:108 templates/admin.php:227 -msgid "Cron" -msgstr "" - -#: admin.php:109 templates/admin.php:272 -msgid "Sharing" -msgstr "" - -#: admin.php:110 templates/admin.php:334 -msgid "Security" -msgstr "" - -#: admin.php:111 templates/admin.php:364 -msgid "Email Server" -msgstr "" - -#: admin.php:112 templates/admin.php:448 -msgid "Log" -msgstr "" - -#: ajax/changedisplayname.php:25 ajax/removeuser.php:15 ajax/setquota.php:17 -#: ajax/togglegroups.php:20 changepassword/controller.php:49 -msgid "Authentication error" -msgstr "" - -#: ajax/changedisplayname.php:31 -msgid "Your full name has been changed." -msgstr "" - -#: ajax/changedisplayname.php:34 -msgid "Unable to change full name" -msgstr "" - -#: ajax/creategroup.php:11 -msgid "Group already exists" -msgstr "" - -#: ajax/creategroup.php:20 -msgid "Unable to add group" -msgstr "" - -#: ajax/decryptall.php:31 -msgid "Files decrypted successfully" -msgstr "" - -#: ajax/decryptall.php:33 -msgid "" -"Couldn't decrypt your files, please check your owncloud.log or ask your " -"administrator" -msgstr "" - -#: ajax/decryptall.php:36 -msgid "Couldn't decrypt your files, check your password and try again" -msgstr "" - -#: ajax/deletekeys.php:14 -msgid "Encryption keys deleted permanently" -msgstr "" - -#: ajax/deletekeys.php:16 -msgid "" -"Couldn't permanently delete your encryption keys, please check your owncloud." -"log or ask your administrator" -msgstr "" - -#: ajax/installapp.php:18 ajax/uninstallapp.php:18 -msgid "Couldn't remove app." -msgstr "" - -#: ajax/lostpassword.php:12 -msgid "Email saved" -msgstr "" - -#: ajax/lostpassword.php:14 -msgid "Invalid email" -msgstr "" - -#: ajax/removegroup.php:13 -msgid "Unable to delete group" -msgstr "" - -#: ajax/removeuser.php:25 -msgid "Unable to delete user" -msgstr "" - -#: ajax/restorekeys.php:14 -msgid "Backups restored successfully" -msgstr "" - -#: ajax/restorekeys.php:23 -msgid "" -"Couldn't restore your encryption keys, please check your owncloud.log or ask " -"your administrator" -msgstr "" - -#: ajax/setlanguage.php:15 -msgid "Language changed" -msgstr "" - -#: ajax/setlanguage.php:17 ajax/setlanguage.php:20 -msgid "Invalid request" -msgstr "" - -#: ajax/togglegroups.php:12 -msgid "Admins can't remove themself from the admin group" -msgstr "" - -#: ajax/togglegroups.php:30 -#, php-format -msgid "Unable to add user to group %s" -msgstr "" - -#: ajax/togglegroups.php:36 -#, php-format -msgid "Unable to remove user from group %s" -msgstr "" - -#: ajax/updateapp.php:47 -msgid "Couldn't update app." -msgstr "" - -#: changepassword/controller.php:17 -msgid "Wrong password" -msgstr "" - -#: changepassword/controller.php:36 -msgid "No user supplied" -msgstr "" - -#: changepassword/controller.php:68 -msgid "" -"Please provide an admin recovery password, otherwise all user data will be " -"lost" -msgstr "" - -#: changepassword/controller.php:73 -msgid "Wrong admin recovery password. Please check the password and try again." -msgstr "" - -#: changepassword/controller.php:81 -msgid "" -"Back-end doesn't support password change, but the users encryption key was " -"successfully updated." -msgstr "" - -#: changepassword/controller.php:86 changepassword/controller.php:97 -msgid "Unable to change password" -msgstr "" - -#: controller/appsettingscontroller.php:51 -msgid "Enabled" -msgstr "" - -#: controller/appsettingscontroller.php:52 -msgid "Not enabled" -msgstr "" - -#: controller/appsettingscontroller.php:56 -msgid "Recommended" -msgstr "" - -#: controller/mailsettingscontroller.php:103 -#: controller/mailsettingscontroller.php:121 -msgid "Saved" -msgstr "" - -#: controller/mailsettingscontroller.php:136 -msgid "test email settings" -msgstr "" - -#: controller/mailsettingscontroller.php:137 -msgid "If you received this email, the settings seem to be correct." -msgstr "" - -#: controller/mailsettingscontroller.php:144 -msgid "" -"A problem occurred while sending the email. Please revise your settings." -msgstr "" - -#: controller/mailsettingscontroller.php:152 -msgid "Email sent" -msgstr "" - -#: controller/mailsettingscontroller.php:160 -msgid "You need to set your user email before being able to send test emails." -msgstr "" - -#: js/admin.js:6 -msgid "Are you really sure you want add \"{domain}\" as trusted domain?" -msgstr "" - -#: js/admin.js:8 -msgid "Add trusted domain" -msgstr "" - -#: js/admin.js:124 -msgid "Sending..." -msgstr "" - -#: js/apps.js:17 templates/apps.php:62 -msgid "All" -msgstr "" - -#: js/apps.js:146 -msgid "Please wait...." -msgstr "" - -#: js/apps.js:154 js/apps.js:155 js/apps.js:181 -msgid "Error while disabling app" -msgstr "" - -#: js/apps.js:157 js/apps.js:190 templates/apps.php:58 -msgid "Disable" -msgstr "" - -#: js/apps.js:165 js/apps.js:183 js/apps.js:220 templates/apps.php:64 -msgid "Enable" -msgstr "" - -#: js/apps.js:180 js/apps.js:215 js/apps.js:216 -msgid "Error while enabling app" -msgstr "" - -#: js/apps.js:227 -msgid "Updating...." -msgstr "" - -#: js/apps.js:231 -msgid "Error while updating app" -msgstr "" - -#: js/apps.js:235 -msgid "Updated" -msgstr "" - -#: js/apps.js:243 -msgid "Uninstalling ...." -msgstr "" - -#: js/apps.js:246 -msgid "Error while uninstalling app" -msgstr "" - -#: js/apps.js:247 -msgid "Uninstall" -msgstr "" - -#: js/personal.js:256 -msgid "Select a profile picture" -msgstr "" - -#: js/personal.js:287 -msgid "Very weak password" -msgstr "" - -#: js/personal.js:288 -msgid "Weak password" -msgstr "" - -#: js/personal.js:289 -msgid "So-so password" -msgstr "" - -#: js/personal.js:290 -msgid "Good password" -msgstr "" - -#: js/personal.js:291 -msgid "Strong password" -msgstr "" - -#: js/personal.js:328 -msgid "Valid until {date}" -msgstr "" - -#: js/personal.js:333 js/personal.js:334 js/users/users.js:75 -#: templates/personal.php:195 templates/personal.php:196 -#: templates/users/part.grouplist.php:46 templates/users/part.userlist.php:108 -msgid "Delete" -msgstr "" - -#: js/personal.js:350 -msgid "Decrypting files... Please wait, this can take some time." -msgstr "" - -#: js/personal.js:364 -msgid "Delete encryption keys permanently." -msgstr "" - -#: js/personal.js:378 -msgid "Restore encryption keys." -msgstr "" - -#: js/settings.js:27 js/users/users.js:49 -#: templates/users/part.createuser.php:12 templates/users/part.userlist.php:10 -msgid "Groups" -msgstr "" - -#: js/users/deleteHandler.js:205 -msgid "Unable to delete {objName}" -msgstr "" - -#: js/users/groups.js:94 js/users/groups.js:202 -msgid "Error creating group" -msgstr "" - -#: js/users/groups.js:201 -msgid "A valid group name must be provided" -msgstr "" - -#: js/users/groups.js:229 -msgid "deleted {groupName}" -msgstr "" - -#: js/users/groups.js:230 js/users/users.js:301 -msgid "undo" -msgstr "" - -#: js/users/users.js:53 templates/users/part.userlist.php:41 -#: templates/users/part.userlist.php:57 -msgid "no group" -msgstr "" - -#: js/users/users.js:96 templates/users/part.userlist.php:98 -msgid "never" -msgstr "" - -#: js/users/users.js:300 -msgid "deleted {userName}" -msgstr "" - -#: js/users/users.js:436 -msgid "add group" -msgstr "" - -#: js/users/users.js:657 -msgid "A valid username must be provided" -msgstr "" - -#: js/users/users.js:658 js/users/users.js:664 js/users/users.js:679 -msgid "Error creating user" -msgstr "" - -#: js/users/users.js:663 -msgid "A valid password must be provided" -msgstr "" - -#: js/users/users.js:695 -msgid "Warning: Home directory for user \"{user}\" already exists" -msgstr "" - -#: personal.php:49 personal.php:50 -msgid "__language_name__" -msgstr "" - -#: personal.php:105 -msgid "Personal Info" -msgstr "" - -#: personal.php:130 templates/personal.php:173 -msgid "SSL root certificates" -msgstr "" - -#: personal.php:132 templates/admin.php:382 templates/personal.php:214 -msgid "Encryption" -msgstr "" - -#: templates/admin.php:23 -msgid "Everything (fatal issues, errors, warnings, info, debug)" -msgstr "" - -#: templates/admin.php:24 -msgid "Info, warnings, errors and fatal issues" -msgstr "" - -#: templates/admin.php:25 -msgid "Warnings, errors and fatal issues" -msgstr "" - -#: templates/admin.php:26 -msgid "Errors and fatal issues" -msgstr "" - -#: templates/admin.php:27 -msgid "Fatal issues only" -msgstr "" - -#: templates/admin.php:31 templates/admin.php:38 -msgid "None" -msgstr "" - -#: templates/admin.php:32 -msgid "Login" -msgstr "" - -#: templates/admin.php:33 -msgid "Plain" -msgstr "" - -#: templates/admin.php:34 -msgid "NT LAN Manager" -msgstr "" - -#: templates/admin.php:39 -msgid "SSL" -msgstr "" - -#: templates/admin.php:40 -msgid "TLS" -msgstr "" - -#: templates/admin.php:76 templates/admin.php:90 -msgid "Security Warning" -msgstr "" - -#: templates/admin.php:79 -#, php-format -msgid "" -"You are accessing %s via HTTP. We strongly suggest you configure your server " -"to require using HTTPS instead." -msgstr "" - -#: templates/admin.php:93 -msgid "" -"Your data directory and your files are probably accessible from the " -"internet. The .htaccess file is not working. We strongly suggest that you " -"configure your webserver in a way that the data directory is no longer " -"accessible or you move the data directory outside the webserver document " -"root." -msgstr "" - -#: templates/admin.php:103 -msgid "Setup Warning" -msgstr "" - -#: templates/admin.php:106 -msgid "" -"PHP is apparently setup to strip inline doc blocks. This will make several " -"core apps inaccessible." -msgstr "" - -#: templates/admin.php:107 -msgid "" -"This is probably caused by a cache/accelerator such as Zend OPcache or " -"eAccelerator." -msgstr "" - -#: templates/admin.php:118 -msgid "Database Performance Info" -msgstr "" - -#: templates/admin.php:121 -msgid "" -"SQLite is used as database. For larger installations we recommend to change " -"this. To migrate to another database use the command line tool: 'occ db:" -"convert-type'" -msgstr "" - -#: templates/admin.php:132 -msgid "Module 'fileinfo' missing" -msgstr "" - -#: templates/admin.php:135 -msgid "" -"The PHP module 'fileinfo' is missing. We strongly recommend to enable this " -"module to get best results with mime-type detection." -msgstr "" - -#: templates/admin.php:146 -msgid "Your PHP version is outdated" -msgstr "" - -#: templates/admin.php:149 -msgid "" -"Your PHP version is outdated. We strongly recommend to update to 5.3.8 or " -"newer because older versions are known to be broken. It is possible that " -"this installation is not working correctly." -msgstr "" - -#: templates/admin.php:160 -msgid "PHP charset is not set to UTF-8" -msgstr "" - -#: templates/admin.php:163 -msgid "" -"PHP charset is not set to UTF-8. This can cause major issues with non-ASCII " -"characters in file names. We highly recommend to change the value of " -"'default_charset' php.ini to 'UTF-8'." -msgstr "" - -#: templates/admin.php:174 -msgid "Locale not working" -msgstr "" - -#: templates/admin.php:179 -msgid "System locale can not be set to a one which supports UTF-8." -msgstr "" - -#: templates/admin.php:183 -msgid "" -"This means that there might be problems with certain characters in file " -"names." -msgstr "" - -#: templates/admin.php:187 -#, php-format -msgid "" -"We strongly suggest to install the required packages on your system to " -"support one of the following locales: %s." -msgstr "" - -#: templates/admin.php:198 -msgid "URL generation in notification emails" -msgstr "" - -#: templates/admin.php:201 -#, php-format -msgid "" -"If your installation is not installed in the root of the domain and uses " -"system cron, there can be issues with the URL generation. To avoid these " -"problems, please set the \"overwritewebroot\" option in your config.php file " -"to the webroot path of your installation (Suggested: \"%s\")" -msgstr "" - -#: templates/admin.php:209 -msgid "Connectivity Checks" -msgstr "" - -#: templates/admin.php:211 -msgid "No problems found" -msgstr "" - -#: templates/admin.php:215 -#, php-format -msgid "Please double check the <a href='%s'>installation guides</a>." -msgstr "" - -#: templates/admin.php:234 -#, php-format -msgid "Last cron was executed at %s." -msgstr "" - -#: templates/admin.php:237 -#, php-format -msgid "" -"Last cron was executed at %s. This is more than an hour ago, something seems " -"wrong." -msgstr "" - -#: templates/admin.php:241 -msgid "Cron was not executed yet!" -msgstr "" - -#: templates/admin.php:251 -msgid "Execute one task with each page loaded" -msgstr "" - -#: templates/admin.php:259 -msgid "" -"cron.php is registered at a webcron service to call cron.php every 15 " -"minutes over http." -msgstr "" - -#: templates/admin.php:267 -msgid "Use system's cron service to call the cron.php file every 15 minutes." -msgstr "" - -#: templates/admin.php:276 -msgid "Allow apps to use the Share API" -msgstr "" - -#: templates/admin.php:281 -msgid "Allow users to share via link" -msgstr "" - -#: templates/admin.php:287 -msgid "Enforce password protection" -msgstr "" - -#: templates/admin.php:290 -msgid "Allow public uploads" -msgstr "" - -#: templates/admin.php:294 -msgid "Set default expiration date" -msgstr "" - -#: templates/admin.php:298 -msgid "Expire after " -msgstr "" - -#: templates/admin.php:301 -msgid "days" -msgstr "" - -#: templates/admin.php:304 -msgid "Enforce expiration date" -msgstr "" - -#: templates/admin.php:309 -msgid "Allow resharing" -msgstr "" - -#: templates/admin.php:314 -msgid "Restrict users to only share with users in their groups" -msgstr "" - -#: templates/admin.php:319 -msgid "Allow users to send mail notification for shared files" -msgstr "" - -#: templates/admin.php:324 -msgid "Exclude groups from sharing" -msgstr "" - -#: templates/admin.php:329 -msgid "" -"These groups will still be able to receive shares, but not to initiate them." -msgstr "" - -#: templates/admin.php:345 -msgid "Enforce HTTPS" -msgstr "" - -#: templates/admin.php:347 -#, php-format -msgid "Forces the clients to connect to %s via an encrypted connection." -msgstr "" - -#: templates/admin.php:353 -#, php-format -msgid "" -"Please connect to your %s via HTTPS to enable or disable the SSL enforcement." -msgstr "" - -#: templates/admin.php:366 -msgid "This is used for sending out notifications." -msgstr "" - -#: templates/admin.php:369 -msgid "Send mode" -msgstr "" - -#: templates/admin.php:397 -msgid "From address" -msgstr "" - -#: templates/admin.php:398 -msgid "mail" -msgstr "" - -#: templates/admin.php:405 -msgid "Authentication method" -msgstr "" - -#: templates/admin.php:418 -msgid "Authentication required" -msgstr "" - -#: templates/admin.php:422 -msgid "Server address" -msgstr "" - -#: templates/admin.php:426 -msgid "Port" -msgstr "" - -#: templates/admin.php:432 -msgid "Credentials" -msgstr "" - -#: templates/admin.php:433 -msgid "SMTP Username" -msgstr "" - -#: templates/admin.php:436 -msgid "SMTP Password" -msgstr "" - -#: templates/admin.php:437 -msgid "Store credentials" -msgstr "" - -#: templates/admin.php:442 -msgid "Test email settings" -msgstr "" - -#: templates/admin.php:443 -msgid "Send email" -msgstr "" - -#: templates/admin.php:449 -msgid "Log level" -msgstr "" - -#: templates/admin.php:481 -msgid "More" -msgstr "" - -#: templates/admin.php:482 -msgid "Less" -msgstr "" - -#: templates/admin.php:488 templates/personal.php:263 -msgid "Version" -msgstr "" - -#: templates/admin.php:492 templates/personal.php:266 -msgid "" -"Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank" -"\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" " -"target=\"_blank\">source code</a> is licensed under the <a href=\"http://www." -"gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero " -"General Public License\">AGPL</abbr></a>." -msgstr "" - -#: templates/apps.php:8 -msgid "More apps" -msgstr "" - -#: templates/apps.php:11 -msgid "Add your app" -msgstr "" - -#: templates/apps.php:24 -msgid "by" -msgstr "" - -#: templates/apps.php:26 -msgid "licensed" -msgstr "" - -#: templates/apps.php:40 -msgid "Documentation:" -msgstr "" - -#: templates/apps.php:43 templates/help.php:7 -msgid "User Documentation" -msgstr "" - -#: templates/apps.php:49 -msgid "Admin Documentation" -msgstr "" - -#: templates/apps.php:55 -#, php-format -msgid "Update to %s" -msgstr "" - -#: templates/apps.php:60 -msgid "Enable only for specific groups" -msgstr "" - -#: templates/apps.php:67 -msgid "Uninstall App" -msgstr "" - -#: templates/help.php:13 -msgid "Administrator Documentation" -msgstr "" - -#: templates/help.php:20 -msgid "Online Documentation" -msgstr "" - -#: templates/help.php:25 -msgid "Forum" -msgstr "" - -#: templates/help.php:33 -msgid "Bugtracker" -msgstr "" - -#: templates/help.php:40 -msgid "Commercial Support" -msgstr "" - -#: templates/personal.php:25 -msgid "Get the apps to sync your files" -msgstr "" - -#: templates/personal.php:38 -msgid "" -"If you want to support the project\n" -"\t\t<a href=\"https://owncloud.org/contribute\"\n" -"\t\t\ttarget=\"_blank\">join development</a>\n" -"\t\tor\n" -"\t\t<a href=\"https://owncloud.org/promote\"\n" -"\t\t\ttarget=\"_blank\">spread the word</a>!" -msgstr "" - -#: templates/personal.php:48 -msgid "Show First Run Wizard again" -msgstr "" - -#: templates/personal.php:57 -#, php-format -msgid "You have used <strong>%s</strong> of the available <strong>%s</strong>" -msgstr "" - -#: templates/personal.php:68 templates/users/part.createuser.php:8 -#: templates/users/part.userlist.php:9 -msgid "Password" -msgstr "" - -#: templates/personal.php:69 -msgid "Your password was changed" -msgstr "" - -#: templates/personal.php:70 -msgid "Unable to change your password" -msgstr "" - -#: templates/personal.php:72 -msgid "Current password" -msgstr "" - -#: templates/personal.php:75 -msgid "New password" -msgstr "" - -#: templates/personal.php:79 -msgid "Change password" -msgstr "" - -#: templates/personal.php:91 templates/users/part.userlist.php:8 -msgid "Full Name" -msgstr "" - -#: templates/personal.php:106 -msgid "Email" -msgstr "" - -#: templates/personal.php:108 -msgid "Your email address" -msgstr "" - -#: templates/personal.php:111 -msgid "" -"Fill in an email address to enable password recovery and receive " -"notifications" -msgstr "" - -#: templates/personal.php:119 -msgid "Profile picture" -msgstr "" - -#: templates/personal.php:124 -msgid "Upload new" -msgstr "" - -#: templates/personal.php:126 -msgid "Select new from Files" -msgstr "" - -#: templates/personal.php:127 -msgid "Remove image" -msgstr "" - -#: templates/personal.php:128 -msgid "Either png or jpg. Ideally square but you will be able to crop it." -msgstr "" - -#: templates/personal.php:130 -msgid "Your avatar is provided by your original account." -msgstr "" - -#: templates/personal.php:134 -msgid "Cancel" -msgstr "" - -#: templates/personal.php:135 -msgid "Choose as profile image" -msgstr "" - -#: templates/personal.php:141 templates/personal.php:142 -msgid "Language" -msgstr "" - -#: templates/personal.php:161 -msgid "Help translate" -msgstr "" - -#: templates/personal.php:176 -msgid "Common Name" -msgstr "" - -#: templates/personal.php:177 -msgid "Valid until" -msgstr "" - -#: templates/personal.php:178 -msgid "Issued By" -msgstr "" - -#: templates/personal.php:187 -#, php-format -msgid "Valid until %s" -msgstr "" - -#: templates/personal.php:206 -msgid "Import Root Certificate" -msgstr "" - -#: templates/personal.php:220 -msgid "The encryption app is no longer enabled, please decrypt all your files" -msgstr "" - -#: templates/personal.php:226 -msgid "Log-in password" -msgstr "" - -#: templates/personal.php:231 -msgid "Decrypt all Files" -msgstr "" - -#: templates/personal.php:241 -msgid "" -"Your encryption keys are moved to a backup location. If something went wrong " -"you can restore the keys. Only delete them permanently if you are sure that " -"all files are decrypted correctly." -msgstr "" - -#: templates/personal.php:245 -msgid "Restore Encryption Keys" -msgstr "" - -#: templates/personal.php:249 -msgid "Delete Encryption Keys" -msgstr "" - -#: templates/users/main.php:36 -msgid "Show storage location" -msgstr "" - -#: templates/users/main.php:40 -msgid "Show last log in" -msgstr "" - -#: templates/users/part.createuser.php:4 -msgid "Login Name" -msgstr "" - -#: templates/users/part.createuser.php:20 -msgid "Create" -msgstr "" - -#: templates/users/part.createuser.php:26 -msgid "Admin Recovery Password" -msgstr "" - -#: templates/users/part.createuser.php:27 -#: templates/users/part.createuser.php:28 -msgid "" -"Enter the recovery password in order to recover the users files during " -"password change" -msgstr "" - -#: templates/users/part.createuser.php:32 -msgid "Search Users and Groups" -msgstr "" - -#: templates/users/part.grouplist.php:5 -msgid "Add Group" -msgstr "" - -#: templates/users/part.grouplist.php:10 -msgid "Group" -msgstr "" - -#: templates/users/part.grouplist.php:18 -msgid "Everyone" -msgstr "" - -#: templates/users/part.grouplist.php:31 -msgid "Admins" -msgstr "" - -#: templates/users/part.setquota.php:3 -msgid "Default Quota" -msgstr "" - -#: templates/users/part.setquota.php:5 templates/users/part.userlist.php:66 -msgid "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" -msgstr "" - -#: templates/users/part.setquota.php:7 templates/users/part.userlist.php:75 -msgid "Unlimited" -msgstr "" - -#: templates/users/part.setquota.php:22 templates/users/part.userlist.php:90 -msgid "Other" -msgstr "" - -#: templates/users/part.userlist.php:7 -msgid "Username" -msgstr "" - -#: templates/users/part.userlist.php:12 -msgid "Group Admin for" -msgstr "" - -#: templates/users/part.userlist.php:14 -msgid "Quota" -msgstr "" - -#: templates/users/part.userlist.php:15 -msgid "Storage Location" -msgstr "" - -#: templates/users/part.userlist.php:16 -msgid "Last Login" -msgstr "" - -#: templates/users/part.userlist.php:30 -msgid "change full name" -msgstr "" - -#: templates/users/part.userlist.php:34 -msgid "set new password" -msgstr "" - -#: templates/users/part.userlist.php:70 -msgid "Default" -msgstr "" diff --git a/l10n/templates/user_ldap.pot b/l10n/templates/user_ldap.pot deleted file mode 100644 index 57a1d792ee4..00000000000 --- a/l10n/templates/user_ldap.pot +++ /dev/null @@ -1,609 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: ownCloud Core 8.0.0\n" -"Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-11-06 01:54-0500\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: LANGUAGE <LL@li.org>\n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" - -#: ajax/clearMappings.php:34 -msgid "Failed to clear the mappings." -msgstr "" - -#: ajax/deleteConfiguration.php:34 -msgid "Failed to delete the server configuration" -msgstr "" - -#: ajax/testConfiguration.php:39 -msgid "The configuration is valid and the connection could be established!" -msgstr "" - -#: ajax/testConfiguration.php:42 -msgid "" -"The configuration is valid, but the Bind failed. Please check the server " -"settings and credentials." -msgstr "" - -#: ajax/testConfiguration.php:46 -msgid "" -"The configuration is invalid. Please have a look at the logs for further " -"details." -msgstr "" - -#: ajax/wizard.php:32 -msgid "No action specified" -msgstr "" - -#: ajax/wizard.php:38 -msgid "No configuration specified" -msgstr "" - -#: ajax/wizard.php:97 -msgid "No data specified" -msgstr "" - -#: ajax/wizard.php:105 -#, php-format -msgid " Could not set configuration %s" -msgstr "" - -#: js/settings.js:67 -msgid "Deletion failed" -msgstr "" - -#: js/settings.js:83 -msgid "Take over settings from recent server configuration?" -msgstr "" - -#: js/settings.js:84 -msgid "Keep settings?" -msgstr "" - -#: js/settings.js:93 -msgid "{nthServer}. Server" -msgstr "" - -#: js/settings.js:99 -msgid "Cannot add server configuration" -msgstr "" - -#: js/settings.js:127 -msgid "mappings cleared" -msgstr "" - -#: js/settings.js:128 -msgid "Success" -msgstr "" - -#: js/settings.js:133 -msgid "Error" -msgstr "" - -#: js/settings.js:266 -msgid "Please specify a Base DN" -msgstr "" - -#: js/settings.js:267 -msgid "Could not determine Base DN" -msgstr "" - -#: js/settings.js:299 -msgid "Please specify the port" -msgstr "" - -#: js/settings.js:937 -msgid "Configuration OK" -msgstr "" - -#: js/settings.js:946 -msgid "Configuration incorrect" -msgstr "" - -#: js/settings.js:955 -msgid "Configuration incomplete" -msgstr "" - -#: js/settings.js:972 js/settings.js:981 -msgid "Select groups" -msgstr "" - -#: js/settings.js:975 js/settings.js:984 -msgid "Select object classes" -msgstr "" - -#: js/settings.js:978 -msgid "Select attributes" -msgstr "" - -#: js/settings.js:1006 -msgid "Connection test succeeded" -msgstr "" - -#: js/settings.js:1013 -msgid "Connection test failed" -msgstr "" - -#: js/settings.js:1022 -msgid "Do you really want to delete the current Server Configuration?" -msgstr "" - -#: js/settings.js:1023 -msgid "Confirm Deletion" -msgstr "" - -#: lib/wizard.php:98 lib/wizard.php:113 -#, php-format -msgid "%s group found" -msgid_plural "%s groups found" -msgstr[0] "" -msgstr[1] "" - -#: lib/wizard.php:127 -#, php-format -msgid "%s user found" -msgid_plural "%s users found" -msgstr[0] "" -msgstr[1] "" - -#: lib/wizard.php:394 lib/wizard.php:1131 -msgid "Could not find the desired feature" -msgstr "" - -#: lib/wizard.php:938 lib/wizard.php:950 -msgid "Invalid Host" -msgstr "" - -#: settings.php:53 -msgid "Server" -msgstr "" - -#: settings.php:54 -msgid "User Filter" -msgstr "" - -#: settings.php:55 -msgid "Login Filter" -msgstr "" - -#: settings.php:56 -msgid "Group Filter" -msgstr "" - -#: templates/part.settingcontrols.php:2 -msgid "Save" -msgstr "" - -#: templates/part.settingcontrols.php:4 -msgid "Test Configuration" -msgstr "" - -#: templates/part.settingcontrols.php:10 templates/part.wizardcontrols.php:15 -msgid "Help" -msgstr "" - -#: templates/part.wizard-groupfilter.php:4 -#, php-format -msgid "Groups meeting these criteria are available in %s:" -msgstr "" - -#: templates/part.wizard-groupfilter.php:8 -#: templates/part.wizard-userfilter.php:8 -msgid "only those object classes:" -msgstr "" - -#: templates/part.wizard-groupfilter.php:17 -#: templates/part.wizard-userfilter.php:17 -msgid "only from those groups:" -msgstr "" - -#: templates/part.wizard-groupfilter.php:25 -#: templates/part.wizard-loginfilter.php:32 -#: templates/part.wizard-userfilter.php:25 -msgid "Edit raw filter instead" -msgstr "" - -#: templates/part.wizard-groupfilter.php:30 -#: templates/part.wizard-loginfilter.php:37 -#: templates/part.wizard-userfilter.php:30 -msgid "Raw LDAP filter" -msgstr "" - -#: templates/part.wizard-groupfilter.php:31 -#, php-format -msgid "" -"The filter specifies which LDAP groups shall have access to the %s instance." -msgstr "" - -#: templates/part.wizard-groupfilter.php:34 -#: templates/part.wizard-userfilter.php:34 -msgid "Test Filter" -msgstr "" - -#: templates/part.wizard-groupfilter.php:41 -msgid "groups found" -msgstr "" - -#: templates/part.wizard-loginfilter.php:4 -msgid "Users login with this attribute:" -msgstr "" - -#: templates/part.wizard-loginfilter.php:8 -msgid "LDAP Username:" -msgstr "" - -#: templates/part.wizard-loginfilter.php:16 -msgid "LDAP Email Address:" -msgstr "" - -#: templates/part.wizard-loginfilter.php:24 -msgid "Other Attributes:" -msgstr "" - -#: templates/part.wizard-loginfilter.php:38 -#, php-format -msgid "" -"Defines the filter to apply, when login is attempted. %%uid replaces the " -"username in the login action. Example: \"uid=%%uid\"" -msgstr "" - -#: templates/part.wizard-server.php:13 -msgid "1. Server" -msgstr "" - -#: templates/part.wizard-server.php:20 -#, php-format -msgid "%s. Server:" -msgstr "" - -#: templates/part.wizard-server.php:25 -msgid "Add Server Configuration" -msgstr "" - -#: templates/part.wizard-server.php:28 -msgid "Delete Configuration" -msgstr "" - -#: templates/part.wizard-server.php:37 -msgid "Host" -msgstr "" - -#: templates/part.wizard-server.php:38 -msgid "" -"You can omit the protocol, except you require SSL. Then start with ldaps://" -msgstr "" - -#: templates/part.wizard-server.php:43 -msgid "Port" -msgstr "" - -#: templates/part.wizard-server.php:51 -msgid "User DN" -msgstr "" - -#: templates/part.wizard-server.php:52 -msgid "" -"The DN of the client user with which the bind shall be done, e.g. uid=agent," -"dc=example,dc=com. For anonymous access, leave DN and Password empty." -msgstr "" - -#: templates/part.wizard-server.php:59 -msgid "Password" -msgstr "" - -#: templates/part.wizard-server.php:60 -msgid "For anonymous access, leave DN and Password empty." -msgstr "" - -#: templates/part.wizard-server.php:67 -msgid "One Base DN per line" -msgstr "" - -#: templates/part.wizard-server.php:68 -msgid "You can specify Base DN for users and groups in the Advanced tab" -msgstr "" - -#: templates/part.wizard-server.php:75 -msgid "" -"Avoids automatic LDAP requests. Better for bigger setups, but requires some " -"LDAP knowledge." -msgstr "" - -#: templates/part.wizard-server.php:78 -msgid "Manually enter LDAP filters (recommended for large directories)" -msgstr "" - -#: templates/part.wizard-userfilter.php:4 -#, php-format -msgid "Limit %s access to users meeting these criteria:" -msgstr "" - -#: templates/part.wizard-userfilter.php:31 -#, php-format -msgid "" -"The filter specifies which LDAP users shall have access to the %s instance." -msgstr "" - -#: templates/part.wizard-userfilter.php:41 -msgid "users found" -msgstr "" - -#: templates/part.wizardcontrols.php:2 -msgid "Saving" -msgstr "" - -#: templates/part.wizardcontrols.php:6 -msgid "Back" -msgstr "" - -#: templates/part.wizardcontrols.php:9 -msgid "Continue" -msgstr "" - -#: templates/settings.php:2 -msgid "LDAP" -msgstr "" - -#: templates/settings.php:9 -msgid "Expert" -msgstr "" - -#: templates/settings.php:10 -msgid "Advanced" -msgstr "" - -#: templates/settings.php:13 -msgid "" -"<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may " -"experience unexpected behavior. Please ask your system administrator to " -"disable one of them." -msgstr "" - -#: templates/settings.php:16 -msgid "" -"<b>Warning:</b> The PHP LDAP module is not installed, the backend will not " -"work. Please ask your system administrator to install it." -msgstr "" - -#: templates/settings.php:22 -msgid "Connection Settings" -msgstr "" - -#: templates/settings.php:24 -msgid "Configuration Active" -msgstr "" - -#: templates/settings.php:24 -msgid "When unchecked, this configuration will be skipped." -msgstr "" - -#: templates/settings.php:25 -msgid "Backup (Replica) Host" -msgstr "" - -#: templates/settings.php:25 -msgid "" -"Give an optional backup host. It must be a replica of the main LDAP/AD " -"server." -msgstr "" - -#: templates/settings.php:26 -msgid "Backup (Replica) Port" -msgstr "" - -#: templates/settings.php:27 -msgid "Disable Main Server" -msgstr "" - -#: templates/settings.php:27 -msgid "Only connect to the replica server." -msgstr "" - -#: templates/settings.php:28 -msgid "Case insensitive LDAP server (Windows)" -msgstr "" - -#: templates/settings.php:29 -msgid "Turn off SSL certificate validation." -msgstr "" - -#: templates/settings.php:29 -#, php-format -msgid "" -"Not recommended, use it for testing only! If connection only works with this " -"option, import the LDAP server's SSL certificate in your %s server." -msgstr "" - -#: templates/settings.php:30 -msgid "Cache Time-To-Live" -msgstr "" - -#: templates/settings.php:30 -msgid "in seconds. A change empties the cache." -msgstr "" - -#: templates/settings.php:32 -msgid "Directory Settings" -msgstr "" - -#: templates/settings.php:34 -msgid "User Display Name Field" -msgstr "" - -#: templates/settings.php:34 -msgid "The LDAP attribute to use to generate the user's display name." -msgstr "" - -#: templates/settings.php:35 -msgid "Base User Tree" -msgstr "" - -#: templates/settings.php:35 -msgid "One User Base DN per line" -msgstr "" - -#: templates/settings.php:36 -msgid "User Search Attributes" -msgstr "" - -#: templates/settings.php:36 templates/settings.php:39 -msgid "Optional; one attribute per line" -msgstr "" - -#: templates/settings.php:37 -msgid "Group Display Name Field" -msgstr "" - -#: templates/settings.php:37 -msgid "The LDAP attribute to use to generate the groups's display name." -msgstr "" - -#: templates/settings.php:38 -msgid "Base Group Tree" -msgstr "" - -#: templates/settings.php:38 -msgid "One Group Base DN per line" -msgstr "" - -#: templates/settings.php:39 -msgid "Group Search Attributes" -msgstr "" - -#: templates/settings.php:40 -msgid "Group-Member association" -msgstr "" - -#: templates/settings.php:41 -msgid "Nested Groups" -msgstr "" - -#: templates/settings.php:41 -msgid "" -"When switched on, groups that contain groups are supported. (Only works if " -"the group member attribute contains DNs.)" -msgstr "" - -#: templates/settings.php:42 -msgid "Paging chunksize" -msgstr "" - -#: templates/settings.php:42 -msgid "" -"Chunksize used for paged LDAP searches that may return bulky results like " -"user or group enumeration. (Setting it 0 disables paged LDAP searches in " -"those situations.)" -msgstr "" - -#: templates/settings.php:44 -msgid "Special Attributes" -msgstr "" - -#: templates/settings.php:46 -msgid "Quota Field" -msgstr "" - -#: templates/settings.php:47 -msgid "Quota Default" -msgstr "" - -#: templates/settings.php:47 -msgid "in bytes" -msgstr "" - -#: templates/settings.php:48 -msgid "Email Field" -msgstr "" - -#: templates/settings.php:49 -msgid "User Home Folder Naming Rule" -msgstr "" - -#: templates/settings.php:49 -msgid "" -"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." -msgstr "" - -#: templates/settings.php:55 -msgid "Internal Username" -msgstr "" - -#: templates/settings.php:56 -msgid "" -"By default the internal username will be created from the UUID attribute. It " -"makes sure that the username is unique and characters do not need to be " -"converted. The internal username has the restriction that only these " -"characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced " -"with their ASCII correspondence or simply omitted. On collisions a number " -"will be added/increased. The internal username is used to identify a user " -"internally. It is also the default name for the user home folder. It is also " -"a part of remote URLs, for instance for all *DAV services. With this " -"setting, the default behavior can be overridden. To achieve a similar " -"behavior as before ownCloud 5 enter the user display name attribute in the " -"following field. Leave it empty for default behavior. Changes will have " -"effect only on newly mapped (added) LDAP users." -msgstr "" - -#: templates/settings.php:57 -msgid "Internal Username Attribute:" -msgstr "" - -#: templates/settings.php:58 -msgid "Override UUID detection" -msgstr "" - -#: templates/settings.php:59 -msgid "" -"By default, the UUID attribute is automatically detected. The UUID attribute " -"is used to doubtlessly identify LDAP users and groups. Also, the internal " -"username will be created based on the UUID, if not specified otherwise " -"above. You can override the setting and pass an attribute of your choice. " -"You must make sure that the attribute of your choice can be fetched for both " -"users and groups and it is unique. Leave it empty for default behavior. " -"Changes will have effect only on newly mapped (added) LDAP users and groups." -msgstr "" - -#: templates/settings.php:60 -msgid "UUID Attribute for Users:" -msgstr "" - -#: templates/settings.php:61 -msgid "UUID Attribute for Groups:" -msgstr "" - -#: templates/settings.php:62 -msgid "Username-LDAP User Mapping" -msgstr "" - -#: templates/settings.php:63 -msgid "" -"Usernames are used to store and assign (meta) data. In order to precisely " -"identify and recognize users, each LDAP user will have a internal username. " -"This requires a mapping from username to LDAP user. The created username is " -"mapped to the UUID of the LDAP user. Additionally the DN is cached as well " -"to reduce LDAP interaction, but it is not used for identification. If the DN " -"changes, the changes will be found. The internal username is used all over. " -"Clearing the mappings will have leftovers everywhere. Clearing the mappings " -"is not configuration sensitive, it affects all LDAP configurations! Never " -"clear the mappings in a production environment, only in a testing or " -"experimental stage." -msgstr "" - -#: templates/settings.php:64 -msgid "Clear Username-LDAP User Mapping" -msgstr "" - -#: templates/settings.php:64 -msgid "Clear Groupname-LDAP Group Mapping" -msgstr "" diff --git a/l10n/templates/user_webdavauth.pot b/l10n/templates/user_webdavauth.pot deleted file mode 100644 index 7d7831082f0..00000000000 --- a/l10n/templates/user_webdavauth.pot +++ /dev/null @@ -1,37 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: ownCloud Core 8.0.0\n" -"Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2014-11-06 01:54-0500\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: LANGUAGE <LL@li.org>\n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: templates/settings.php:2 -msgid "WebDAV Authentication" -msgstr "" - -#: templates/settings.php:3 -msgid "Address:" -msgstr "" - -#: templates/settings.php:5 -msgid "Save" -msgstr "" - -#: templates/settings.php:6 -msgid "" -"The user credentials will be sent to this address. This plugin checks the " -"response and will interpret the HTTP statuscodes 401 and 403 as invalid " -"credentials, and all other responses as valid credentials." -msgstr "" diff --git a/lib/base.php b/lib/base.php index 3cbab52ed7c..82c0c7aa6d0 100644 --- a/lib/base.php +++ b/lib/base.php @@ -216,7 +216,7 @@ class OC { public static function checkInstalled() { // Redirect to installer if not installed - if (!OC_Config::getValue('installed', false) && OC::$SUBURI != '/index.php') { + if (!\OC::$server->getConfig()->getSystemValue('installed', false) && OC::$SUBURI != '/index.php') { if (OC::$CLI) { throw new Exception('Not installed'); } else { @@ -229,11 +229,18 @@ class OC { public static function checkSSL() { // redirect to https site if configured - if (OC_Config::getValue("forcessl", false)) { - header('Strict-Transport-Security: max-age=31536000'); - ini_set("session.cookie_secure", "on"); + if (\OC::$server->getConfig()->getSystemValue('forcessl', false)) { + // Default HSTS policy + $header = 'Strict-Transport-Security: max-age=31536000'; + + // If SSL for subdomains is enabled add "; includeSubDomains" to the header + if(\OC::$server->getConfig()->getSystemValue('forceSSLforSubdomains', false)) { + $header .= '; includeSubDomains'; + } + header($header); + ini_set('session.cookie_secure', 'on'); if (OC_Request::serverProtocol() <> 'https' and !OC::$CLI) { - $url = "https://" . OC_Request::serverHost() . OC_Request::requestUri(); + $url = 'https://' . OC_Request::serverHost() . OC_Request::requestUri(); header("Location: $url"); exit(); } @@ -247,7 +254,7 @@ class OC { public static function checkMaintenanceMode() { // Allow ajax update script to execute without being stopped - if (OC_Config::getValue('maintenance', false) && OC::$SUBURI != '/core/ajax/update.php') { + if (\OC::$server->getConfig()->getSystemValue('maintenance', false) && OC::$SUBURI != '/core/ajax/update.php') { // send http status 503 header('HTTP/1.1 503 Service Temporarily Unavailable'); header('Status: 503 Service Temporarily Unavailable'); @@ -264,7 +271,7 @@ class OC { public static function checkSingleUserMode() { $user = OC_User::getUserSession()->getUser(); $group = OC_Group::getManager()->get('admin'); - if ($user && OC_Config::getValue('singleuser', false) && !$group->inGroup($user)) { + if ($user && \OC::$server->getConfig()->getSystemValue('singleuser', false) && !$group->inGroup($user)) { // send http status 503 header('HTTP/1.1 503 Service Temporarily Unavailable'); header('Status: 503 Service Temporarily Unavailable'); @@ -294,10 +301,11 @@ class OC { */ public static function checkUpgrade($showTemplate = true) { if (\OCP\Util::needUpgrade()) { - if ($showTemplate && !OC_Config::getValue('maintenance', false)) { + $config = \OC::$server->getConfig(); + if ($showTemplate && !$config->getSystemValue('maintenance', false)) { $version = OC_Util::getVersion(); - $oldTheme = OC_Config::getValue('theme'); - OC_Config::setValue('theme', ''); + $oldTheme = $config->getSystemValue('theme'); + $config->setSystemValue('theme', ''); OC_Util::addScript('config'); // needed for web root OC_Util::addScript('update'); $tmpl = new OC_Template('', 'update.admin', 'guest'); @@ -351,7 +359,7 @@ class OC { OC_Util::addVendorScript('moment/min/moment-with-locales'); // avatars - if (\OC_Config::getValue('enable_avatars', true) === true) { + if (\OC::$server->getConfig()->getSystemValue('enable_avatars', true) === true) { \OC_Util::addScript('placeholder'); \OC_Util::addVendorScript('blueimp-md5/js/md5'); \OC_Util::addScript('jquery.avatar'); @@ -431,7 +439,7 @@ class OC { * @return string */ private static function getSessionLifeTime() { - return OC_Config::getValue('session_lifetime', 60 * 60 * 24); + return \OC::$server->getConfig()->getSystemValue('session_lifetime', 60 * 60 * 24); } public static function loadAppClassPaths() { @@ -457,8 +465,7 @@ class OC { // setup 3rdparty autoloader $vendorAutoLoad = OC::$THIRDPARTYROOT . '/3rdparty/autoload.php'; if (file_exists($vendorAutoLoad)) { - $loader = require_once $vendorAutoLoad; - $loader->add('PasswordHash', OC::$THIRDPARTYROOT . '/3rdparty/phpass'); + require_once $vendorAutoLoad; } else { OC_Response::setStatus(OC_Response::STATUS_SERVICE_UNAVAILABLE); OC_Template::printErrorPage('Composer autoloader not found, unable to continue.'); @@ -554,8 +561,10 @@ class OC { $sessionLifeTime = self::getSessionLifeTime(); @ini_set('gc_maxlifetime', (string)$sessionLifeTime); + $config = \OC::$server->getConfig(); + // User and Groups - if (!OC_Config::getValue("installed", false)) { + if (!$config->getSystemValue("installed", false)) { self::$server->getSession()->set('user_id', ''); } @@ -578,14 +587,14 @@ class OC { $tmpManager = \OC::$server->getTempManager(); register_shutdown_function(array($tmpManager, 'clean')); - if (OC_Config::getValue('installed', false) && !self::checkUpgrade(false)) { + if ($config->getSystemValue('installed', false) && !self::checkUpgrade(false)) { if (\OC::$server->getAppConfig()->getValue('core', 'backgroundjobs_mode', 'ajax') == 'ajax') { OC_Util::addScript('backgroundjobs'); } } // Check whether the sample configuration has been copied - if(OC_Config::getValue('copied_sample_config', false)) { + if($config->getSystemValue('copied_sample_config', false)) { $l = \OC::$server->getL10N('lib'); header('HTTP/1.1 503 Service Temporarily Unavailable'); header('Status: 503 Service Temporarily Unavailable'); @@ -606,14 +615,8 @@ class OC { header('HTTP/1.1 400 Bad Request'); header('Status: 400 Bad Request'); - $domain = $_SERVER['SERVER_NAME']; - // Append port to domain in case it is not - if($_SERVER['SERVER_PORT'] !== '80' && $_SERVER['SERVER_PORT'] !== '443') { - $domain .= ':'.$_SERVER['SERVER_PORT']; - } - $tmpl = new OCP\Template('core', 'untrustedDomain', 'guest'); - $tmpl->assign('domain', $domain); + $tmpl->assign('domain', $_SERVER['SERVER_NAME']); $tmpl->printPage(); exit(); @@ -633,7 +636,7 @@ class OC { * register hooks for the cache */ public static function registerCacheHooks() { - if (OC_Config::getValue('installed', false) && !\OCP\Util::needUpgrade()) { //don't try to do this before we are properly setup + if (\OC::$server->getConfig()->getSystemValue('installed', false) && !\OCP\Util::needUpgrade()) { //don't try to do this before we are properly setup \OCP\BackgroundJob::registerJob('OC\Cache\FileGlobalGC'); // NOTE: This will be replaced to use OCP @@ -646,10 +649,11 @@ class OC { * register hooks for the cache */ public static function registerLogRotate() { - if (OC_Config::getValue('installed', false) && OC_Config::getValue('log_rotate_size', false) && !\OCP\Util::needUpgrade()) { + $config = \OC::$server->getConfig(); + if ($config->getSystemValue('installed', false) && $config->getSystemValue('log_rotate_size', false) && !\OCP\Util::needUpgrade()) { //don't try to do this before we are properly setup //use custom logfile path if defined, otherwise use default of owncloud.log in data directory - \OCP\BackgroundJob::registerJob('OC\Log\Rotate', OC_Config::getValue('logfile', OC_Config::getValue("datadirectory", OC::$SERVERROOT . '/data') . '/owncloud.log')); + \OCP\BackgroundJob::registerJob('OC\Log\Rotate', $config->getSystemValue('logfile', $config->getSystemValue('datadirectory', OC::$SERVERROOT . '/data') . '/owncloud.log')); } } @@ -679,7 +683,7 @@ class OC { * register hooks for sharing */ public static function registerShareHooks() { - if (\OC_Config::getValue('installed')) { + if (\OC::$server->getConfig()->getSystemValue('installed')) { OC_Hook::connect('OC_User', 'post_deleteUser', 'OC\Share\Hooks', 'post_deleteUser'); OC_Hook::connect('OC_User', 'post_addToGroup', 'OC\Share\Hooks', 'post_addToGroup'); OC_Hook::connect('OC_User', 'post_removeFromGroup', 'OC\Share\Hooks', 'post_removeFromGroup'); @@ -694,7 +698,7 @@ class OC { // generate an instanceid via \OC_Util::getInstanceId() because the // config file may not be writable. As such, we only register a class // loader cache if instanceid is available without trying to create one. - $instanceId = OC_Config::getValue('instanceid', null); + $instanceId = \OC::$server->getConfig()->getSystemValue('instanceid', null); if ($instanceId) { try { $memcacheFactory = new \OC\Memcache\Factory($instanceId); @@ -709,12 +713,13 @@ class OC { */ public static function handleRequest() { \OC::$server->getEventLogger()->start('handle_request', 'Handle request'); + $config = \OC::$server->getConfig(); // load all the classpaths from the enabled apps so they are available // in the routing files of each app OC::loadAppClassPaths(); // Check if ownCloud is installed or in maintenance (update) mode - if (!\OC::$server->getConfig()->getSystemValue('installed', false)) { + if (!$config->getSystemValue('installed', false)) { \OC::$server->getSession()->clear(); $controller = new OC\Core\Setup\Controller(\OC::$server->getConfig()); $controller->run($_POST); @@ -729,7 +734,7 @@ class OC { if (!self::$CLI and (!isset($_GET["logout"]) or ($_GET["logout"] !== 'true'))) { try { - if (!OC_Config::getValue('maintenance', false) && !\OCP\Util::needUpgrade()) { + if (!$config->getSystemValue('maintenance', false) && !\OCP\Util::needUpgrade()) { OC_App::loadApps(array('authentication')); OC_App::loadApps(array('filesystem', 'logging')); OC_App::loadApps(); @@ -795,7 +800,7 @@ class OC { if (isset($_GET["logout"]) and ($_GET["logout"])) { OC_JSON::callCheck(); if (isset($_COOKIE['oc_token'])) { - OC_Preferences::deleteKey(OC_User::getUser(), 'login_token', $_COOKIE['oc_token']); + $config->deleteUserValue(OC_User::getUser(), 'login_token', $_COOKIE['oc_token']); } OC_User::logout(); // redirect to webroot and add slash if webroot is empty @@ -854,12 +859,13 @@ class OC { * @param string $user */ protected static function cleanupLoginTokens($user) { - $cutoff = time() - OC_Config::getValue('remember_login_cookie_lifetime', 60 * 60 * 24 * 15); - $tokens = OC_Preferences::getKeys($user, 'login_token'); + $config = \OC::$server->getConfig(); + $cutoff = time() - $config->getSystemValue('remember_login_cookie_lifetime', 60 * 60 * 24 * 15); + $tokens = $config->getUserKeys($user, 'login_token'); foreach ($tokens as $token) { - $time = OC_Preferences::getValue($user, 'login_token', $token); + $time = $config->getUserValue($user, 'login_token', $token); if ($time < $cutoff) { - OC_Preferences::deleteKey($user, 'login_token', $token); + $config->deleteUserValue($user, 'login_token', $token); } } } diff --git a/lib/l10n/af_ZA.js b/lib/l10n/af_ZA.js index fd0ff979e2c..af812fe1e97 100644 --- a/lib/l10n/af_ZA.js +++ b/lib/l10n/af_ZA.js @@ -9,6 +9,7 @@ OC.L10N.register( "Unknown filetype" : "Onbekende leertipe", "Invalid image" : "Ongeldige prent", "web services under your control" : "webdienste onder jou beheer", + "seconds ago" : "sekondes gelede", "_%n minute ago_::_%n minutes ago_" : ["",""], "_%n hour ago_::_%n hours ago_" : ["","%n ure gelede"], "today" : "vandag", diff --git a/lib/l10n/af_ZA.json b/lib/l10n/af_ZA.json index 0a2bd668866..b3dedd54188 100644 --- a/lib/l10n/af_ZA.json +++ b/lib/l10n/af_ZA.json @@ -7,6 +7,7 @@ "Unknown filetype" : "Onbekende leertipe", "Invalid image" : "Ongeldige prent", "web services under your control" : "webdienste onder jou beheer", + "seconds ago" : "sekondes gelede", "_%n minute ago_::_%n minutes ago_" : ["",""], "_%n hour ago_::_%n hours ago_" : ["","%n ure gelede"], "today" : "vandag", diff --git a/lib/l10n/bg_BG.js b/lib/l10n/bg_BG.js index 82f0f3e51fc..a0c0dc3b8e7 100644 --- a/lib/l10n/bg_BG.js +++ b/lib/l10n/bg_BG.js @@ -17,6 +17,8 @@ OC.L10N.register( "No app name specified" : "Не е зададено име на преложението", "Unknown filetype" : "Непознат тип файл.", "Invalid image" : "Невалидно изображение.", + "Database Error" : "Грешка в базата данни", + "Please contact your system administrator." : "Моля, свържи се с админстратора.", "web services under your control" : "уеб услуги под твой контрол", "App directory already exists" : "Папката на приложението вече съществува.", "Can't create app folder. Please fix permissions. %s" : "Неуспешно създаване на папката за приложението. Моля, оправете разрешенията. %s", diff --git a/lib/l10n/bg_BG.json b/lib/l10n/bg_BG.json index 62c0ea60f07..aedb28be19e 100644 --- a/lib/l10n/bg_BG.json +++ b/lib/l10n/bg_BG.json @@ -15,6 +15,8 @@ "No app name specified" : "Не е зададено име на преложението", "Unknown filetype" : "Непознат тип файл.", "Invalid image" : "Невалидно изображение.", + "Database Error" : "Грешка в базата данни", + "Please contact your system administrator." : "Моля, свържи се с админстратора.", "web services under your control" : "уеб услуги под твой контрол", "App directory already exists" : "Папката на приложението вече съществува.", "Can't create app folder. Please fix permissions. %s" : "Неуспешно създаване на папката за приложението. Моля, оправете разрешенията. %s", diff --git a/lib/l10n/cs_CZ.js b/lib/l10n/cs_CZ.js index 113f32d40c5..b4419c8ef99 100644 --- a/lib/l10n/cs_CZ.js +++ b/lib/l10n/cs_CZ.js @@ -17,6 +17,8 @@ OC.L10N.register( "No app name specified" : "Nebyl zadan název aplikace", "Unknown filetype" : "Neznámý typ souboru", "Invalid image" : "Chybný obrázek", + "Database Error" : "Chyba databáze", + "Please contact your system administrator." : "Kontaktujte prosím svého správce systému.", "web services under your control" : "webové služby pod Vaší kontrolou", "App directory already exists" : "Adresář aplikace již existuje", "Can't create app folder. Please fix permissions. %s" : "Nelze vytvořit složku aplikace. Opravte práva souborů. %s", @@ -83,7 +85,7 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["před %n hodinou","před %n hodinami","před %n hodinami"], "today" : "dnes", "yesterday" : "včera", - "_%n day go_::_%n days ago_" : ["před %n dnem","před %n dny","před %n dny"], + "_%n day go_::_%n days ago_" : ["včera","před %n dny","před %n dny"], "last month" : "minulý měsíc", "_%n month ago_::_%n months ago_" : ["před %n měsícem","před %n měsíci","před %n měsíci"], "last year" : "minulý rok", @@ -101,16 +103,16 @@ OC.L10N.register( "This can usually be fixed by <a href=\"%s\" target=\"_blank\">giving the webserver write access to the root directory</a>." : "To lze obvykle vyřešit <a href=\"%s\" target=\"_blank\">povolením zápisu webovému serveru do kořenového adresáře</a>.", "Setting locale to %s failed" : "Nastavení jazyka na %s selhalo", "Please install one of these locales on your system and restart your webserver." : "Prosím nainstalujte alespoň jeden z těchto jazyků do svého systému a restartujte webový server.", - "Please ask your server administrator to install the module." : "Požádejte svého administrátora o instalaci tohoto modulu.", + "Please ask your server administrator to install the module." : "Požádejte svého správce systému o instalaci tohoto modulu.", "PHP module %s not installed." : "PHP modul %s není nainstalován.", "PHP %s or higher is required." : "Je vyžadováno PHP %s nebo vyšší.", - "Please ask your server administrator to update PHP to the latest version. Your PHP version is no longer supported by ownCloud and the PHP community." : "Požádejte svého administrátora o aktualizaci PHP na nejnovější verzi. Vaše verze PHP již není podporována komunitami ownCloud a PHP.", + "Please ask your server administrator to update PHP to the latest version. Your PHP version is no longer supported by ownCloud and the PHP community." : "Požádejte svého správce systému o aktualizaci PHP na nejnovější verzi. Vaše verze PHP již není podporována komunitami ownCloud a PHP.", "PHP Safe Mode is enabled. ownCloud requires that it is disabled to work properly." : "Je zapnut PHP Safe Mode. Pro správnou funkčnost ownCloud je třeba toto vypnout.", - "PHP Safe Mode is a deprecated and mostly useless setting that should be disabled. Please ask your server administrator to disable it in php.ini or in your webserver config." : "PHP Safe Mode je zastaralé a většinou zbytečné nastavení, které je třeba vypnout. Požádejte prosím svého administrátora o zakázání v php.ini nebo v konfiguraci webového serveru.", + "PHP Safe Mode is a deprecated and mostly useless setting that should be disabled. Please ask your server administrator to disable it in php.ini or in your webserver config." : "PHP Safe Mode je zastaralé a většinou zbytečné nastavení, které je třeba vypnout. Požádejte prosím správce systému o jeho zákaz v php.ini nebo v konfiguraci webového serveru.", "Magic Quotes is enabled. ownCloud requires that it is disabled to work properly." : "Je povoleno nastavení Magic Quotes. Pro správnou funkčnost ownCloud je třeba toto vypnout.", - "Magic Quotes is a deprecated and mostly useless setting that should be disabled. Please ask your server administrator to disable it in php.ini or in your webserver config." : "Magic Quotes je zastaralé a většinou zbytečné nastavení, které je třeba vypnout. Požádejte prosím svého administrátora o zakázání v php.ini nebo v konfiguraci webového serveru.", + "Magic Quotes is a deprecated and mostly useless setting that should be disabled. Please ask your server administrator to disable it in php.ini or in your webserver config." : "Magic Quotes je zastaralé a většinou zbytečné nastavení, které je třeba vypnout. Požádejte prosím správce systému o jeho zákaz v php.ini nebo v konfiguraci webového serveru.", "PHP modules have been installed, but they are still listed as missing?" : "PHP moduly jsou nainstalovány, ale stále se tváří jako chybějící?", - "Please ask your server administrator to restart the web server." : "Požádejte svého administrátora o restart webového serveru.", + "Please ask your server administrator to restart the web server." : "Požádejte svého správce systému o restart webového serveru.", "PostgreSQL >= 9 required" : "Je vyžadováno PostgreSQL >= 9", "Please upgrade your database version" : "Aktualizujte prosím verzi své databáze", "Error occurred while checking PostgreSQL version" : "Při zjišťování verze PostgreSQL došlo k chybě", diff --git a/lib/l10n/cs_CZ.json b/lib/l10n/cs_CZ.json index e8806f406ae..a487b849291 100644 --- a/lib/l10n/cs_CZ.json +++ b/lib/l10n/cs_CZ.json @@ -15,6 +15,8 @@ "No app name specified" : "Nebyl zadan název aplikace", "Unknown filetype" : "Neznámý typ souboru", "Invalid image" : "Chybný obrázek", + "Database Error" : "Chyba databáze", + "Please contact your system administrator." : "Kontaktujte prosím svého správce systému.", "web services under your control" : "webové služby pod Vaší kontrolou", "App directory already exists" : "Adresář aplikace již existuje", "Can't create app folder. Please fix permissions. %s" : "Nelze vytvořit složku aplikace. Opravte práva souborů. %s", @@ -81,7 +83,7 @@ "_%n hour ago_::_%n hours ago_" : ["před %n hodinou","před %n hodinami","před %n hodinami"], "today" : "dnes", "yesterday" : "včera", - "_%n day go_::_%n days ago_" : ["před %n dnem","před %n dny","před %n dny"], + "_%n day go_::_%n days ago_" : ["včera","před %n dny","před %n dny"], "last month" : "minulý měsíc", "_%n month ago_::_%n months ago_" : ["před %n měsícem","před %n měsíci","před %n měsíci"], "last year" : "minulý rok", @@ -99,16 +101,16 @@ "This can usually be fixed by <a href=\"%s\" target=\"_blank\">giving the webserver write access to the root directory</a>." : "To lze obvykle vyřešit <a href=\"%s\" target=\"_blank\">povolením zápisu webovému serveru do kořenového adresáře</a>.", "Setting locale to %s failed" : "Nastavení jazyka na %s selhalo", "Please install one of these locales on your system and restart your webserver." : "Prosím nainstalujte alespoň jeden z těchto jazyků do svého systému a restartujte webový server.", - "Please ask your server administrator to install the module." : "Požádejte svého administrátora o instalaci tohoto modulu.", + "Please ask your server administrator to install the module." : "Požádejte svého správce systému o instalaci tohoto modulu.", "PHP module %s not installed." : "PHP modul %s není nainstalován.", "PHP %s or higher is required." : "Je vyžadováno PHP %s nebo vyšší.", - "Please ask your server administrator to update PHP to the latest version. Your PHP version is no longer supported by ownCloud and the PHP community." : "Požádejte svého administrátora o aktualizaci PHP na nejnovější verzi. Vaše verze PHP již není podporována komunitami ownCloud a PHP.", + "Please ask your server administrator to update PHP to the latest version. Your PHP version is no longer supported by ownCloud and the PHP community." : "Požádejte svého správce systému o aktualizaci PHP na nejnovější verzi. Vaše verze PHP již není podporována komunitami ownCloud a PHP.", "PHP Safe Mode is enabled. ownCloud requires that it is disabled to work properly." : "Je zapnut PHP Safe Mode. Pro správnou funkčnost ownCloud je třeba toto vypnout.", - "PHP Safe Mode is a deprecated and mostly useless setting that should be disabled. Please ask your server administrator to disable it in php.ini or in your webserver config." : "PHP Safe Mode je zastaralé a většinou zbytečné nastavení, které je třeba vypnout. Požádejte prosím svého administrátora o zakázání v php.ini nebo v konfiguraci webového serveru.", + "PHP Safe Mode is a deprecated and mostly useless setting that should be disabled. Please ask your server administrator to disable it in php.ini or in your webserver config." : "PHP Safe Mode je zastaralé a většinou zbytečné nastavení, které je třeba vypnout. Požádejte prosím správce systému o jeho zákaz v php.ini nebo v konfiguraci webového serveru.", "Magic Quotes is enabled. ownCloud requires that it is disabled to work properly." : "Je povoleno nastavení Magic Quotes. Pro správnou funkčnost ownCloud je třeba toto vypnout.", - "Magic Quotes is a deprecated and mostly useless setting that should be disabled. Please ask your server administrator to disable it in php.ini or in your webserver config." : "Magic Quotes je zastaralé a většinou zbytečné nastavení, které je třeba vypnout. Požádejte prosím svého administrátora o zakázání v php.ini nebo v konfiguraci webového serveru.", + "Magic Quotes is a deprecated and mostly useless setting that should be disabled. Please ask your server administrator to disable it in php.ini or in your webserver config." : "Magic Quotes je zastaralé a většinou zbytečné nastavení, které je třeba vypnout. Požádejte prosím správce systému o jeho zákaz v php.ini nebo v konfiguraci webového serveru.", "PHP modules have been installed, but they are still listed as missing?" : "PHP moduly jsou nainstalovány, ale stále se tváří jako chybějící?", - "Please ask your server administrator to restart the web server." : "Požádejte svého administrátora o restart webového serveru.", + "Please ask your server administrator to restart the web server." : "Požádejte svého správce systému o restart webového serveru.", "PostgreSQL >= 9 required" : "Je vyžadováno PostgreSQL >= 9", "Please upgrade your database version" : "Aktualizujte prosím verzi své databáze", "Error occurred while checking PostgreSQL version" : "Při zjišťování verze PostgreSQL došlo k chybě", diff --git a/lib/l10n/da.js b/lib/l10n/da.js index 6c49ba9b038..af85c3e93d1 100644 --- a/lib/l10n/da.js +++ b/lib/l10n/da.js @@ -17,6 +17,8 @@ OC.L10N.register( "No app name specified" : "Intet app-navn angivet", "Unknown filetype" : "Ukendt filtype", "Invalid image" : "Ugyldigt billede", + "Database Error" : "Databasefejl", + "Please contact your system administrator." : "Kontakt venligst din systemadministrator.", "web services under your control" : "Webtjenester under din kontrol", "App directory already exists" : "App-mappe findes allerede", "Can't create app folder. Please fix permissions. %s" : "Kan ikke oprette app-mappe. Ret tilladelser. %s", diff --git a/lib/l10n/da.json b/lib/l10n/da.json index fe2858f182d..59ff0e87b98 100644 --- a/lib/l10n/da.json +++ b/lib/l10n/da.json @@ -15,6 +15,8 @@ "No app name specified" : "Intet app-navn angivet", "Unknown filetype" : "Ukendt filtype", "Invalid image" : "Ugyldigt billede", + "Database Error" : "Databasefejl", + "Please contact your system administrator." : "Kontakt venligst din systemadministrator.", "web services under your control" : "Webtjenester under din kontrol", "App directory already exists" : "App-mappe findes allerede", "Can't create app folder. Please fix permissions. %s" : "Kan ikke oprette app-mappe. Ret tilladelser. %s", diff --git a/lib/l10n/de.js b/lib/l10n/de.js index e512c9d1d4c..215052da7f9 100644 --- a/lib/l10n/de.js +++ b/lib/l10n/de.js @@ -17,6 +17,8 @@ OC.L10N.register( "No app name specified" : "Es wurde kein Applikation-Name angegeben", "Unknown filetype" : "Unbekannter Dateityp", "Invalid image" : "Ungültiges Bild", + "Database Error" : "Datenbankfehler", + "Please contact your system administrator." : "Bitte kontaktiere Deinen Systemadministrator.", "web services under your control" : "Web-Services unter Deiner Kontrolle", "App directory already exists" : "Das Applikationsverzeichnis existiert bereits", "Can't create app folder. Please fix permissions. %s" : "Es kann kein Applikationsordner erstellt werden. Bitte passe die Berechtigungen an. %s", diff --git a/lib/l10n/de.json b/lib/l10n/de.json index 27dd6781ae7..086fc888986 100644 --- a/lib/l10n/de.json +++ b/lib/l10n/de.json @@ -15,6 +15,8 @@ "No app name specified" : "Es wurde kein Applikation-Name angegeben", "Unknown filetype" : "Unbekannter Dateityp", "Invalid image" : "Ungültiges Bild", + "Database Error" : "Datenbankfehler", + "Please contact your system administrator." : "Bitte kontaktiere Deinen Systemadministrator.", "web services under your control" : "Web-Services unter Deiner Kontrolle", "App directory already exists" : "Das Applikationsverzeichnis existiert bereits", "Can't create app folder. Please fix permissions. %s" : "Es kann kein Applikationsordner erstellt werden. Bitte passe die Berechtigungen an. %s", diff --git a/lib/l10n/de_DE.js b/lib/l10n/de_DE.js index 48f236f3e04..6d99b090604 100644 --- a/lib/l10n/de_DE.js +++ b/lib/l10n/de_DE.js @@ -17,6 +17,8 @@ OC.L10N.register( "No app name specified" : "Es wurde kein Applikation-Name angegeben", "Unknown filetype" : "Unbekannter Dateityp", "Invalid image" : "Ungültiges Bild", + "Database Error" : "Datenbankfehler", + "Please contact your system administrator." : "Bitte kontaktieren Sie Ihren Systemadministrator.", "web services under your control" : "Web-Services unter Ihrer Kontrolle", "App directory already exists" : "Der Ordner für die Anwendung ist bereits vorhanden.", "Can't create app folder. Please fix permissions. %s" : "Der Ordner für die Anwendung konnte nicht angelegt werden. Bitte überprüfen Sie die Ordner- und Dateirechte und passen Sie diese entsprechend an. %s", diff --git a/lib/l10n/de_DE.json b/lib/l10n/de_DE.json index e67d2ccc57c..fd16f063b78 100644 --- a/lib/l10n/de_DE.json +++ b/lib/l10n/de_DE.json @@ -15,6 +15,8 @@ "No app name specified" : "Es wurde kein Applikation-Name angegeben", "Unknown filetype" : "Unbekannter Dateityp", "Invalid image" : "Ungültiges Bild", + "Database Error" : "Datenbankfehler", + "Please contact your system administrator." : "Bitte kontaktieren Sie Ihren Systemadministrator.", "web services under your control" : "Web-Services unter Ihrer Kontrolle", "App directory already exists" : "Der Ordner für die Anwendung ist bereits vorhanden.", "Can't create app folder. Please fix permissions. %s" : "Der Ordner für die Anwendung konnte nicht angelegt werden. Bitte überprüfen Sie die Ordner- und Dateirechte und passen Sie diese entsprechend an. %s", diff --git a/lib/l10n/en_GB.js b/lib/l10n/en_GB.js index 43f7edb5258..9e5400deb2d 100644 --- a/lib/l10n/en_GB.js +++ b/lib/l10n/en_GB.js @@ -17,6 +17,8 @@ OC.L10N.register( "No app name specified" : "No app name specified", "Unknown filetype" : "Unknown filetype", "Invalid image" : "Invalid image", + "Database Error" : "Database Error", + "Please contact your system administrator." : "Please contact your system administrator.", "web services under your control" : "web services under your control", "App directory already exists" : "App directory already exists", "Can't create app folder. Please fix permissions. %s" : "Can't create app folder. Please fix permissions. %s", diff --git a/lib/l10n/en_GB.json b/lib/l10n/en_GB.json index 7e7756cec9c..e3a44ec8e9b 100644 --- a/lib/l10n/en_GB.json +++ b/lib/l10n/en_GB.json @@ -15,6 +15,8 @@ "No app name specified" : "No app name specified", "Unknown filetype" : "Unknown filetype", "Invalid image" : "Invalid image", + "Database Error" : "Database Error", + "Please contact your system administrator." : "Please contact your system administrator.", "web services under your control" : "web services under your control", "App directory already exists" : "App directory already exists", "Can't create app folder. Please fix permissions. %s" : "Can't create app folder. Please fix permissions. %s", diff --git a/lib/l10n/es.js b/lib/l10n/es.js index 76a44a4bed7..9cdd328e974 100644 --- a/lib/l10n/es.js +++ b/lib/l10n/es.js @@ -17,6 +17,8 @@ OC.L10N.register( "No app name specified" : "No se ha especificado nombre de la aplicación", "Unknown filetype" : "Tipo de archivo desconocido", "Invalid image" : "Imagen inválida", + "Database Error" : "Error en la base de datos", + "Please contact your system administrator." : "Por favor contacte al administrador del sistema.", "web services under your control" : "Servicios web bajo su control", "App directory already exists" : "El directorio de la aplicación ya existe", "Can't create app folder. Please fix permissions. %s" : "No se puede crear la carpeta de la aplicación. Corrija los permisos. %s", diff --git a/lib/l10n/es.json b/lib/l10n/es.json index a6bee7f24db..c14b03c15df 100644 --- a/lib/l10n/es.json +++ b/lib/l10n/es.json @@ -15,6 +15,8 @@ "No app name specified" : "No se ha especificado nombre de la aplicación", "Unknown filetype" : "Tipo de archivo desconocido", "Invalid image" : "Imagen inválida", + "Database Error" : "Error en la base de datos", + "Please contact your system administrator." : "Por favor contacte al administrador del sistema.", "web services under your control" : "Servicios web bajo su control", "App directory already exists" : "El directorio de la aplicación ya existe", "Can't create app folder. Please fix permissions. %s" : "No se puede crear la carpeta de la aplicación. Corrija los permisos. %s", diff --git a/lib/l10n/fi_FI.js b/lib/l10n/fi_FI.js index f387090da60..1097dd20850 100644 --- a/lib/l10n/fi_FI.js +++ b/lib/l10n/fi_FI.js @@ -16,6 +16,8 @@ OC.L10N.register( "No app name specified" : "Sovelluksen nimeä ei määritelty", "Unknown filetype" : "Tuntematon tiedostotyyppi", "Invalid image" : "Virheellinen kuva", + "Database Error" : "Tietokantavirhe", + "Please contact your system administrator." : "Ole yhteydessä järjestelmän ylläpitäjään.", "web services under your control" : "verkkopalvelut hallinnassasi", "App directory already exists" : "Sovelluskansio on jo olemassa", "Can't create app folder. Please fix permissions. %s" : "Sovelluskansion luominen ei onnistu. Korjaa käyttöoikeudet. %s", diff --git a/lib/l10n/fi_FI.json b/lib/l10n/fi_FI.json index 7c26af25f66..2bd73df0379 100644 --- a/lib/l10n/fi_FI.json +++ b/lib/l10n/fi_FI.json @@ -14,6 +14,8 @@ "No app name specified" : "Sovelluksen nimeä ei määritelty", "Unknown filetype" : "Tuntematon tiedostotyyppi", "Invalid image" : "Virheellinen kuva", + "Database Error" : "Tietokantavirhe", + "Please contact your system administrator." : "Ole yhteydessä järjestelmän ylläpitäjään.", "web services under your control" : "verkkopalvelut hallinnassasi", "App directory already exists" : "Sovelluskansio on jo olemassa", "Can't create app folder. Please fix permissions. %s" : "Sovelluskansion luominen ei onnistu. Korjaa käyttöoikeudet. %s", diff --git a/lib/l10n/fr.js b/lib/l10n/fr.js index becc21ab649..18a20a37148 100644 --- a/lib/l10n/fr.js +++ b/lib/l10n/fr.js @@ -17,13 +17,15 @@ OC.L10N.register( "No app name specified" : "Aucun nom d'application spécifié", "Unknown filetype" : "Type de fichier inconnu", "Invalid image" : "Image non valable", + "Database Error" : "Erreur dans la base de données", + "Please contact your system administrator." : "Veuillez contacter votre administrateur système.", "web services under your control" : "services web sous votre contrôle", "App directory already exists" : "Le dossier de l'application existe déjà", "Can't create app folder. Please fix permissions. %s" : "Impossible de créer le dossier de l'application. Corrigez les droits d'accès. %s", "No source specified when installing app" : "Aucune source spécifiée pour installer l'application", "No href specified when installing app from http" : "Aucun href spécifié pour installer l'application par http", "No path specified when installing app from local file" : "Aucun chemin spécifié pour installer l'application depuis un fichier local", - "Archives of type %s are not supported" : "Les archives de type %s ne sont pas supportées", + "Archives of type %s are not supported" : "Les archives de type %s ne sont pas prises en charge", "Failed to open archive when installing app" : "Échec de l'ouverture de l'archive lors de l'installation de l'application", "App does not provide an info.xml file" : "L'application ne fournit pas de fichier info.xml", "App can't be installed because of not allowed code in the App" : "L'application ne peut être installée car elle contient du code non-autorisé", @@ -100,11 +102,11 @@ OC.L10N.register( "Cannot create \"data\" directory (%s)" : "Impossible de créer le répertoire \"data\" (%s)", "This can usually be fixed by <a href=\"%s\" target=\"_blank\">giving the webserver write access to the root directory</a>." : "Ce problème est généralement résolu <a href=\"%s\" target=\"_blank\">en donnant au serveur web un accès en écriture au répertoire racine</a>.", "Setting locale to %s failed" : "Le choix de la langue pour %s a échoué", - "Please install one of these locales on your system and restart your webserver." : "Veuillez installer l'une de ces langues sur votre système et redémarrer votre serveur web.", + "Please install one of these locales on your system and restart your webserver." : "Veuillez installer l'un de ces paramètres régionaux sur votre système et redémarrer votre serveur web.", "Please ask your server administrator to install the module." : "Veuillez demander à votre administrateur d’installer le module.", "PHP module %s not installed." : "Le module PHP %s n’est pas installé.", "PHP %s or higher is required." : "PHP %s ou supérieur est requis.", - "Please ask your server administrator to update PHP to the latest version. Your PHP version is no longer supported by ownCloud and the PHP community." : "Veuillez demander à votre administrateur de mettre à jour PHP vers sa dernière version disponible. La vôtre n’est plus supportée par ownCloud, de même que par la communauté PHP.", + "Please ask your server administrator to update PHP to the latest version. Your PHP version is no longer supported by ownCloud and the PHP community." : "Veuillez demander à votre administrateur de mettre à jour PHP vers sa dernière version disponible. La vôtre n’est plus prise en charge par ownCloud ni par la communauté PHP.", "PHP Safe Mode is enabled. ownCloud requires that it is disabled to work properly." : "PHP Safe Mode est activé. ownCloud requiert sa désactivation afin de fonctionner correctement.", "PHP Safe Mode is a deprecated and mostly useless setting that should be disabled. Please ask your server administrator to disable it in php.ini or in your webserver config." : "PHP Safe Mode est déprécié, inutile la plupart du temps, et doit être désactivé. Veuillez demander à votre administrateur serveur de le désactiver dans le fichier php.ini ou dans votre configuration du serveur web.", "Magic Quotes is enabled. ownCloud requires that it is disabled to work properly." : "Magic Quotes est activé. ownCloud requiert sa désactivation afin de fonctionner correctement.", diff --git a/lib/l10n/fr.json b/lib/l10n/fr.json index 51452abce9e..b8cecae6c5d 100644 --- a/lib/l10n/fr.json +++ b/lib/l10n/fr.json @@ -15,13 +15,15 @@ "No app name specified" : "Aucun nom d'application spécifié", "Unknown filetype" : "Type de fichier inconnu", "Invalid image" : "Image non valable", + "Database Error" : "Erreur dans la base de données", + "Please contact your system administrator." : "Veuillez contacter votre administrateur système.", "web services under your control" : "services web sous votre contrôle", "App directory already exists" : "Le dossier de l'application existe déjà", "Can't create app folder. Please fix permissions. %s" : "Impossible de créer le dossier de l'application. Corrigez les droits d'accès. %s", "No source specified when installing app" : "Aucune source spécifiée pour installer l'application", "No href specified when installing app from http" : "Aucun href spécifié pour installer l'application par http", "No path specified when installing app from local file" : "Aucun chemin spécifié pour installer l'application depuis un fichier local", - "Archives of type %s are not supported" : "Les archives de type %s ne sont pas supportées", + "Archives of type %s are not supported" : "Les archives de type %s ne sont pas prises en charge", "Failed to open archive when installing app" : "Échec de l'ouverture de l'archive lors de l'installation de l'application", "App does not provide an info.xml file" : "L'application ne fournit pas de fichier info.xml", "App can't be installed because of not allowed code in the App" : "L'application ne peut être installée car elle contient du code non-autorisé", @@ -98,11 +100,11 @@ "Cannot create \"data\" directory (%s)" : "Impossible de créer le répertoire \"data\" (%s)", "This can usually be fixed by <a href=\"%s\" target=\"_blank\">giving the webserver write access to the root directory</a>." : "Ce problème est généralement résolu <a href=\"%s\" target=\"_blank\">en donnant au serveur web un accès en écriture au répertoire racine</a>.", "Setting locale to %s failed" : "Le choix de la langue pour %s a échoué", - "Please install one of these locales on your system and restart your webserver." : "Veuillez installer l'une de ces langues sur votre système et redémarrer votre serveur web.", + "Please install one of these locales on your system and restart your webserver." : "Veuillez installer l'un de ces paramètres régionaux sur votre système et redémarrer votre serveur web.", "Please ask your server administrator to install the module." : "Veuillez demander à votre administrateur d’installer le module.", "PHP module %s not installed." : "Le module PHP %s n’est pas installé.", "PHP %s or higher is required." : "PHP %s ou supérieur est requis.", - "Please ask your server administrator to update PHP to the latest version. Your PHP version is no longer supported by ownCloud and the PHP community." : "Veuillez demander à votre administrateur de mettre à jour PHP vers sa dernière version disponible. La vôtre n’est plus supportée par ownCloud, de même que par la communauté PHP.", + "Please ask your server administrator to update PHP to the latest version. Your PHP version is no longer supported by ownCloud and the PHP community." : "Veuillez demander à votre administrateur de mettre à jour PHP vers sa dernière version disponible. La vôtre n’est plus prise en charge par ownCloud ni par la communauté PHP.", "PHP Safe Mode is enabled. ownCloud requires that it is disabled to work properly." : "PHP Safe Mode est activé. ownCloud requiert sa désactivation afin de fonctionner correctement.", "PHP Safe Mode is a deprecated and mostly useless setting that should be disabled. Please ask your server administrator to disable it in php.ini or in your webserver config." : "PHP Safe Mode est déprécié, inutile la plupart du temps, et doit être désactivé. Veuillez demander à votre administrateur serveur de le désactiver dans le fichier php.ini ou dans votre configuration du serveur web.", "Magic Quotes is enabled. ownCloud requires that it is disabled to work properly." : "Magic Quotes est activé. ownCloud requiert sa désactivation afin de fonctionner correctement.", diff --git a/lib/l10n/gl.js b/lib/l10n/gl.js index 24d4ba9a600..596b302009c 100644 --- a/lib/l10n/gl.js +++ b/lib/l10n/gl.js @@ -10,6 +10,7 @@ OC.L10N.register( "Settings" : "Axustes", "Users" : "Usuarios", "Admin" : "Administración", + "Recommended" : "Recomendado", "App \\\"%s\\\" can't be installed because it is not compatible with this version of ownCloud." : "Non é posíbel instalar a aplicación «%s» por non seren compatíbel con esta versión do ownCloud.", "No app name specified" : "Non se especificou o nome da aplicación", "Unknown filetype" : "Tipo de ficheiro descoñecido", diff --git a/lib/l10n/gl.json b/lib/l10n/gl.json index 24815e3a085..2b65b3a8f89 100644 --- a/lib/l10n/gl.json +++ b/lib/l10n/gl.json @@ -8,6 +8,7 @@ "Settings" : "Axustes", "Users" : "Usuarios", "Admin" : "Administración", + "Recommended" : "Recomendado", "App \\\"%s\\\" can't be installed because it is not compatible with this version of ownCloud." : "Non é posíbel instalar a aplicación «%s» por non seren compatíbel con esta versión do ownCloud.", "No app name specified" : "Non se especificou o nome da aplicación", "Unknown filetype" : "Tipo de ficheiro descoñecido", diff --git a/lib/l10n/hi_IN.php b/lib/l10n/hi_IN.php deleted file mode 100644 index 15f78e0bce6..00000000000 --- a/lib/l10n/hi_IN.php +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$TRANSLATIONS = array( -"_%n minute ago_::_%n minutes ago_" => array("",""), -"_%n hour ago_::_%n hours ago_" => array("",""), -"_%n day go_::_%n days ago_" => array("",""), -"_%n month ago_::_%n months ago_" => array("","") -); -$PLURAL_FORMS = "nplurals=2; plural=(n != 1);"; diff --git a/lib/l10n/it.js b/lib/l10n/it.js index 2874653823b..eb25f2fc086 100644 --- a/lib/l10n/it.js +++ b/lib/l10n/it.js @@ -17,6 +17,8 @@ OC.L10N.register( "No app name specified" : "Il nome dell'applicazione non è specificato", "Unknown filetype" : "Tipo di file sconosciuto", "Invalid image" : "Immagine non valida", + "Database Error" : "Errore del database", + "Please contact your system administrator." : "Contatta il tuo amministratore di sistema.", "web services under your control" : "servizi web nelle tue mani", "App directory already exists" : "La cartella dell'applicazione esiste già", "Can't create app folder. Please fix permissions. %s" : "Impossibile creare la cartella dell'applicazione. Correggi i permessi. %s", diff --git a/lib/l10n/it.json b/lib/l10n/it.json index ca5beb1b802..ef4ae9ab370 100644 --- a/lib/l10n/it.json +++ b/lib/l10n/it.json @@ -15,6 +15,8 @@ "No app name specified" : "Il nome dell'applicazione non è specificato", "Unknown filetype" : "Tipo di file sconosciuto", "Invalid image" : "Immagine non valida", + "Database Error" : "Errore del database", + "Please contact your system administrator." : "Contatta il tuo amministratore di sistema.", "web services under your control" : "servizi web nelle tue mani", "App directory already exists" : "La cartella dell'applicazione esiste già", "Can't create app folder. Please fix permissions. %s" : "Impossibile creare la cartella dell'applicazione. Correggi i permessi. %s", diff --git a/lib/l10n/ja.js b/lib/l10n/ja.js index 38aa3de36d6..e6b0b3240f1 100644 --- a/lib/l10n/ja.js +++ b/lib/l10n/ja.js @@ -17,6 +17,8 @@ OC.L10N.register( "No app name specified" : "アプリ名が未指定", "Unknown filetype" : "不明なファイルタイプ", "Invalid image" : "無効な画像", + "Database Error" : "データベースエラー", + "Please contact your system administrator." : "システム管理者に問い合わせてください。", "web services under your control" : "あなたの管理下のウェブサービス", "App directory already exists" : "アプリディレクトリはすでに存在します", "Can't create app folder. Please fix permissions. %s" : "アプリフォルダーを作成できませんでした。%s のパーミッションを修正してください。", diff --git a/lib/l10n/ja.json b/lib/l10n/ja.json index 8a0db934683..722f5235c6f 100644 --- a/lib/l10n/ja.json +++ b/lib/l10n/ja.json @@ -15,6 +15,8 @@ "No app name specified" : "アプリ名が未指定", "Unknown filetype" : "不明なファイルタイプ", "Invalid image" : "無効な画像", + "Database Error" : "データベースエラー", + "Please contact your system administrator." : "システム管理者に問い合わせてください。", "web services under your control" : "あなたの管理下のウェブサービス", "App directory already exists" : "アプリディレクトリはすでに存在します", "Can't create app folder. Please fix permissions. %s" : "アプリフォルダーを作成できませんでした。%s のパーミッションを修正してください。", diff --git a/lib/l10n/nl.js b/lib/l10n/nl.js index 9ec355862f3..4fdff3c67ef 100644 --- a/lib/l10n/nl.js +++ b/lib/l10n/nl.js @@ -4,7 +4,7 @@ OC.L10N.register( "Cannot write into \"config\" directory!" : "Kan niet schrijven naar de \"config\" directory!", "This can usually be fixed by giving the webserver write access to the config directory" : "Dit kan hersteld worden door de webserver schrijfrechten te geven op de de config directory", "See %s" : "Zie %s", - "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "Dit kan hersteld worden door de webserver schrijfrechten te %sgeven op de de config directory%s", + "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "Dit kan hersteld worden door de webserver %sschrijfrechten te geven op de de config directory%s", "Sample configuration detected" : "Voorbeeldconfiguratie gevonden", "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Blijkbaar is de voorbeeldconfiguratie gekopieerd. Dit kan uw installatie beschadigen en wordt niet dan ook ondersteund. Lees de documentatie voordat u wijzigingen aan config.php doorvoert", "Help" : "Help", @@ -14,9 +14,11 @@ OC.L10N.register( "Admin" : "Beheerder", "Recommended" : "Aanbevolen", "App \\\"%s\\\" can't be installed because it is not compatible with this version of ownCloud." : "App \\\"%s\\\" kan niet worden geïnstalleerd omdat de app niet compatible is met deze versie van ownCloud.", - "No app name specified" : "De app naam is niet gespecificeerd.", + "No app name specified" : "Geen app naam opgegeven.", "Unknown filetype" : "Onbekend bestandsformaat", "Invalid image" : "Ongeldige afbeelding", + "Database Error" : "Database fout", + "Please contact your system administrator." : "Neem contact op met uw systeembeheerder.", "web services under your control" : "Webdiensten in eigen beheer", "App directory already exists" : "App directory bestaat al", "Can't create app folder. Please fix permissions. %s" : "Kan de app map niet aanmaken, Herstel de permissies. %s", diff --git a/lib/l10n/nl.json b/lib/l10n/nl.json index 43c46b25704..be980d330d6 100644 --- a/lib/l10n/nl.json +++ b/lib/l10n/nl.json @@ -2,7 +2,7 @@ "Cannot write into \"config\" directory!" : "Kan niet schrijven naar de \"config\" directory!", "This can usually be fixed by giving the webserver write access to the config directory" : "Dit kan hersteld worden door de webserver schrijfrechten te geven op de de config directory", "See %s" : "Zie %s", - "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "Dit kan hersteld worden door de webserver schrijfrechten te %sgeven op de de config directory%s", + "This can usually be fixed by %sgiving the webserver write access to the config directory%s." : "Dit kan hersteld worden door de webserver %sschrijfrechten te geven op de de config directory%s", "Sample configuration detected" : "Voorbeeldconfiguratie gevonden", "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Blijkbaar is de voorbeeldconfiguratie gekopieerd. Dit kan uw installatie beschadigen en wordt niet dan ook ondersteund. Lees de documentatie voordat u wijzigingen aan config.php doorvoert", "Help" : "Help", @@ -12,9 +12,11 @@ "Admin" : "Beheerder", "Recommended" : "Aanbevolen", "App \\\"%s\\\" can't be installed because it is not compatible with this version of ownCloud." : "App \\\"%s\\\" kan niet worden geïnstalleerd omdat de app niet compatible is met deze versie van ownCloud.", - "No app name specified" : "De app naam is niet gespecificeerd.", + "No app name specified" : "Geen app naam opgegeven.", "Unknown filetype" : "Onbekend bestandsformaat", "Invalid image" : "Ongeldige afbeelding", + "Database Error" : "Database fout", + "Please contact your system administrator." : "Neem contact op met uw systeembeheerder.", "web services under your control" : "Webdiensten in eigen beheer", "App directory already exists" : "App directory bestaat al", "Can't create app folder. Please fix permissions. %s" : "Kan de app map niet aanmaken, Herstel de permissies. %s", diff --git a/lib/l10n/pt_BR.js b/lib/l10n/pt_BR.js index 8537b31d543..370bff17480 100644 --- a/lib/l10n/pt_BR.js +++ b/lib/l10n/pt_BR.js @@ -17,6 +17,8 @@ OC.L10N.register( "No app name specified" : "O nome do aplicativo não foi especificado.", "Unknown filetype" : "Tipo de arquivo desconhecido", "Invalid image" : "Imagem inválida", + "Database Error" : "Erro no Banco de Dados", + "Please contact your system administrator." : "Por favor cotactar seu administrador do sistema.", "web services under your control" : "serviços web sob seu controle", "App directory already exists" : "Diretório App já existe", "Can't create app folder. Please fix permissions. %s" : "Não é possível criar pasta app. Corrija as permissões. %s", diff --git a/lib/l10n/pt_BR.json b/lib/l10n/pt_BR.json index a9e272afc18..465d0d2bf29 100644 --- a/lib/l10n/pt_BR.json +++ b/lib/l10n/pt_BR.json @@ -15,6 +15,8 @@ "No app name specified" : "O nome do aplicativo não foi especificado.", "Unknown filetype" : "Tipo de arquivo desconhecido", "Invalid image" : "Imagem inválida", + "Database Error" : "Erro no Banco de Dados", + "Please contact your system administrator." : "Por favor cotactar seu administrador do sistema.", "web services under your control" : "serviços web sob seu controle", "App directory already exists" : "Diretório App já existe", "Can't create app folder. Please fix permissions. %s" : "Não é possível criar pasta app. Corrija as permissões. %s", diff --git a/lib/l10n/pt_PT.js b/lib/l10n/pt_PT.js index c70e373a11c..0bbac09c9b1 100644 --- a/lib/l10n/pt_PT.js +++ b/lib/l10n/pt_PT.js @@ -17,6 +17,8 @@ OC.L10N.register( "No app name specified" : "O nome da aplicação não foi especificado", "Unknown filetype" : "Ficheiro desconhecido", "Invalid image" : "Imagem inválida", + "Database Error" : "Erro da Base de Dados", + "Please contact your system administrator." : "Por favor contacte o administrador do sistema.", "web services under your control" : "serviços web sob o seu controlo", "App directory already exists" : "A directoria da aplicação já existe", "Can't create app folder. Please fix permissions. %s" : "Não foi possível criar a pasta da aplicação. Por favor verifique as permissões. %s", diff --git a/lib/l10n/pt_PT.json b/lib/l10n/pt_PT.json index 85461b0fae6..067dc4b9751 100644 --- a/lib/l10n/pt_PT.json +++ b/lib/l10n/pt_PT.json @@ -15,6 +15,8 @@ "No app name specified" : "O nome da aplicação não foi especificado", "Unknown filetype" : "Ficheiro desconhecido", "Invalid image" : "Imagem inválida", + "Database Error" : "Erro da Base de Dados", + "Please contact your system administrator." : "Por favor contacte o administrador do sistema.", "web services under your control" : "serviços web sob o seu controlo", "App directory already exists" : "A directoria da aplicação já existe", "Can't create app folder. Please fix permissions. %s" : "Não foi possível criar a pasta da aplicação. Por favor verifique as permissões. %s", diff --git a/lib/l10n/ru.js b/lib/l10n/ru.js index 20ed5013853..490a3f6a1e2 100644 --- a/lib/l10n/ru.js +++ b/lib/l10n/ru.js @@ -17,6 +17,8 @@ OC.L10N.register( "No app name specified" : "Не указано имя приложения", "Unknown filetype" : "Неизвестный тип файла", "Invalid image" : "Изображение повреждено", + "Database Error" : "Ошибка базы данных", + "Please contact your system administrator." : "Пожалуйста, свяжитесь с вашим администратором.", "web services under your control" : "веб-сервисы под вашим управлением", "App directory already exists" : "Папка приложения уже существует", "Can't create app folder. Please fix permissions. %s" : "Не удалось создать директорию. Исправьте права доступа. %s", diff --git a/lib/l10n/ru.json b/lib/l10n/ru.json index a8636cf4c35..103121a374a 100644 --- a/lib/l10n/ru.json +++ b/lib/l10n/ru.json @@ -15,6 +15,8 @@ "No app name specified" : "Не указано имя приложения", "Unknown filetype" : "Неизвестный тип файла", "Invalid image" : "Изображение повреждено", + "Database Error" : "Ошибка базы данных", + "Please contact your system administrator." : "Пожалуйста, свяжитесь с вашим администратором.", "web services under your control" : "веб-сервисы под вашим управлением", "App directory already exists" : "Папка приложения уже существует", "Can't create app folder. Please fix permissions. %s" : "Не удалось создать директорию. Исправьте права доступа. %s", diff --git a/lib/l10n/sk.php b/lib/l10n/sk.php deleted file mode 100644 index 5cfafe6ca0c..00000000000 --- a/lib/l10n/sk.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php -$TRANSLATIONS = array( -"Personal" => "Osobné", -"Settings" => "Nastavenia", -"_%n minute ago_::_%n minutes ago_" => array("","",""), -"_%n hour ago_::_%n hours ago_" => array("","",""), -"_%n day go_::_%n days ago_" => array("","",""), -"_%n month ago_::_%n months ago_" => array("","","") -); -$PLURAL_FORMS = "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"; diff --git a/lib/l10n/sk_SK.js b/lib/l10n/sk_SK.js index a2e87c5b631..ec902af2641 100644 --- a/lib/l10n/sk_SK.js +++ b/lib/l10n/sk_SK.js @@ -17,6 +17,8 @@ OC.L10N.register( "No app name specified" : "Nešpecifikované meno aplikácie", "Unknown filetype" : "Neznámy typ súboru", "Invalid image" : "Chybný obrázok", + "Database Error" : "Error databázy", + "Please contact your system administrator." : "Prosím kontaktujte administrátora.", "web services under your control" : "webové služby pod Vašou kontrolou", "App directory already exists" : "Aplikačný priečinok už existuje", "Can't create app folder. Please fix permissions. %s" : "Nemožno vytvoriť aplikačný priečinok. Prosím upravte povolenia. %s", diff --git a/lib/l10n/sk_SK.json b/lib/l10n/sk_SK.json index 84ab8c4a007..e2c219d5a1c 100644 --- a/lib/l10n/sk_SK.json +++ b/lib/l10n/sk_SK.json @@ -15,6 +15,8 @@ "No app name specified" : "Nešpecifikované meno aplikácie", "Unknown filetype" : "Neznámy typ súboru", "Invalid image" : "Chybný obrázok", + "Database Error" : "Error databázy", + "Please contact your system administrator." : "Prosím kontaktujte administrátora.", "web services under your control" : "webové služby pod Vašou kontrolou", "App directory already exists" : "Aplikačný priečinok už existuje", "Can't create app folder. Please fix permissions. %s" : "Nemožno vytvoriť aplikačný priečinok. Prosím upravte povolenia. %s", diff --git a/lib/l10n/sl.js b/lib/l10n/sl.js index aa783fbd69e..8277186b0b3 100644 --- a/lib/l10n/sl.js +++ b/lib/l10n/sl.js @@ -17,6 +17,8 @@ OC.L10N.register( "No app name specified" : "Ni podanega imena programa", "Unknown filetype" : "Neznana vrsta datoteke", "Invalid image" : "Neveljavna slika", + "Database Error" : "Napaka podatkovne zbirke", + "Please contact your system administrator." : "Stopite v stik s skrbnikom sistema.", "web services under your control" : "spletne storitve pod vašim nadzorom", "App directory already exists" : "Programska mapa že obstaja", "Can't create app folder. Please fix permissions. %s" : "Programske mape ni mogoče ustvariti. Ni ustreznih dovoljenj. %s", diff --git a/lib/l10n/sl.json b/lib/l10n/sl.json index c0cbf41f719..a5d22213f1d 100644 --- a/lib/l10n/sl.json +++ b/lib/l10n/sl.json @@ -15,6 +15,8 @@ "No app name specified" : "Ni podanega imena programa", "Unknown filetype" : "Neznana vrsta datoteke", "Invalid image" : "Neveljavna slika", + "Database Error" : "Napaka podatkovne zbirke", + "Please contact your system administrator." : "Stopite v stik s skrbnikom sistema.", "web services under your control" : "spletne storitve pod vašim nadzorom", "App directory already exists" : "Programska mapa že obstaja", "Can't create app folder. Please fix permissions. %s" : "Programske mape ni mogoče ustvariti. Ni ustreznih dovoljenj. %s", diff --git a/lib/l10n/sq.js b/lib/l10n/sq.js index 6328972ac8a..c3be28ef1c6 100644 --- a/lib/l10n/sq.js +++ b/lib/l10n/sq.js @@ -6,6 +6,9 @@ OC.L10N.register( "Settings" : "Parametra", "Users" : "Përdoruesit", "Admin" : "Admin", + "Recommended" : "E rekomanduar", + "Unknown filetype" : "Tip i panjohur skedari", + "Invalid image" : "Imazh i pavlefshëm", "web services under your control" : "shërbime web nën kontrollin tënd", "Application is not enabled" : "Programi nuk është i aktivizuar.", "Authentication error" : "Veprim i gabuar gjatë vërtetimit të identitetit", diff --git a/lib/l10n/sq.json b/lib/l10n/sq.json index 7df63e8ff84..cd10a590bd1 100644 --- a/lib/l10n/sq.json +++ b/lib/l10n/sq.json @@ -4,6 +4,9 @@ "Settings" : "Parametra", "Users" : "Përdoruesit", "Admin" : "Admin", + "Recommended" : "E rekomanduar", + "Unknown filetype" : "Tip i panjohur skedari", + "Invalid image" : "Imazh i pavlefshëm", "web services under your control" : "shërbime web nën kontrollin tënd", "Application is not enabled" : "Programi nuk është i aktivizuar.", "Authentication error" : "Veprim i gabuar gjatë vërtetimit të identitetit", diff --git a/lib/l10n/tr.js b/lib/l10n/tr.js index 0f6a40a7ef2..17a97c31e8a 100644 --- a/lib/l10n/tr.js +++ b/lib/l10n/tr.js @@ -17,6 +17,8 @@ OC.L10N.register( "No app name specified" : "Uygulama adı belirtilmedi", "Unknown filetype" : "Bilinmeyen dosya türü", "Invalid image" : "Geçersiz resim", + "Database Error" : "Veritabanı Hatası", + "Please contact your system administrator." : "Lütfen sistem yöneticiniz ile iletişime geçin.", "web services under your control" : "denetiminizdeki web hizmetleri", "App directory already exists" : "Uygulama dizini zaten mevcut", "Can't create app folder. Please fix permissions. %s" : "Uygulama dizini oluşturulamıyor. Lütfen izinleri düzeltin. %s", diff --git a/lib/l10n/tr.json b/lib/l10n/tr.json index 52bad09e9cf..b6023ba4e08 100644 --- a/lib/l10n/tr.json +++ b/lib/l10n/tr.json @@ -15,6 +15,8 @@ "No app name specified" : "Uygulama adı belirtilmedi", "Unknown filetype" : "Bilinmeyen dosya türü", "Invalid image" : "Geçersiz resim", + "Database Error" : "Veritabanı Hatası", + "Please contact your system administrator." : "Lütfen sistem yöneticiniz ile iletişime geçin.", "web services under your control" : "denetiminizdeki web hizmetleri", "App directory already exists" : "Uygulama dizini zaten mevcut", "Can't create app folder. Please fix permissions. %s" : "Uygulama dizini oluşturulamıyor. Lütfen izinleri düzeltin. %s", diff --git a/lib/l10n/uk.js b/lib/l10n/uk.js index 6e742fc0b98..5afce6b2ced 100644 --- a/lib/l10n/uk.js +++ b/lib/l10n/uk.js @@ -76,6 +76,12 @@ OC.L10N.register( "last year" : "минулого року", "years ago" : "роки тому", "A valid username must be provided" : "Потрібно задати вірне ім'я користувача", - "A valid password must be provided" : "Потрібно задати вірний пароль" + "A valid password must be provided" : "Потрібно задати вірний пароль", + "No database drivers (sqlite, mysql, or postgresql) installed." : "Не встановлено драйвер бази даних (sqlite, mysql, or postgresql).", + "Cannot write into \"config\" directory" : "Не можу писати у теку \"config\"", + "Cannot write into \"apps\" directory" : "Не можу писати у теку \"apps\"", + "Please ask your server administrator to install the module." : "Будь ласка, зверніться до адміністратора, щоб встановити модуль.", + "PHP module %s not installed." : "%s модуль PHP не встановлено.", + "Please ask your server administrator to restart the web server." : "Будь ласка, зверніться до адміністратора, щоб перезавантажити сервер." }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/lib/l10n/uk.json b/lib/l10n/uk.json index a08191e745a..9c632437ac2 100644 --- a/lib/l10n/uk.json +++ b/lib/l10n/uk.json @@ -74,6 +74,12 @@ "last year" : "минулого року", "years ago" : "роки тому", "A valid username must be provided" : "Потрібно задати вірне ім'я користувача", - "A valid password must be provided" : "Потрібно задати вірний пароль" + "A valid password must be provided" : "Потрібно задати вірний пароль", + "No database drivers (sqlite, mysql, or postgresql) installed." : "Не встановлено драйвер бази даних (sqlite, mysql, or postgresql).", + "Cannot write into \"config\" directory" : "Не можу писати у теку \"config\"", + "Cannot write into \"apps\" directory" : "Не можу писати у теку \"apps\"", + "Please ask your server administrator to install the module." : "Будь ласка, зверніться до адміністратора, щоб встановити модуль.", + "PHP module %s not installed." : "%s модуль PHP не встановлено.", + "Please ask your server administrator to restart the web server." : "Будь ласка, зверніться до адміністратора, щоб перезавантажити сервер." },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/lib/l10n/ur.php b/lib/l10n/ur.php deleted file mode 100644 index 15f78e0bce6..00000000000 --- a/lib/l10n/ur.php +++ /dev/null @@ -1,8 +0,0 @@ -<?php -$TRANSLATIONS = array( -"_%n minute ago_::_%n minutes ago_" => array("",""), -"_%n hour ago_::_%n hours ago_" => array("",""), -"_%n day go_::_%n days ago_" => array("",""), -"_%n month ago_::_%n months ago_" => array("","") -); -$PLURAL_FORMS = "nplurals=2; plural=(n != 1);"; diff --git a/lib/l10n/zh_TW.js b/lib/l10n/zh_TW.js index ffb82213e7d..18fcfe06de9 100644 --- a/lib/l10n/zh_TW.js +++ b/lib/l10n/zh_TW.js @@ -12,6 +12,7 @@ OC.L10N.register( "Settings" : "設定", "Users" : "使用者", "Admin" : "管理", + "Recommended" : "建議", "App \\\"%s\\\" can't be installed because it is not compatible with this version of ownCloud." : "無法安裝應用程式 %s 因為它和此版本的 ownCloud 不相容。", "No app name specified" : "沒有指定應用程式名稱", "Unknown filetype" : "未知的檔案類型", diff --git a/lib/l10n/zh_TW.json b/lib/l10n/zh_TW.json index 6c6b572dd50..f6befb07d0a 100644 --- a/lib/l10n/zh_TW.json +++ b/lib/l10n/zh_TW.json @@ -10,6 +10,7 @@ "Settings" : "設定", "Users" : "使用者", "Admin" : "管理", + "Recommended" : "建議", "App \\\"%s\\\" can't be installed because it is not compatible with this version of ownCloud." : "無法安裝應用程式 %s 因為它和此版本的 ownCloud 不相容。", "No app name specified" : "沒有指定應用程式名稱", "Unknown filetype" : "未知的檔案類型", diff --git a/lib/private/api.php b/lib/private/api.php index f5576af2ad8..66b763fdc3e 100644 --- a/lib/private/api.php +++ b/lib/private/api.php @@ -132,7 +132,7 @@ class OC_API { * @return array|\OC_OCS_Result */ public static function mergeResponses($responses) { - // Sort into shipped and thirdparty + // Sort into shipped and third-party $shipped = array( 'succeeded' => array(), 'failed' => array(), @@ -162,7 +162,7 @@ class OC_API { if(!empty($shipped['failed'])) { // Which shipped response do we use if they all failed? // They may have failed for different reasons (different status codes) - // Which reponse code should we return? + // Which response code should we return? // Maybe any that are not OC_API::RESPOND_SERVER_ERROR // Merge failed responses if more than one $data = array(); @@ -273,26 +273,32 @@ class OC_API { // reuse existing login $loggedIn = OC_User::isLoggedIn(); - $ocsApiRequest = isset($_SERVER['HTTP_OCS_APIREQUEST']) ? $_SERVER['HTTP_OCS_APIREQUEST'] === 'true' : false; - if ($loggedIn === true && $ocsApiRequest) { + if ($loggedIn === true) { + $ocsApiRequest = isset($_SERVER['HTTP_OCS_APIREQUEST']) ? $_SERVER['HTTP_OCS_APIREQUEST'] === 'true' : false; + if ($ocsApiRequest) { - // initialize the user's filesystem - \OC_Util::setUpFS(\OC_User::getUser()); + // initialize the user's filesystem + \OC_Util::setUpFS(\OC_User::getUser()); - return OC_User::getUser(); + return OC_User::getUser(); + } + return false; } - // basic auth - $authUser = isset($_SERVER['PHP_AUTH_USER']) ? $_SERVER['PHP_AUTH_USER'] : ''; - $authPw = isset($_SERVER['PHP_AUTH_PW']) ? $_SERVER['PHP_AUTH_PW'] : ''; - $return = OC_User::login($authUser, $authPw); - if ($return === true) { - self::$logoutRequired = true; + // basic auth - because OC_User::login will create a new session we shall only try to login + // if user and pass are set + if(isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW']) ) { + $authUser = $_SERVER['PHP_AUTH_USER']; + $authPw = $_SERVER['PHP_AUTH_PW']; + $return = OC_User::login($authUser, $authPw); + if ($return === true) { + self::$logoutRequired = true; - // initialize the user's filesystem - \OC_Util::setUpFS(\OC_User::getUser()); + // initialize the user's filesystem + \OC_Util::setUpFS(\OC_User::getUser()); - return $authUser; + return $authUser; + } } return false; diff --git a/lib/private/app.php b/lib/private/app.php index 73576088d15..8e36d43bfb1 100644 --- a/lib/private/app.php +++ b/lib/private/app.php @@ -635,63 +635,10 @@ class OC_App { } $file = self::getAppPath($appId) . '/appinfo/info.xml'; } - $data = array(); - if (!file_exists($file)) { - return null; - } - $content = @file_get_contents($file); - if (!$content) { - return null; - } - $xml = new SimpleXMLElement($content); - $data['info'] = array(); - $data['remote'] = array(); - $data['public'] = array(); - foreach ($xml->children() as $child) { - /** - * @var $child SimpleXMLElement - */ - if ($child->getName() == 'remote') { - foreach ($child->children() as $remote) { - /** - * @var $remote SimpleXMLElement - */ - $data['remote'][$remote->getName()] = (string)$remote; - } - } elseif ($child->getName() == 'public') { - foreach ($child->children() as $public) { - /** - * @var $public SimpleXMLElement - */ - $data['public'][$public->getName()] = (string)$public; - } - } elseif ($child->getName() == 'types') { - $data['types'] = array(); - foreach ($child->children() as $type) { - /** - * @var $type SimpleXMLElement - */ - $data['types'][] = $type->getName(); - } - } elseif ($child->getName() == 'description') { - $xml = (string)$child->asXML(); - $data[$child->getName()] = substr($xml, 13, -14); //script <description> tags - } elseif ($child->getName() == 'documentation') { - foreach ($child as $subChild) { - $url = (string) $subChild; - - // If it is not an absolute URL we assume it is a key - // i.e. admin-ldap will get converted to go.php?to=admin-ldap - if(!\OC::$server->getHTTPHelper()->isHTTPURL($url)) { - $url = OC_Helper::linkToDocs($url); - } - $data["documentation"][$subChild->getName()] = $url; - } - } else { - $data[$child->getName()] = (string)$child; - } - } + $parser = new \OC\App\InfoParser(\OC::$server->getHTTPHelper(), \OC::$server->getURLGenerator()); + $data = $parser->parse($file); + self::$appInfo[$appId] = $data; return $data; @@ -1180,10 +1127,6 @@ class OC_App { * @return bool */ public static function updateApp($appId) { - if (file_exists(self::getAppPath($appId) . '/appinfo/preupdate.php')) { - self::loadApp($appId, false); - include self::getAppPath($appId) . '/appinfo/preupdate.php'; - } if (file_exists(self::getAppPath($appId) . '/appinfo/database.xml')) { OC_DB::updateDbFromStructure(self::getAppPath($appId) . '/appinfo/database.xml'); } diff --git a/lib/private/app/appmanager.php b/lib/private/app/appmanager.php new file mode 100644 index 00000000000..6d9aa0bfe37 --- /dev/null +++ b/lib/private/app/appmanager.php @@ -0,0 +1,138 @@ +<?php + +/** + * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\App; + +use OCP\App\IAppManager; +use OCP\IAppConfig; +use OCP\IGroupManager; +use OCP\IUserSession; + +class AppManager implements IAppManager { + /** + * @var \OCP\IUserSession + */ + private $userSession; + + /** + * @var \OCP\IAppConfig + */ + private $appConfig; + + /** + * @var \OCP\IGroupManager + */ + private $groupManager; + + /** + * @var string[] $appId => $enabled + */ + private $installedAppsCache; + + /** + * @param \OCP\IUserSession $userSession + * @param \OCP\IAppConfig $appConfig + * @param \OCP\IGroupManager $groupManager + */ + public function __construct(IUserSession $userSession, IAppConfig $appConfig, IGroupManager $groupManager) { + $this->userSession = $userSession; + $this->appConfig = $appConfig; + $this->groupManager = $groupManager; + } + + /** + * @return string[] $appId => $enabled + */ + private function getInstalledApps() { + if (!$this->installedAppsCache) { + $values = $this->appConfig->getValues(false, 'enabled'); + $this->installedAppsCache = array_filter($values, function ($value) { + return $value !== 'no'; + }); + ksort($this->installedAppsCache); + } + return $this->installedAppsCache; + } + + /** + * Check if an app is enabled for user + * + * @param string $appId + * @param \OCP\IUser $user (optional) if not defined, the currently logged in user will be used + * @return bool + */ + public function isEnabledForUser($appId, $user = null) { + if (is_null($user)) { + $user = $this->userSession->getUser(); + } + $installedApps = $this->getInstalledApps(); + if (isset($installedApps[$appId])) { + $enabled = $installedApps[$appId]; + if ($enabled === 'yes') { + return true; + } elseif (is_null($user)) { + return false; + } else { + $groupIds = json_decode($enabled); + $userGroups = $this->groupManager->getUserGroupIds($user); + foreach ($userGroups as $groupId) { + if (array_search($groupId, $groupIds) !== false) { + return true; + } + } + return false; + } + } else { + return false; + } + } + + /** + * Check if an app is installed in the instance + * + * @param string $appId + * @return bool + */ + public function isInstalled($appId) { + $installedApps = $this->getInstalledApps(); + return isset($installedApps[$appId]); + } + + /** + * Enable an app for every user + * + * @param string $appId + */ + public function enableApp($appId) { + $this->appConfig->setValue($appId, 'enabled', 'yes'); + } + + /** + * Enable an app only for specific groups + * + * @param string $appId + * @param \OCP\IGroup[] $groups + */ + public function enableAppForGroups($appId, $groups) { + $groupIds = array_map(function ($group) { + /** @var \OCP\IGroup $group */ + return $group->getGID(); + }, $groups); + $this->appConfig->setValue($appId, 'enabled', json_encode($groupIds)); + } + + /** + * Disable an app for every user + * + * @param string $appId + */ + public function disableApp($appId) { + $this->appConfig->setValue($appId, 'enabled', 'no'); + } +} diff --git a/lib/private/app/infoparser.php b/lib/private/app/infoparser.php new file mode 100644 index 00000000000..b4bdbea5c04 --- /dev/null +++ b/lib/private/app/infoparser.php @@ -0,0 +1,84 @@ +<?php + /** + * @author Thomas Müller + * @copyright 2014 Thomas Müller deepdiver@owncloud.com + * + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\App; + +use OCP\IURLGenerator; + +class InfoParser { + /** + * @var \OC\HTTPHelper + */ + private $httpHelper; + + /** + * @var IURLGenerator + */ + private $urlGenerator; + + /** + * @param \OC\HTTPHelper $httpHelper + * @param IURLGenerator $urlGenerator + */ + public function __construct(\OC\HTTPHelper $httpHelper, IURLGenerator $urlGenerator) { + $this->httpHelper = $httpHelper; + $this->urlGenerator = $urlGenerator; + } + + /** + * @param string $file the xml file to be loaded + * @return null|array where null is an indicator for an error + */ + public function parse($file) { + if (!file_exists($file)) { + return null; + } + + $loadEntities = libxml_disable_entity_loader(false); + $xml = @simplexml_load_file($file); + libxml_disable_entity_loader($loadEntities); + if ($xml == false) { + return null; + } + $array = json_decode(json_encode((array)$xml), TRUE); + if (is_null($array)) { + return null; + } + if (!array_key_exists('info', $array)) { + $array['info'] = array(); + } + if (!array_key_exists('remote', $array)) { + $array['remote'] = array(); + } + if (!array_key_exists('public', $array)) { + $array['public'] = array(); + } + + if (array_key_exists('documentation', $array)) { + foreach ($array['documentation'] as $key => $url) { + // If it is not an absolute URL we assume it is a key + // i.e. admin-ldap will get converted to go.php?to=admin-ldap + if (!$this->httpHelper->isHTTPURL($url)) { + $url = $this->urlGenerator->linkToDocs($url); + } + + $array['documentation'][$key] = $url; + } + } + if (array_key_exists('types', $array)) { + foreach ($array['types'] as $type => $v) { + unset($array['types'][$type]); + $array['types'][] = $type; + } + } + + return $array; + } +} diff --git a/lib/private/appframework/core/api.php b/lib/private/appframework/core/api.php index 279f4bf97f7..f68c677d106 100644 --- a/lib/private/appframework/core/api.php +++ b/lib/private/appframework/core/api.php @@ -49,6 +49,7 @@ class API implements IApi{ /** * Gets the userid of the current user * @return string the user id of the current user + * @deprecated Use \OC::$server->getUserSession()->getUser()->getUID() */ public function getUserId(){ return \OCP\User::getUser(); @@ -112,6 +113,7 @@ class API implements IApi{ /** * used to return and open a new event source * @return \OCP\IEventSource a new open EventSource class + * @deprecated Use \OC::$server->createEventSource(); */ public function openEventSource(){ return \OC::$server->createEventSource(); @@ -159,6 +161,7 @@ class API implements IApi{ * @param string $className full namespace and class name of the class * @param string $methodName the name of the static method that should be * called + * @deprecated Use \OC::$server->getJobList()->add(); */ public function addRegularTask($className, $methodName) { \OCP\Backgroundjob::addRegularTask($className, $methodName); diff --git a/lib/private/appframework/middleware/security/securitymiddleware.php b/lib/private/appframework/middleware/security/securitymiddleware.php index 948a43ce0f4..8c5ca5891ad 100644 --- a/lib/private/appframework/middleware/security/securitymiddleware.php +++ b/lib/private/appframework/middleware/security/securitymiddleware.php @@ -34,6 +34,8 @@ use OCP\INavigationManager; use OCP\IURLGenerator; use OCP\IRequest; use OCP\ILogger; +use OCP\AppFramework\Controller; +use OCP\Util; /** @@ -110,12 +112,24 @@ class SecurityMiddleware extends Middleware { } } + // CSRF check - also registers the CSRF token since the session may be closed later + Util::callRegister(); if(!$this->reflector->hasAnnotation('NoCSRFRequired')) { if(!$this->request->passesCSRFCheck()) { throw new SecurityException('CSRF check failed', Http::STATUS_PRECONDITION_FAILED); } } + /** + * FIXME: Use DI once available + * Checks if app is enabled (also inclues a check whether user is allowed to access the resource) + * The getAppPath() check is here since components such as settings also use the AppFramework and + * therefore won't pass this check. + */ + if(\OC_App::getAppPath($this->appName) !== false && !\OC_App::isEnabled($this->appName)) { + throw new SecurityException('App is not enabled', Http::STATUS_PRECONDITION_FAILED); + } + } diff --git a/lib/private/appframework/routing/routeconfig.php b/lib/private/appframework/routing/routeconfig.php index 91687b9c83c..9816b062b8d 100644 --- a/lib/private/appframework/routing/routeconfig.php +++ b/lib/private/appframework/routing/routeconfig.php @@ -69,6 +69,12 @@ class RouteConfig { $simpleRoutes = isset($routes['routes']) ? $routes['routes'] : array(); foreach ($simpleRoutes as $simpleRoute) { $name = $simpleRoute['name']; + $postfix = ''; + + if (isset($simpleRoute['postfix'])) { + $postfix = $simpleRoute['postfix']; + } + $url = $simpleRoute['url']; $verb = isset($simpleRoute['verb']) ? strtoupper($simpleRoute['verb']) : 'GET'; @@ -84,7 +90,7 @@ class RouteConfig { // register the route $handler = new RouteActionHandler($this->container, $controllerName, $actionName); - $router = $this->router->create($this->appName.'.'.$controller.'.'.$action, $url) + $router = $this->router->create($this->appName.'.'.$controller.'.'.$action . $postfix, $url) ->method($verb) ->action($handler); diff --git a/lib/private/appframework/utility/simplecontainer.php b/lib/private/appframework/utility/simplecontainer.php index c6effed5b4b..55b9cf7a977 100644 --- a/lib/private/appframework/utility/simplecontainer.php +++ b/lib/private/appframework/utility/simplecontainer.php @@ -35,7 +35,7 @@ class SimpleContainer extends \Pimple\Container implements \OCP\IContainer { * @param bool $shared */ function registerService($name, \Closure $closure, $shared = true) { - if (!empty($this[$name])) { + if (isset($this[$name])) { unset($this[$name]); } if ($shared) { diff --git a/lib/private/config.php b/lib/private/config.php index f0548442ab5..cc07d6a1ed1 100644 --- a/lib/private/config.php +++ b/lib/private/config.php @@ -138,12 +138,12 @@ class Config { // Include file and merge config foreach ($configFiles as $file) { - if($file === $this->configFilePath && !@touch($file)) { - // Writing to the main config might not be possible, e.g. if the wrong + $filePointer = @fopen($file, 'r'); + if($file === $this->configFilePath && $filePointer === false) { + // Opening the main config might not be possible, e.g. if the wrong // permissions are set (likely on a new installation) continue; } - $filePointer = fopen($file, 'r'); // Try to acquire a file lock if(!flock($filePointer, LOCK_SH)) { diff --git a/lib/private/connector/sabre/appenabledplugin.php b/lib/private/connector/sabre/appenabledplugin.php new file mode 100644 index 00000000000..61f5170658d --- /dev/null +++ b/lib/private/connector/sabre/appenabledplugin.php @@ -0,0 +1,75 @@ +<?php + +/** + * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Connector\Sabre; + +use OCP\App\IAppManager; +use Sabre\DAV\Exception\Forbidden; +use Sabre\DAV\ServerPlugin; + +/** + * Plugin to check if an app is enabled for the current user + */ +class AppEnabledPlugin extends ServerPlugin { + + /** + * Reference to main server object + * + * @var \Sabre\DAV\Server + */ + private $server; + + /** + * @var string + */ + private $app; + + /** + * @var \OCP\App\IAppManager + */ + private $appManager; + + /** + * @param string $app + * @param \OCP\App\IAppManager $appManager + */ + public function __construct($app, IAppManager $appManager) { + $this->app = $app; + $this->appManager = $appManager; + } + + /** + * This initializes the plugin. + * + * This function is called by \Sabre\DAV\Server, after + * addPlugin is called. + * + * This method should set up the required event subscriptions. + * + * @param \Sabre\DAV\Server $server + * @return void + */ + public function initialize(\Sabre\DAV\Server $server) { + + $this->server = $server; + $this->server->subscribeEvent('beforeMethod', array($this, 'checkAppEnabled'), 30); + } + + /** + * This method is called before any HTTP after auth and checks if the user has access to the app + * + * @throws \Sabre\DAV\Exception\Forbidden + * @return bool + */ + public function checkAppEnabled() { + if (!$this->appManager->isEnabledForUser($this->app)) { + throw new Forbidden(); + } + } +} diff --git a/lib/private/connector/sabre/directory.php b/lib/private/connector/sabre/directory.php index 0d35c7d528e..ec5f82f9daa 100644 --- a/lib/private/connector/sabre/directory.php +++ b/lib/private/connector/sabre/directory.php @@ -51,29 +51,33 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node */ public function createFile($name, $data = null) { - // for chunked upload also updating a existing file is a "createFile" - // because we create all the chunks before re-assemble them to the existing file. - if (isset($_SERVER['HTTP_OC_CHUNKED'])) { - - // exit if we can't create a new file and we don't updatable existing file - $info = OC_FileChunking::decodeName($name); - if (!$this->fileView->isCreatable($this->path) && - !$this->fileView->isUpdatable($this->path . '/' . $info['name'])) { - throw new \Sabre\DAV\Exception\Forbidden(); - } + try { + // for chunked upload also updating a existing file is a "createFile" + // because we create all the chunks before re-assemble them to the existing file. + if (isset($_SERVER['HTTP_OC_CHUNKED'])) { - } else { - // For non-chunked upload it is enough to check if we can create a new file - if (!$this->fileView->isCreatable($this->path)) { - throw new \Sabre\DAV\Exception\Forbidden(); + // exit if we can't create a new file and we don't updatable existing file + $info = OC_FileChunking::decodeName($name); + if (!$this->fileView->isCreatable($this->path) && + !$this->fileView->isUpdatable($this->path . '/' . $info['name'])) { + throw new \Sabre\DAV\Exception\Forbidden(); + } + + } else { + // For non-chunked upload it is enough to check if we can create a new file + if (!$this->fileView->isCreatable($this->path)) { + throw new \Sabre\DAV\Exception\Forbidden(); + } } - } - $path = $this->fileView->getAbsolutePath($this->path) . '/' . $name; - // using a dummy FileInfo is acceptable here since it will be refreshed after the put is complete - $info = new \OC\Files\FileInfo($path, null, null, array()); - $node = new OC_Connector_Sabre_File($this->fileView, $info); - return $node->put($data); + $path = $this->fileView->getAbsolutePath($this->path) . '/' . $name; + // using a dummy FileInfo is acceptable here since it will be refreshed after the put is complete + $info = new \OC\Files\FileInfo($path, null, null, array()); + $node = new OC_Connector_Sabre_File($this->fileView, $info); + return $node->put($data); + } catch (\OCP\Files\StorageNotAvailableException $e) { + throw new \Sabre\DAV\Exception\ServiceUnavailable($e->getMessage()); + } } /** @@ -84,15 +88,18 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node * @return void */ public function createDirectory($name) { - if (!$this->info->isCreatable()) { - throw new \Sabre\DAV\Exception\Forbidden(); - } + try { + if (!$this->info->isCreatable()) { + throw new \Sabre\DAV\Exception\Forbidden(); + } - $newPath = $this->path . '/' . $name; - if(!$this->fileView->mkdir($newPath)) { - throw new \Sabre\DAV\Exception\Forbidden('Could not create directory '.$newPath); + $newPath = $this->path . '/' . $name; + if(!$this->fileView->mkdir($newPath)) { + throw new \Sabre\DAV\Exception\Forbidden('Could not create directory '.$newPath); + } + } catch (\OCP\Files\StorageNotAvailableException $e) { + throw new \Sabre\DAV\Exception\ServiceUnavailable($e->getMessage()); } - } /** @@ -104,10 +111,13 @@ class OC_Connector_Sabre_Directory extends OC_Connector_Sabre_Node * @return \Sabre\DAV\INode */ public function getChild($name, $info = null) { - $path = $this->path . '/' . $name; if (is_null($info)) { - $info = $this->fileView->getFileInfo($path); + try { + $info = $this->fileView->getFileInfo($path); + } catch (\OCP\Files\StorageNotAvailableException $e) { + throw new \Sabre\DAV\Exception\ServiceUnavailable($e->getMessage()); + } } if (!$info) { diff --git a/lib/private/connector/sabre/file.php b/lib/private/connector/sabre/file.php index 903c3447b56..d93b8e68eb6 100644 --- a/lib/private/connector/sabre/file.php +++ b/lib/private/connector/sabre/file.php @@ -50,9 +50,13 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements \Sabre\ * @return string|null */ public function put($data) { - if ($this->info && $this->fileView->file_exists($this->path) && - !$this->info->isUpdateable()) { - throw new \Sabre\DAV\Exception\Forbidden(); + try { + if ($this->info && $this->fileView->file_exists($this->path) && + !$this->info->isUpdateable()) { + throw new \Sabre\DAV\Exception\Forbidden(); + } + } catch (\OCP\Files\StorageNotAvailableException $e) { + throw new \Sabre\DAV\Exception\ServiceUnavailable($e->getMessage()); } // throw an exception if encryption was disabled but the files are still encrypted @@ -100,43 +104,51 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements \Sabre\ } catch (\OCP\Files\LockNotAcquiredException $e) { // the file is currently being written to by another process throw new OC_Connector_Sabre_Exception_FileLocked($e->getMessage(), $e->getCode(), $e); + } catch (\OCA\Encryption\Exception\EncryptionException $e) { + throw new \Sabre\DAV\Exception\Forbidden($e->getMessage()); + } catch (\OCP\Files\StorageNotAvailableException $e) { + throw new \Sabre\DAV\Exception\ServiceUnavailable($e->getMessage()); } - // if content length is sent by client: - // double check if the file was fully received - // compare expected and actual size - if (isset($_SERVER['CONTENT_LENGTH']) && $_SERVER['REQUEST_METHOD'] !== 'LOCK') { - $expected = $_SERVER['CONTENT_LENGTH']; - $actual = $this->fileView->filesize($partFilePath); - if ($actual != $expected) { - $this->fileView->unlink($partFilePath); - throw new \Sabre\DAV\Exception\BadRequest('expected filesize ' . $expected . ' got ' . $actual); + try { + // if content length is sent by client: + // double check if the file was fully received + // compare expected and actual size + if (isset($_SERVER['CONTENT_LENGTH']) && $_SERVER['REQUEST_METHOD'] !== 'LOCK') { + $expected = $_SERVER['CONTENT_LENGTH']; + $actual = $this->fileView->filesize($partFilePath); + if ($actual != $expected) { + $this->fileView->unlink($partFilePath); + throw new \Sabre\DAV\Exception\BadRequest('expected filesize ' . $expected . ' got ' . $actual); + } } - } - // rename to correct path - try { - $renameOkay = $this->fileView->rename($partFilePath, $this->path); - $fileExists = $this->fileView->file_exists($this->path); - if ($renameOkay === false || $fileExists === false) { - \OC_Log::write('webdav', '\OC\Files\Filesystem::rename() failed', \OC_Log::ERROR); - $this->fileView->unlink($partFilePath); - throw new \Sabre\DAV\Exception('Could not rename part file to final file'); + // rename to correct path + try { + $renameOkay = $this->fileView->rename($partFilePath, $this->path); + $fileExists = $this->fileView->file_exists($this->path); + if ($renameOkay === false || $fileExists === false) { + \OC_Log::write('webdav', '\OC\Files\Filesystem::rename() failed', \OC_Log::ERROR); + $this->fileView->unlink($partFilePath); + throw new \Sabre\DAV\Exception('Could not rename part file to final file'); + } + } + catch (\OCP\Files\LockNotAcquiredException $e) { + // the file is currently being written to by another process + throw new OC_Connector_Sabre_Exception_FileLocked($e->getMessage(), $e->getCode(), $e); } - } - catch (\OCP\Files\LockNotAcquiredException $e) { - // the file is currently being written to by another process - throw new OC_Connector_Sabre_Exception_FileLocked($e->getMessage(), $e->getCode(), $e); - } - // allow sync clients to send the mtime along in a header - $mtime = OC_Request::hasModificationTime(); - if ($mtime !== false) { - if($this->fileView->touch($this->path, $mtime)) { - header('X-OC-MTime: accepted'); + // allow sync clients to send the mtime along in a header + $mtime = OC_Request::hasModificationTime(); + if ($mtime !== false) { + if($this->fileView->touch($this->path, $mtime)) { + header('X-OC-MTime: accepted'); + } } + $this->refreshInfo(); + } catch (\OCP\Files\StorageNotAvailableException $e) { + throw new \Sabre\DAV\Exception\ServiceUnavailable($e->getMessage()); } - $this->refreshInfo(); return '"' . $this->info->getEtag() . '"'; } @@ -152,7 +164,13 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements \Sabre\ if (\OC_Util::encryptedFiles()) { throw new \Sabre\DAV\Exception\ServiceUnavailable(); } else { - return $this->fileView->fopen(ltrim($this->path, '/'), 'rb'); + try { + return $this->fileView->fopen(ltrim($this->path, '/'), 'rb'); + } catch (\OCA\Encryption\Exception\EncryptionException $e) { + throw new \Sabre\DAV\Exception\Forbidden($e->getMessage()); + } catch (\OCP\Files\StorageNotAvailableException $e) { + throw new \Sabre\DAV\Exception\ServiceUnavailable($e->getMessage()); + } } } @@ -168,9 +186,13 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements \Sabre\ throw new \Sabre\DAV\Exception\Forbidden(); } - if (!$this->fileView->unlink($this->path)) { - // assume it wasn't possible to delete due to permissions - throw new \Sabre\DAV\Exception\Forbidden(); + try { + if (!$this->fileView->unlink($this->path)) { + // assume it wasn't possible to delete due to permissions + throw new \Sabre\DAV\Exception\Forbidden(); + } + } catch (\OCP\Files\StorageNotAvailableException $e) { + throw new \Sabre\DAV\Exception\ServiceUnavailable($e->getMessage()); } // remove properties @@ -197,6 +219,10 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements \Sabre\ public function getContentType() { $mimeType = $this->info->getMimetype(); + // PROPFIND needs to return the correct mime type, for consistency with the web UI + if (isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] === 'PROPFIND' ) { + return $mimeType; + } return \OC_Helper::getSecureMimeType($mimeType); } @@ -229,33 +255,37 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements \Sabre\ if ($chunk_handler->isComplete()) { - // we first assembly the target file as a part file - $partFile = $path . '/' . $info['name'] . '.ocTransferId' . $info['transferid'] . '.part'; - $chunk_handler->file_assemble($partFile); - - // here is the final atomic rename - $targetPath = $path . '/' . $info['name']; - $renameOkay = $this->fileView->rename($partFile, $targetPath); - $fileExists = $this->fileView->file_exists($targetPath); - if ($renameOkay === false || $fileExists === false) { - \OC_Log::write('webdav', '\OC\Files\Filesystem::rename() failed', \OC_Log::ERROR); - // only delete if an error occurred and the target file was already created - if ($fileExists) { - $this->fileView->unlink($targetPath); + try { + // we first assembly the target file as a part file + $partFile = $path . '/' . $info['name'] . '.ocTransferId' . $info['transferid'] . '.part'; + $chunk_handler->file_assemble($partFile); + + // here is the final atomic rename + $targetPath = $path . '/' . $info['name']; + $renameOkay = $this->fileView->rename($partFile, $targetPath); + $fileExists = $this->fileView->file_exists($targetPath); + if ($renameOkay === false || $fileExists === false) { + \OC_Log::write('webdav', '\OC\Files\Filesystem::rename() failed', \OC_Log::ERROR); + // only delete if an error occurred and the target file was already created + if ($fileExists) { + $this->fileView->unlink($targetPath); + } + throw new \Sabre\DAV\Exception('Could not rename part file assembled from chunks'); } - throw new \Sabre\DAV\Exception('Could not rename part file assembled from chunks'); - } - // allow sync clients to send the mtime along in a header - $mtime = OC_Request::hasModificationTime(); - if ($mtime !== false) { - if($this->fileView->touch($targetPath, $mtime)) { - header('X-OC-MTime: accepted'); + // allow sync clients to send the mtime along in a header + $mtime = OC_Request::hasModificationTime(); + if ($mtime !== false) { + if($this->fileView->touch($targetPath, $mtime)) { + header('X-OC-MTime: accepted'); + } } - } - $info = $this->fileView->getFileInfo($targetPath); - return $info->getEtag(); + $info = $this->fileView->getFileInfo($targetPath); + return $info->getEtag(); + } catch (\OCP\Files\StorageNotAvailableException $e) { + throw new \Sabre\DAV\Exception\ServiceUnavailable($e->getMessage()); + } } return null; diff --git a/lib/private/connector/sabre/objecttree.php b/lib/private/connector/sabre/objecttree.php index d7a96cfc88e..14a55b5cada 100644 --- a/lib/private/connector/sabre/objecttree.php +++ b/lib/private/connector/sabre/objecttree.php @@ -138,27 +138,31 @@ class ObjectTree extends \Sabre\DAV\ObjectTree { $isMovableMount = true; } - // check update privileges - if (!$this->fileView->isUpdatable($sourcePath) && !$isMovableMount) { - throw new \Sabre\DAV\Exception\Forbidden(); - } - if ($sourceDir !== $destinationDir) { - if (!$this->fileView->isCreatable($destinationDir)) { + try { + // check update privileges + if (!$this->fileView->isUpdatable($sourcePath) && !$isMovableMount) { throw new \Sabre\DAV\Exception\Forbidden(); } - if (!$this->fileView->isDeletable($sourcePath) && !$isMovableMount) { - throw new \Sabre\DAV\Exception\Forbidden(); + if ($sourceDir !== $destinationDir) { + if (!$this->fileView->isCreatable($destinationDir)) { + throw new \Sabre\DAV\Exception\Forbidden(); + } + if (!$this->fileView->isDeletable($sourcePath) && !$isMovableMount) { + throw new \Sabre\DAV\Exception\Forbidden(); + } } - } - $fileName = basename($destinationPath); - if (!\OCP\Util::isValidFileName($fileName)) { - throw new \Sabre\DAV\Exception\BadRequest(); - } + $fileName = basename($destinationPath); + if (!\OCP\Util::isValidFileName($fileName)) { + throw new \Sabre\DAV\Exception\BadRequest(); + } - $renameOkay = $this->fileView->rename($sourcePath, $destinationPath); - if (!$renameOkay) { - throw new \Sabre\DAV\Exception\Forbidden(''); + $renameOkay = $this->fileView->rename($sourcePath, $destinationPath); + if (!$renameOkay) { + throw new \Sabre\DAV\Exception\Forbidden(''); + } + } catch (\OCP\Files\StorageNotAvailableException $e) { + throw new \Sabre\DAV\Exception\ServiceUnavailable($e->getMessage()); } // update properties @@ -188,19 +192,23 @@ class ObjectTree extends \Sabre\DAV\ObjectTree { throw new \Sabre\DAV\Exception\ServiceUnavailable('filesystem not setup'); } - if ($this->fileView->is_file($source)) { - $this->fileView->copy($source, $destination); - } else { - $this->fileView->mkdir($destination); - $dh = $this->fileView->opendir($source); - if (is_resource($dh)) { - while (($subNode = readdir($dh)) !== false) { + try { + if ($this->fileView->is_file($source)) { + $this->fileView->copy($source, $destination); + } else { + $this->fileView->mkdir($destination); + $dh = $this->fileView->opendir($source); + if (is_resource($dh)) { + while (($subNode = readdir($dh)) !== false) { - if ($subNode == '.' || $subNode == '..') continue; - $this->copy($source . '/' . $subNode, $destination . '/' . $subNode); + if ($subNode == '.' || $subNode == '..') continue; + $this->copy($source . '/' . $subNode, $destination . '/' . $subNode); + } } } + } catch (\OCP\Files\StorageNotAvailableException $e) { + throw new \Sabre\DAV\Exception\ServiceUnavailable($e->getMessage()); } list($destinationDir,) = \Sabre\DAV\URLUtil::splitPath($destination); diff --git a/lib/private/connector/sabre/quotaplugin.php b/lib/private/connector/sabre/quotaplugin.php index ebcc894d744..59d0e188f66 100644 --- a/lib/private/connector/sabre/quotaplugin.php +++ b/lib/private/connector/sabre/quotaplugin.php @@ -102,7 +102,11 @@ class OC_Connector_Sabre_QuotaPlugin extends \Sabre\DAV\ServerPlugin { * @return mixed */ public function getFreeSpace($parentUri) { - $freeSpace = $this->view->free_space($parentUri); - return $freeSpace; + try { + $freeSpace = $this->view->free_space($parentUri); + return $freeSpace; + } catch (\OCP\Files\StorageNotAvailableException $e) { + throw new \Sabre\DAV\Exception\ServiceUnavailable($e->getMessage()); + } } } diff --git a/lib/private/contacts/localaddressbook.php b/lib/private/contacts/localaddressbook.php index 483bbee83f8..91ddb5798f2 100644 --- a/lib/private/contacts/localaddressbook.php +++ b/lib/private/contacts/localaddressbook.php @@ -91,7 +91,7 @@ class LocalAddressBook implements \OCP\IAddressBook { * @return int */ public function getPermissions() { - return \OCP\PERMISSION_READ; + return \OCP\Constants::PERMISSION_READ; } /** diff --git a/lib/private/contactsmanager.php b/lib/private/contactsmanager.php index 338cc048651..737fc4f0e3a 100644 --- a/lib/private/contactsmanager.php +++ b/lib/private/contactsmanager.php @@ -62,7 +62,7 @@ namespace OC { return null; } - if ($addressBook->getPermissions() & \OCP\PERMISSION_DELETE) { + if ($addressBook->getPermissions() & \OCP\Constants::PERMISSION_DELETE) { return null; } @@ -83,7 +83,7 @@ namespace OC { return null; } - if ($addressBook->getPermissions() & \OCP\PERMISSION_CREATE) { + if ($addressBook->getPermissions() & \OCP\Constants::PERMISSION_CREATE) { return null; } diff --git a/lib/private/davclient.php b/lib/private/davclient.php deleted file mode 100644 index 6a544d27068..00000000000 --- a/lib/private/davclient.php +++ /dev/null @@ -1,59 +0,0 @@ -<?php -/** - * ownCloud - * - * @author Vincent Petry - * @copyright 2013 Vincent Petry <pvince81@owncloud.com> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU Affero General Public - * License along with this library. If not, see <http://www.gnu.org/licenses/>. - * - */ - -/** - * This class extends the SabreDAV client with additional functionality - * like request timeout. - */ - -class OC_DAVClient extends \Sabre\DAV\Client { - - protected $requestTimeout; - - protected $verifyHost; - - /** - * Sets the request timeout or 0 to disable timeout. - * @param integer $timeout in seconds or 0 to disable - */ - public function setRequestTimeout($timeout) { - $this->requestTimeout = (int)$timeout; - } - - /** - * Sets the CURLOPT_SSL_VERIFYHOST setting - * @param integer $value value to set CURLOPT_SSL_VERIFYHOST to - */ - public function setVerifyHost($value) { - $this->verifyHost = $value; - } - - protected function curlRequest($url, $settings) { - if ($this->requestTimeout > 0) { - $settings[CURLOPT_TIMEOUT] = $this->requestTimeout; - } - if (!is_null($this->verifyHost)) { - $settings[CURLOPT_SSL_VERIFYHOST] = $this->verifyHost; - } - return parent::curlRequest($url, $settings); - } -} diff --git a/lib/private/db/adapter.php b/lib/private/db/adapter.php index 972008776f6..58b3514b922 100644 --- a/lib/private/db/adapter.php +++ b/lib/private/db/adapter.php @@ -43,6 +43,7 @@ class Adapter { * insert the @input values when they do not exist yet * @param string $table name * @param array $input key->value pair, key has to be sanitized properly + * @throws \OC\HintException * @return int count of inserted rows */ public function insertIfNotExist($table, $input) { @@ -70,8 +71,13 @@ class Adapter { $entry = 'DB Error: "'.$e->getMessage() . '"<br />'; $entry .= 'Offending command was: ' . $query.'<br />'; \OC_Log::write('core', $entry, \OC_Log::FATAL); - error_log('DB error: ' . $entry); - \OC_Template::printErrorPage( $entry ); + $l = \OC::$server->getL10N('lib'); + throw new \OC\HintException( + $l->t('Database Error'), + $l->t('Please contact your system administrator.'), + 0, + $e + ); } } } diff --git a/lib/private/db/adaptersqlite.php b/lib/private/db/adaptersqlite.php index 3471fcf4042..c5dfa85aaac 100644 --- a/lib/private/db/adaptersqlite.php +++ b/lib/private/db/adaptersqlite.php @@ -41,8 +41,13 @@ class AdapterSqlite extends Adapter { $entry = 'DB Error: "'.$e->getMessage() . '"<br />'; $entry .= 'Offending command was: ' . $query . '<br />'; \OC_Log::write('core', $entry, \OC_Log::FATAL); - error_log('DB error: '.$entry); - \OC_Template::printErrorPage( $entry ); + $l = \OC::$server->getL10N('lib'); + throw new \OC\HintException( + $l->t('Database Error'), + $l->t('Please contact your system administrator.'), + 0, + $e + ); } if ($stmt->fetchColumn() === '0') { @@ -60,8 +65,13 @@ class AdapterSqlite extends Adapter { $entry = 'DB Error: "'.$e->getMessage() . '"<br />'; $entry .= 'Offending command was: ' . $query.'<br />'; \OC_Log::write('core', $entry, \OC_Log::FATAL); - error_log('DB error: ' . $entry); - \OC_Template::printErrorPage( $entry ); + $l = \OC::$server->getL10N('lib'); + throw new \OC\HintException( + $l->t('Database Error'), + $l->t('Please contact your system administrator.'), + 0, + $e + ); } return $result; diff --git a/lib/private/db/connectionfactory.php b/lib/private/db/connectionfactory.php index f6253e09b95..58043b30440 100644 --- a/lib/private/db/connectionfactory.php +++ b/lib/private/db/connectionfactory.php @@ -90,7 +90,8 @@ class ConnectionFactory { $eventManager->addEventSubscriber(new \Doctrine\DBAL\Event\Listeners\OracleSessionInit); break; case 'sqlite3': - $eventManager->addEventSubscriber(new SQLiteSessionInit); + $journalMode = $additionalConnectionParams['sqlite.journal_mode']; + $eventManager->addEventSubscriber(new SQLiteSessionInit(true, $journalMode)); break; } $connection = \Doctrine\DBAL\DriverManager::getConnection( @@ -153,6 +154,7 @@ class ConnectionFactory { } $connectionParams['tablePrefix'] = $config->getSystemValue('dbtableprefix', 'oc_'); + $connectionParams['sqlite.journal_mode'] = $config->getSystemValue('sqlite.journal_mode', 'WAL'); //additional driver options, eg. for mysql ssl $driverOptions = $config->getSystemValue('dbdriveroptions', null); diff --git a/lib/private/db/mdb2schemamanager.php b/lib/private/db/mdb2schemamanager.php index 632e320576c..78267094d0e 100644 --- a/lib/private/db/mdb2schemamanager.php +++ b/lib/private/db/mdb2schemamanager.php @@ -49,7 +49,7 @@ class MDB2SchemaManager { * TODO: write more documentation */ public function createDbFromStructure($file) { - $schemaReader = new MDB2SchemaReader(\OC_Config::getObject(), $this->conn->getDatabasePlatform()); + $schemaReader = new MDB2SchemaReader(\OC::$server->getConfig(), $this->conn->getDatabasePlatform()); $toSchema = $schemaReader->loadSchemaFromFile($file); return $this->executeSchemaChange($toSchema); } @@ -83,7 +83,7 @@ class MDB2SchemaManager { */ private function readSchemaFromFile($file) { $platform = $this->conn->getDatabasePlatform(); - $schemaReader = new MDB2SchemaReader(\OC_Config::getObject(), $platform); + $schemaReader = new MDB2SchemaReader(\OC::$server->getConfig(), $platform); return $schemaReader->loadSchemaFromFile($file); } @@ -131,7 +131,7 @@ class MDB2SchemaManager { * @param string $file the xml file describing the tables */ public function removeDBStructure($file) { - $schemaReader = new MDB2SchemaReader(\OC_Config::getObject(), $this->conn->getDatabasePlatform()); + $schemaReader = new MDB2SchemaReader(\OC::$server->getConfig(), $this->conn->getDatabasePlatform()); $fromSchema = $schemaReader->loadSchemaFromFile($file); $toSchema = clone $fromSchema; /** @var $table \Doctrine\DBAL\Schema\Table */ diff --git a/lib/private/db/mdb2schemareader.php b/lib/private/db/mdb2schemareader.php index 288eef5cda0..7dd4168fb6e 100644 --- a/lib/private/db/mdb2schemareader.php +++ b/lib/private/db/mdb2schemareader.php @@ -8,6 +8,9 @@ namespace OC\DB; +use Doctrine\DBAL\Platforms\AbstractPlatform; +use OCP\IConfig; + class MDB2SchemaReader { /** * @var string $DBNAME @@ -25,13 +28,13 @@ class MDB2SchemaReader { protected $platform; /** - * @param \OC\Config $config + * @param \OCP\IConfig $config * @param \Doctrine\DBAL\Platforms\AbstractPlatform $platform */ - public function __construct($config, $platform) { + public function __construct(IConfig $config, AbstractPlatform $platform) { $this->platform = $platform; - $this->DBNAME = $config->getValue('dbname', 'owncloud'); - $this->DBTABLEPREFIX = $config->getValue('dbtableprefix', 'oc_'); + $this->DBNAME = $config->getSystemValue('dbname', 'owncloud'); + $this->DBTABLEPREFIX = $config->getSystemValue('dbtableprefix', 'oc_'); } /** diff --git a/lib/private/db/oracleconnection.php b/lib/private/db/oracleconnection.php index e2fc4644f47..4cec7bc4ae4 100644 --- a/lib/private/db/oracleconnection.php +++ b/lib/private/db/oracleconnection.php @@ -20,7 +20,7 @@ class OracleConnection extends Connection { return $return; } - /* + /** * {@inheritDoc} */ public function insert($tableName, array $data, array $types = array()) { @@ -29,7 +29,7 @@ class OracleConnection extends Connection { return parent::insert($tableName, $data, $types); } - /* + /** * {@inheritDoc} */ public function update($tableName, array $data, array $identifier, array $types = array()) { @@ -39,11 +39,11 @@ class OracleConnection extends Connection { return parent::update($tableName, $data, $identifier, $types); } - /* + /** * {@inheritDoc} */ - public function delete($tableName, array $identifier) { - $tableName = $this->quoteIdentifier($tableName); + public function delete($tableExpression, array $identifier, array $types = array()) { + $tableName = $this->quoteIdentifier($tableExpression); $identifier = $this->quoteKeys($identifier); return parent::delete($tableName, $identifier); } diff --git a/lib/private/db/sqlitesessioninit.php b/lib/private/db/sqlitesessioninit.php index 7e1166be95b..1fff22b883a 100644 --- a/lib/private/db/sqlitesessioninit.php +++ b/lib/private/db/sqlitesessioninit.php @@ -19,12 +19,19 @@ class SQLiteSessionInit implements EventSubscriber { private $caseSensitiveLike; /** + * @var string + */ + private $journalMode; + + /** * Configure case sensitive like for each connection * * @param bool $caseSensitiveLike + * @param string $journalMode */ - public function __construct($caseSensitiveLike = true) { + public function __construct($caseSensitiveLike, $journalMode) { $this->caseSensitiveLike = $caseSensitiveLike; + $this->journalMode = $journalMode; } /** @@ -34,6 +41,7 @@ class SQLiteSessionInit implements EventSubscriber { public function postConnect(ConnectionEventArgs $args) { $sensitive = ($this->caseSensitiveLike) ? 'true' : 'false'; $args->getConnection()->executeUpdate('PRAGMA case_sensitive_like = ' . $sensitive); + $args->getConnection()->executeUpdate('PRAGMA journal_mode = ' . $this->journalMode); } public function getSubscribedEvents() { diff --git a/lib/private/db/statementwrapper.php b/lib/private/db/statementwrapper.php index ad63de98e93..a85c0167e0b 100644 --- a/lib/private/db/statementwrapper.php +++ b/lib/private/db/statementwrapper.php @@ -64,7 +64,7 @@ class OC_DB_StatementWrapper { } else { $result = $this->statement->execute(); } - + if ($result === false) { return false; } @@ -158,14 +158,16 @@ class OC_DB_StatementWrapper { OC_Log::write('core', $entry, OC_Log::FATAL); OC_User::setUserId(null); - // send http status 503 - header('HTTP/1.1 503 Service Temporarily Unavailable'); - header('Status: 503 Service Temporarily Unavailable'); - OC_Template::printErrorPage('Failed to connect to database'); - die ($entry); + $l = \OC::$server->getL10N('lib'); + throw new \OC\HintException( + $l->t('Database Error'), + $l->t('Please contact your system administrator.'), + 0, + $e + ); } } - + /** * provide an alias for fetch * diff --git a/lib/private/files/cache/cache.php b/lib/private/files/cache/cache.php index 7ea00325a10..2c12f834518 100644 --- a/lib/private/files/cache/cache.php +++ b/lib/private/files/cache/cache.php @@ -71,7 +71,7 @@ class Cache { if (empty(self::$mimetypeIds)) { $this->loadMimetypes(); } - + if (!isset(self::$mimetypeIds[$mime])) { try{ $result = \OC_DB::executeAudited('INSERT INTO `*PREFIX*mimetypes`(`mimetype`) VALUES(?)', array($mime)); @@ -82,8 +82,8 @@ class Cache { \OC_Log::write('core', 'Exception during mimetype insertion: ' . $e->getmessage(), \OC_Log::DEBUG); return -1; } - } - + } + return self::$mimetypeIds[$mime]; } @@ -371,7 +371,7 @@ class Cache { $this->remove($child['path']); } } - + $sql = 'DELETE FROM `*PREFIX*filecache` WHERE `fileid` = ?'; \OC_DB::executeAudited($sql, array($entry['fileid'])); } diff --git a/lib/private/files/cache/updater.php b/lib/private/files/cache/updater.php index c303ff24b1f..31a4a7c21e7 100644 --- a/lib/private/files/cache/updater.php +++ b/lib/private/files/cache/updater.php @@ -30,6 +30,11 @@ class Updater { $this->propagator = new ChangePropagator($view); } + public function propagate($path, $time = null) { + $this->propagator->addChange($path); + $this->propagator->propagateChanges($time); + } + /** * Update the cache for $path * diff --git a/lib/private/files/fileinfo.php b/lib/private/files/fileinfo.php index 8457a2d160f..8bab51f0737 100644 --- a/lib/private/files/fileinfo.php +++ b/lib/private/files/fileinfo.php @@ -122,7 +122,7 @@ class FileInfo implements \OCP\Files\FileInfo, \ArrayAccess { * @return int */ public function getSize() { - return $this->data['size']; + return isset($this->data['size']) ? $this->data['size'] : 0; } /** @@ -173,14 +173,14 @@ class FileInfo implements \OCP\Files\FileInfo, \ArrayAccess { * @return bool */ public function isReadable() { - return $this->checkPermissions(\OCP\PERMISSION_READ); + return $this->checkPermissions(\OCP\Constants::PERMISSION_READ); } /** * @return bool */ public function isUpdateable() { - return $this->checkPermissions(\OCP\PERMISSION_UPDATE); + return $this->checkPermissions(\OCP\Constants::PERMISSION_UPDATE); } /** @@ -189,21 +189,21 @@ class FileInfo implements \OCP\Files\FileInfo, \ArrayAccess { * @return bool */ public function isCreatable() { - return $this->checkPermissions(\OCP\PERMISSION_CREATE); + return $this->checkPermissions(\OCP\Constants::PERMISSION_CREATE); } /** * @return bool */ public function isDeletable() { - return $this->checkPermissions(\OCP\PERMISSION_DELETE); + return $this->checkPermissions(\OCP\Constants::PERMISSION_DELETE); } /** * @return bool */ public function isShareable() { - return $this->checkPermissions(\OCP\PERMISSION_SHARE); + return $this->checkPermissions(\OCP\Constants::PERMISSION_SHARE); } /** diff --git a/lib/private/files/filesystem.php b/lib/private/files/filesystem.php index c7dc99c55cb..6c8fa8c90ba 100644 --- a/lib/private/files/filesystem.php +++ b/lib/private/files/filesystem.php @@ -698,13 +698,22 @@ class Filesystem { * @param bool $stripTrailingSlash * @return string */ - public static function normalizePath($path, $stripTrailingSlash = true) { + public static function normalizePath($path, $stripTrailingSlash = true, $isAbsolutePath = false) { if ($path == '') { return '/'; } + //no windows style slashes $path = str_replace('\\', '/', $path); + // When normalizing an absolute path, we need to ensure that the drive-letter + // is still at the beginning on windows + $windows_drive_letter = ''; + if ($isAbsolutePath && \OC_Util::runningOnWindows() && preg_match('#^([a-zA-Z])$#', $path[0]) && $path[1] == ':' && $path[2] == '/') { + $windows_drive_letter = substr($path, 0, 2); + $path = substr($path, 2); + } + //add leading slash if ($path[0] !== '/') { $path = '/' . $path; @@ -733,7 +742,7 @@ class Filesystem { //normalize unicode if possible $path = \OC_Util::normalizeUnicode($path); - return $path; + return $windows_drive_letter . $path; } /** diff --git a/lib/private/files/node/file.php b/lib/private/files/node/file.php index 75d5e0166b6..81e251c20b8 100644 --- a/lib/private/files/node/file.php +++ b/lib/private/files/node/file.php @@ -16,7 +16,7 @@ class File extends Node implements \OCP\Files\File { * @throws \OCP\Files\NotPermittedException */ public function getContent() { - if ($this->checkPermissions(\OCP\PERMISSION_READ)) { + if ($this->checkPermissions(\OCP\Constants::PERMISSION_READ)) { /** * @var \OC\Files\Storage\Storage $storage; */ @@ -31,7 +31,7 @@ class File extends Node implements \OCP\Files\File { * @throws \OCP\Files\NotPermittedException */ public function putContent($data) { - if ($this->checkPermissions(\OCP\PERMISSION_UPDATE)) { + if ($this->checkPermissions(\OCP\Constants::PERMISSION_UPDATE)) { $this->sendHooks(array('preWrite')); $this->view->file_put_contents($this->path, $data); $this->sendHooks(array('postWrite')); @@ -55,7 +55,7 @@ class File extends Node implements \OCP\Files\File { public function fopen($mode) { $preHooks = array(); $postHooks = array(); - $requiredPermissions = \OCP\PERMISSION_READ; + $requiredPermissions = \OCP\Constants::PERMISSION_READ; switch ($mode) { case 'r+': case 'rb+': @@ -73,7 +73,7 @@ class File extends Node implements \OCP\Files\File { case 'ab': $preHooks[] = 'preWrite'; $postHooks[] = 'postWrite'; - $requiredPermissions |= \OCP\PERMISSION_UPDATE; + $requiredPermissions |= \OCP\Constants::PERMISSION_UPDATE; break; } @@ -88,7 +88,7 @@ class File extends Node implements \OCP\Files\File { } public function delete() { - if ($this->checkPermissions(\OCP\PERMISSION_DELETE)) { + if ($this->checkPermissions(\OCP\Constants::PERMISSION_DELETE)) { $this->sendHooks(array('preDelete')); $this->view->unlink($this->path); $nonExisting = new NonExistingFile($this->root, $this->view, $this->path); diff --git a/lib/private/files/node/folder.php b/lib/private/files/node/folder.php index 8c7acc339ae..83e20871528 100644 --- a/lib/private/files/node/folder.php +++ b/lib/private/files/node/folder.php @@ -180,7 +180,7 @@ class Folder extends Node implements \OCP\Files\Folder { * @throws \OCP\Files\NotPermittedException */ public function newFolder($path) { - if ($this->checkPermissions(\OCP\PERMISSION_CREATE)) { + if ($this->checkPermissions(\OCP\Constants::PERMISSION_CREATE)) { $fullPath = $this->getFullPath($path); $nonExisting = new NonExistingFolder($this->root, $this->view, $fullPath); $this->root->emit('\OC\Files', 'preWrite', array($nonExisting)); @@ -201,7 +201,7 @@ class Folder extends Node implements \OCP\Files\Folder { * @throws \OCP\Files\NotPermittedException */ public function newFile($path) { - if ($this->checkPermissions(\OCP\PERMISSION_CREATE)) { + if ($this->checkPermissions(\OCP\Constants::PERMISSION_CREATE)) { $fullPath = $this->getFullPath($path); $nonExisting = new NonExistingFile($this->root, $this->view, $fullPath); $this->root->emit('\OC\Files', 'preWrite', array($nonExisting)); @@ -325,11 +325,11 @@ class Folder extends Node implements \OCP\Files\Folder { * @return bool */ public function isCreatable() { - return $this->checkPermissions(\OCP\PERMISSION_CREATE); + return $this->checkPermissions(\OCP\Constants::PERMISSION_CREATE); } public function delete() { - if ($this->checkPermissions(\OCP\PERMISSION_DELETE)) { + if ($this->checkPermissions(\OCP\Constants::PERMISSION_DELETE)) { $this->sendHooks(array('preDelete')); $this->view->rmdir($this->path); $nonExisting = new NonExistingFolder($this->root, $this->view, $this->path); diff --git a/lib/private/files/node/node.php b/lib/private/files/node/node.php index bc075911749..c52f5bbd54f 100644 --- a/lib/private/files/node/node.php +++ b/lib/private/files/node/node.php @@ -81,7 +81,7 @@ class Node implements \OCP\Files\Node { * @throws \OCP\Files\NotPermittedException */ public function touch($mtime = null) { - if ($this->checkPermissions(\OCP\PERMISSION_UPDATE)) { + if ($this->checkPermissions(\OCP\Constants::PERMISSION_UPDATE)) { $this->sendHooks(array('preTouch')); $this->view->touch($this->path, $mtime); $this->sendHooks(array('postTouch')); @@ -163,28 +163,28 @@ class Node implements \OCP\Files\Node { * @return bool */ public function isReadable() { - return $this->checkPermissions(\OCP\PERMISSION_READ); + return $this->checkPermissions(\OCP\Constants::PERMISSION_READ); } /** * @return bool */ public function isUpdateable() { - return $this->checkPermissions(\OCP\PERMISSION_UPDATE); + return $this->checkPermissions(\OCP\Constants::PERMISSION_UPDATE); } /** * @return bool */ public function isDeletable() { - return $this->checkPermissions(\OCP\PERMISSION_DELETE); + return $this->checkPermissions(\OCP\Constants::PERMISSION_DELETE); } /** * @return bool */ public function isShareable() { - return $this->checkPermissions(\OCP\PERMISSION_SHARE); + return $this->checkPermissions(\OCP\Constants::PERMISSION_SHARE); } /** diff --git a/lib/private/files/node/root.php b/lib/private/files/node/root.php index 18e7a6b681a..1e8387dc5cb 100644 --- a/lib/private/files/node/root.php +++ b/lib/private/files/node/root.php @@ -262,7 +262,7 @@ class Root extends Folder implements Emitter { * @return int */ public function getPermissions() { - return \OCP\PERMISSION_CREATE; + return \OCP\Constants::PERMISSION_CREATE; } /** diff --git a/lib/private/files/objectstore/objectstorestorage.php b/lib/private/files/objectstore/objectstorestorage.php index ae8bff52896..b0095ad94bb 100644 --- a/lib/private/files/objectstore/objectstorestorage.php +++ b/lib/private/files/objectstore/objectstorestorage.php @@ -72,7 +72,7 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common { 'size' => 0, 'mtime' => $mTime, 'storage_mtime' => $mTime, - 'permissions' => \OCP\PERMISSION_ALL, + 'permissions' => \OCP\Constants::PERMISSION_ALL, ); if ($dirName === '' && !$parentExists) { @@ -332,7 +332,7 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common { 'size' => 0, 'mtime' => $mtime, 'storage_mtime' => $mtime, - 'permissions' => \OCP\PERMISSION_ALL, + 'permissions' => \OCP\Constants::PERMISSION_ALL, ); $fileId = $this->getCache()->put($path, $stat); try { @@ -357,7 +357,7 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common { if (empty($stat)) { // create new file $stat = array( - 'permissions' => \OCP\PERMISSION_ALL, + 'permissions' => \OCP\Constants::PERMISSION_ALL, ); } // update stat with new data diff --git a/lib/private/files/storage/common.php b/lib/private/files/storage/common.php index 518d3ec400c..d76c6aa031b 100644 --- a/lib/private/files/storage/common.php +++ b/lib/private/files/storage/common.php @@ -113,19 +113,19 @@ abstract class Common implements \OC\Files\Storage\Storage { public function getPermissions($path) { $permissions = 0; if ($this->isCreatable($path)) { - $permissions |= \OCP\PERMISSION_CREATE; + $permissions |= \OCP\Constants::PERMISSION_CREATE; } if ($this->isReadable($path)) { - $permissions |= \OCP\PERMISSION_READ; + $permissions |= \OCP\Constants::PERMISSION_READ; } if ($this->isUpdatable($path)) { - $permissions |= \OCP\PERMISSION_UPDATE; + $permissions |= \OCP\Constants::PERMISSION_UPDATE; } if ($this->isDeletable($path)) { - $permissions |= \OCP\PERMISSION_DELETE; + $permissions |= \OCP\Constants::PERMISSION_DELETE; } if ($this->isSharable($path)) { - $permissions |= \OCP\PERMISSION_SHARE; + $permissions |= \OCP\Constants::PERMISSION_SHARE; } return $permissions; } diff --git a/lib/private/files/storage/dav.php b/lib/private/files/storage/dav.php index 7f53704e94f..a2832bce009 100644 --- a/lib/private/files/storage/dav.php +++ b/lib/private/files/storage/dav.php @@ -416,30 +416,31 @@ class DAV extends \OC\Files\Storage\Common { } public function isUpdatable($path) { - return (bool)($this->getPermissions($path) & \OCP\PERMISSION_UPDATE); + return (bool)($this->getPermissions($path) & \OCP\Constants::PERMISSION_UPDATE); } public function isCreatable($path) { - return (bool)($this->getPermissions($path) & \OCP\PERMISSION_CREATE); + return (bool)($this->getPermissions($path) & \OCP\Constants::PERMISSION_CREATE); } public function isSharable($path) { - return (bool)($this->getPermissions($path) & \OCP\PERMISSION_SHARE); + return (bool)($this->getPermissions($path) & \OCP\Constants::PERMISSION_SHARE); } public function isDeletable($path) { - return (bool)($this->getPermissions($path) & \OCP\PERMISSION_DELETE); + return (bool)($this->getPermissions($path) & \OCP\Constants::PERMISSION_DELETE); } public function getPermissions($path) { $this->init(); + $path = $this->cleanPath($path); $response = $this->client->propfind($this->encodePath($path), array('{http://owncloud.org/ns}permissions')); if (isset($response['{http://owncloud.org/ns}permissions'])) { return $this->parsePermissions($response['{http://owncloud.org/ns}permissions']); } else if ($this->is_dir($path)) { - return \OCP\PERMISSION_ALL; + return \OCP\Constants::PERMISSION_ALL; } else if ($this->file_exists($path)) { - return \OCP\PERMISSION_ALL - \OCP\PERMISSION_CREATE; + return \OCP\Constants::PERMISSION_ALL - \OCP\Constants::PERMISSION_CREATE; } else { return 0; } @@ -450,19 +451,19 @@ class DAV extends \OC\Files\Storage\Common { * @return int */ protected function parsePermissions($permissionsString) { - $permissions = \OCP\PERMISSION_READ; + $permissions = \OCP\Constants::PERMISSION_READ; if (strpos($permissionsString, 'R') !== false) { - $permissions |= \OCP\PERMISSION_SHARE; + $permissions |= \OCP\Constants::PERMISSION_SHARE; } if (strpos($permissionsString, 'D') !== false) { - $permissions |= \OCP\PERMISSION_DELETE; + $permissions |= \OCP\Constants::PERMISSION_DELETE; } if (strpos($permissionsString, 'W') !== false) { - $permissions |= \OCP\PERMISSION_UPDATE; + $permissions |= \OCP\Constants::PERMISSION_UPDATE; } if (strpos($permissionsString, 'CK') !== false) { - $permissions |= \OCP\PERMISSION_CREATE; - $permissions |= \OCP\PERMISSION_UPDATE; + $permissions |= \OCP\Constants::PERMISSION_CREATE; + $permissions |= \OCP\Constants::PERMISSION_UPDATE; } return $permissions; } @@ -477,6 +478,7 @@ class DAV extends \OC\Files\Storage\Common { */ public function hasUpdated($path, $time) { $this->init(); + $path = $this->cleanPath($path); try { $response = $this->client->propfind($this->encodePath($path), array( '{DAV:}getlastmodified', diff --git a/lib/private/files/storage/mappedlocal.php b/lib/private/files/storage/mappedlocal.php index 0a21d2938b7..c232c0298b1 100644 --- a/lib/private/files/storage/mappedlocal.php +++ b/lib/private/files/storage/mappedlocal.php @@ -24,9 +24,6 @@ class MappedLocal extends \OC\Files\Storage\Common { } public function __destruct() { - if (defined('PHPUNIT_RUN')) { - $this->mapper->removePath($this->datadir, true, true); - } } public function getId() { diff --git a/lib/private/files/view.php b/lib/private/files/view.php index 5f5f29ded4f..331ab9ba6cd 100644 --- a/lib/private/files/view.php +++ b/lib/private/files/view.php @@ -676,10 +676,6 @@ class View { $this->mkdir($filePath); } - if (!$tmpFile) { - debug_print_backtrace(); - } - $source = fopen($tmpFile, 'r'); if ($source) { $this->file_put_contents($path, $source); @@ -902,7 +898,8 @@ class View { $scanner = $storage->getScanner($internalPath); $scanner->scan($internalPath, Cache\Scanner::SCAN_SHALLOW); $data = $cache->get($internalPath); - } else if ($watcher->checkUpdate($internalPath, $data)) { + } else if (!Cache\Scanner::isPartialFile($internalPath) && $watcher->checkUpdate($internalPath, $data)) { + $this->updater->propagate($path); $data = $cache->get($internalPath); } @@ -936,7 +933,7 @@ class View { } if ($mount instanceof MoveableMount && $internalPath === '') { - $data['permissions'] |= \OCP\PERMISSION_DELETE | \OCP\PERMISSION_UPDATE; + $data['permissions'] |= \OCP\Constants::PERMISSION_DELETE | \OCP\Constants::PERMISSION_UPDATE; } $data = \OC_FileProxy::runPostProxies('getFileInfo', $path, $data); @@ -974,6 +971,7 @@ class View { $scanner->scan($internalPath, Cache\Scanner::SCAN_SHALLOW); $data = $cache->get($internalPath); } else if ($watcher->checkUpdate($internalPath, $data)) { + $this->updater->propagate($path); $data = $cache->get($internalPath); } @@ -990,7 +988,7 @@ class View { } // if sharing was disabled for the user we remove the share permissions if (\OCP\Util::isSharingDisabledForUser()) { - $content['permissions'] = $content['permissions'] & ~\OCP\PERMISSION_SHARE; + $content['permissions'] = $content['permissions'] & ~\OCP\Constants::PERMISSION_SHARE; } $files[] = new FileInfo($path . '/' . $content['name'], $storage, $content['path'], $content); } @@ -1027,9 +1025,9 @@ class View { // do not allow renaming/deleting the mount point if they are not shared files/folders // for shared files/folders we use the permissions given by the owner if ($mount instanceof MoveableMount) { - $rootEntry['permissions'] = $permissions | \OCP\PERMISSION_UPDATE | \OCP\PERMISSION_DELETE; + $rootEntry['permissions'] = $permissions | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE; } else { - $rootEntry['permissions'] = $permissions & (\OCP\PERMISSION_ALL - (\OCP\PERMISSION_UPDATE | \OCP\PERMISSION_DELETE)); + $rootEntry['permissions'] = $permissions & (\OCP\Constants::PERMISSION_ALL - (\OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE)); } //remove any existing entry with the same name @@ -1043,7 +1041,7 @@ class View { // if sharing was disabled for the user we remove the share permissions if (\OCP\Util::isSharingDisabledForUser()) { - $content['permissions'] = $content['permissions'] & ~\OCP\PERMISSION_SHARE; + $content['permissions'] = $content['permissions'] & ~\OCP\Constants::PERMISSION_SHARE; } $files[] = new FileInfo($path . '/' . $rootEntry['name'], $subStorage, '', $rootEntry); diff --git a/lib/private/group/database.php b/lib/private/group/database.php index 8aebefabd27..6bad55c8d5e 100644 --- a/lib/private/group/database.php +++ b/lib/private/group/database.php @@ -84,6 +84,10 @@ class OC_Group_Database extends OC_Group_Backend { $stmt = OC_DB::prepare( "DELETE FROM `*PREFIX*group_user` WHERE `gid` = ?" ); $stmt->execute( array( $gid )); + // Delete the group-groupadmin relation + $stmt = OC_DB::prepare( "DELETE FROM `*PREFIX*group_admin` WHERE `gid` = ?" ); + $stmt->execute( array( $gid )); + return true; } diff --git a/lib/private/helper.php b/lib/private/helper.php index 5b1d31bfc59..d43eefcdc52 100644 --- a/lib/private/helper.php +++ b/lib/private/helper.php @@ -58,12 +58,11 @@ class OC_Helper { } /** - * @param $key + * @param string $key * @return string url to the online documentation */ public static function linkToDocs($key) { - $theme = new OC_Defaults(); - return $theme->buildDocLinkToKey($key); + return OC::$server->getURLGenerator()->linkToDocs($key); } /** @@ -873,6 +872,23 @@ class OC_Helper { } /** + * Try to find a program + * Note: currently windows is not supported + * + * @param string $program + * @return null|string + */ + public static function findBinaryPath($program) { + if (!\OC_Util::runningOnWindows() && self::is_function_enabled('exec')) { + exec('command -v ' . escapeshellarg($program) . ' 2> /dev/null', $output, $returnCode); + if ($returnCode === 0 && count($output) > 0) { + return escapeshellcmd($output[0]); + } + } + return null; + } + + /** * Calculate the disc space for the given path * * @param string $path diff --git a/lib/private/installer.php b/lib/private/installer.php index cd1d8ce392f..f43969691c7 100644 --- a/lib/private/installer.php +++ b/lib/private/installer.php @@ -558,8 +558,8 @@ class OC_Installer{ // is the code checker enabled? if(OC_Config::getValue('appcodechecker', true)) { // check if grep is installed - $grep = exec('command -v grep'); - if($grep=='') { + $grep = \OC_Helper::findBinaryPath('grep'); + if (!$grep) { OC_Log::write('core', 'grep not installed. So checking the code of the app "'.$appname.'" was not possible', OC_Log::ERROR); diff --git a/lib/private/l10n.php b/lib/private/l10n.php index 6ec4e967c7f..afa066c30ef 100644 --- a/lib/private/l10n.php +++ b/lib/private/l10n.php @@ -7,19 +7,9 @@ * @copyright 2012 Frank Karlitschek frank@owncloud.org * @copyright 2013 Jakob Sack * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU Affero General Public - * License along with this library. If not, see <http://www.gnu.org/licenses/>. - * + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. */ /** @@ -89,7 +79,8 @@ class OC_L10N implements \OCP\IL10N { } /** - * @param string $transFile + * @param $transFile + * @param bool $mergeTranslations * @return bool */ public function load($transFile, $mergeTranslations = false) { @@ -141,8 +132,8 @@ class OC_L10N implements \OCP\IL10N { // load the translations file if($this->load($transFile)) { //merge with translations from theme - $theme = OC_Config::getValue( "theme" ); - if (!is_null($theme)) { + $theme = \OC::$server->getConfig()->getSystemValue('theme'); + if (!empty($theme)) { $transFile = OC::$SERVERROOT.'/themes/'.$theme.substr($transFile, strlen(OC::$SERVERROOT)); if (file_exists($transFile)) { $this->load($transFile, true); @@ -285,7 +276,8 @@ class OC_L10N implements \OCP\IL10N { * Localization * @param string $type Type of localization * @param array|int|string $data parameters for this localization - * @return String or false + * @param array $options + * @return string|false * * Returns the localized data. * @@ -393,8 +385,8 @@ class OC_L10N implements \OCP\IL10N { return self::$language; } - if(OC_User::getUser() && OC_Preferences::getValue(OC_User::getUser(), 'core', 'lang')) { - $lang = OC_Preferences::getValue(OC_User::getUser(), 'core', 'lang'); + if(OC_User::getUser() && \OC::$server->getConfig()->getUserValue(OC_User::getUser(), 'core', 'lang')) { + $lang = \OC::$server->getConfig()->getUserValue(OC_User::getUser(), 'core', 'lang'); self::$language = $lang; if(is_array($app)) { $available = $app; @@ -407,7 +399,7 @@ class OC_L10N implements \OCP\IL10N { } } - $default_language = OC_Config::getValue('default_language', false); + $default_language = \OC::$server->getConfig()->getSystemValue('default_language', false); if($default_language !== false) { return $default_language; @@ -457,17 +449,17 @@ class OC_L10N implements \OCP\IL10N { */ protected static function findI18nDir($app) { // find the i18n dir - $i18ndir = OC::$SERVERROOT.'/core/l10n/'; + $i18nDir = OC::$SERVERROOT.'/core/l10n/'; if($app != '') { // Check if the app is in the app folder if(file_exists(OC_App::getAppPath($app).'/l10n/')) { - $i18ndir = OC_App::getAppPath($app).'/l10n/'; + $i18nDir = OC_App::getAppPath($app).'/l10n/'; } else{ - $i18ndir = OC::$SERVERROOT.'/'.$app.'/l10n/'; + $i18nDir = OC::$SERVERROOT.'/'.$app.'/l10n/'; } } - return $i18ndir; + return $i18nDir; } /** @@ -496,7 +488,7 @@ class OC_L10N implements \OCP\IL10N { * @return bool */ public static function languageExists($app, $lang) { - if ($lang == 'en') {//english is always available + if ($lang === 'en') {//english is always available return true; } $dir = self::findI18nDir($app); diff --git a/lib/private/legacy/config.php b/lib/private/legacy/config.php index 13ff0dbe040..7b711204256 100644 --- a/lib/private/legacy/config.php +++ b/lib/private/legacy/config.php @@ -23,14 +23,6 @@ class OC_Config { public static $object; /** - * Returns the config instance - * @return \OC\Config - */ - public static function getObject() { - return self::$object; - } - - /** * Lists all available config keys * @return array an array of key names * diff --git a/lib/private/migrate.php b/lib/private/migrate.php deleted file mode 100644 index 8351155aa55..00000000000 --- a/lib/private/migrate.php +++ /dev/null @@ -1,626 +0,0 @@ -<?php -/** - * ownCloud - * - * @author Tom Needham - * @copyright 2012 Tom Needham tom@owncloud.com - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU Affero General Public - * License along with this library. If not, see <http://www.gnu.org/licenses/>. - * - */ - - -/** - * provides an interface to migrate users and whole ownclouds - */ -class OC_Migrate{ - - - // Array of OC_Migration_Provider objects - static private $providers=array(); - // User id of the user to import/export - static private $uid=false; - // Holds the ZipArchive object - static private $zip=false; - // Stores the type of export - static private $exporttype=false; - // Holds the db object - static private $migration_database=false; - // Path to the sqlite db - static private $dbpath=false; - // Holds the path to the zip file - static private $zippath=false; - // Holds the OC_Migration_Content object - static private $content=false; - - /** - * register a new migration provider - * @param OC_Migration_Provider $provider - */ - public static function registerProvider($provider) { - self::$providers[]=$provider; - } - - /** - * finds and loads the providers - */ - static private function findProviders() { - // Find the providers - $apps = OC_App::getAllApps(); - - foreach($apps as $app) { - $path = OC_App::getAppPath($app) . '/appinfo/migrate.php'; - if( file_exists( $path ) ) { - include_once $path; - } - } - } - - /** - * exports a user, or owncloud instance - * @param string $uid user id of user to export if export type is user, defaults to current - * @param string $type type of export, defualts to user - * @param string $path path to zip output folder - * @return string on error, path to zip on success - */ - public static function export( $uid=null, $type='user', $path=null ) { - $datadir = OC_Config::getValue( 'datadirectory' ); - // Validate export type - $types = array( 'user', 'instance', 'system', 'userfiles' ); - if( !in_array( $type, $types ) ) { - OC_Log::write( 'migration', 'Invalid export type', OC_Log::ERROR ); - return json_encode( array( 'success' => false ) ); - } - self::$exporttype = $type; - // Userid? - if( self::$exporttype == 'user' ) { - // Check user exists - self::$uid = is_null($uid) ? OC_User::getUser() : $uid; - if(!OC_User::userExists(self::$uid)) { - return json_encode( array( 'success' => false) ); - } - } - // Calculate zipname - if( self::$exporttype == 'user' ) { - $zipname = 'oc_export_' . self::$uid . '_' . date("y-m-d_H-i-s") . '.zip'; - } else { - $zipname = 'oc_export_' . self::$exporttype . '_' . date("y-m-d_H-i-s") . '.zip'; - } - // Calculate path - if( self::$exporttype == 'user' ) { - self::$zippath = $datadir . '/' . self::$uid . '/' . $zipname; - } else { - if( !is_null( $path ) ) { - // Validate custom path - if( !file_exists( $path ) || !is_writeable( $path ) ) { - OC_Log::write( 'migration', 'Path supplied is invalid.', OC_Log::ERROR ); - return json_encode( array( 'success' => false ) ); - } - self::$zippath = $path . $zipname; - } else { - // Default path - self::$zippath = get_temp_dir() . '/' . $zipname; - } - } - // Create the zip object - if( !self::createZip() ) { - return json_encode( array( 'success' => false ) ); - } - // Do the export - self::findProviders(); - $exportdata = array(); - switch( self::$exporttype ) { - case 'user': - // Connect to the db - self::$dbpath = $datadir . '/' . self::$uid . '/migration.db'; - if( !self::connectDB() ) { - return json_encode( array( 'success' => false ) ); - } - self::$content = new OC_Migration_Content( self::$zip, self::$migration_database ); - // Export the app info - $exportdata = self::exportAppData(); - // Add the data dir to the zip - self::$content->addDir(OC_User::getHome(self::$uid), true, '/' ); - break; - case 'instance': - self::$content = new OC_Migration_Content( self::$zip ); - // Creates a zip that is compatable with the import function - $dbfile = tempnam( get_temp_dir(), "owncloud_export_data_" ); - OC_DB::getDbStructure( $dbfile, 'MDB2_SCHEMA_DUMP_ALL'); - - // Now add in *dbname* and *dbprefix* - $dbexport = file_get_contents( $dbfile ); - $dbnamestring = "<database>\n\n <name>" . OC_Config::getValue( "dbname", "owncloud" ); - $dbtableprefixstring = "<table>\n\n <name>" . OC_Config::getValue( "dbtableprefix", "oc_" ); - $dbexport = str_replace( $dbnamestring, "<database>\n\n <name>*dbname*", $dbexport ); - $dbexport = str_replace( $dbtableprefixstring, "<table>\n\n <name>*dbprefix*", $dbexport ); - // Add the export to the zip - self::$content->addFromString( $dbexport, "dbexport.xml" ); - // Add user data - foreach(OC_User::getUsers() as $user) { - self::$content->addDir(OC_User::getHome($user), true, "/userdata/" ); - } - break; - case 'userfiles': - self::$content = new OC_Migration_Content( self::$zip ); - // Creates a zip with all of the users files - foreach(OC_User::getUsers() as $user) { - self::$content->addDir(OC_User::getHome($user), true, "/" ); - } - break; - case 'system': - self::$content = new OC_Migration_Content( self::$zip ); - // Creates a zip with the owncloud system files - self::$content->addDir( OC::$SERVERROOT . '/', false, '/'); - foreach (array( - ".git", - "3rdparty", - "apps", - "core", - "files", - "l10n", - "lib", - "ocs", - "search", - "settings", - "tests" - ) as $dir) { - self::$content->addDir( OC::$SERVERROOT . '/' . $dir, true, "/"); - } - break; - } - if( !$info = self::getExportInfo( $exportdata ) ) { - return json_encode( array( 'success' => false ) ); - } - // Add the export info json to the export zip - self::$content->addFromString( $info, 'export_info.json' ); - if( !self::$content->finish() ) { - return json_encode( array( 'success' => false ) ); - } - return json_encode( array( 'success' => true, 'data' => self::$zippath ) ); - } - - /** - * imports a user, or owncloud instance - * @param string $path path to zip - * @param string $type type of import (user or instance) - * @param string|null|int $uid userid of new user - * @return string - */ - public static function import( $path, $type='user', $uid=null ) { - - $datadir = OC_Config::getValue( 'datadirectory' ); - // Extract the zip - if( !$extractpath = self::extractZip( $path ) ) { - return json_encode( array( 'success' => false ) ); - } - // Get export_info.json - $scan = scandir( $extractpath ); - // Check for export_info.json - if( !in_array( 'export_info.json', $scan ) ) { - OC_Log::write( 'migration', 'Invalid import file, export_info.json not found', OC_Log::ERROR ); - return json_encode( array( 'success' => false ) ); - } - $json = json_decode( file_get_contents( $extractpath . 'export_info.json' ) ); - if( $json->exporttype != $type ) { - OC_Log::write( 'migration', 'Invalid import file', OC_Log::ERROR ); - return json_encode( array( 'success' => false ) ); - } - self::$exporttype = $type; - - $currentuser = OC_User::getUser(); - - // Have we got a user if type is user - if( self::$exporttype == 'user' ) { - self::$uid = !is_null($uid) ? $uid : $currentuser; - } - - // We need to be an admin if we are not importing our own data - if(($type == 'user' && self::$uid != $currentuser) || $type != 'user' ) { - if( !OC_User::isAdminUser($currentuser)) { - // Naughty. - OC_Log::write( 'migration', 'Import not permitted.', OC_Log::ERROR ); - return json_encode( array( 'success' => false ) ); - } - } - - // Handle export types - switch( self::$exporttype ) { - case 'user': - // Check user availability - if( !OC_User::userExists( self::$uid ) ) { - OC_Log::write( 'migration', 'User doesn\'t exist', OC_Log::ERROR ); - return json_encode( array( 'success' => false ) ); - } - - // Check if the username is valid - if( preg_match( '/[^a-zA-Z0-9 _\.@\-]/', $json->exporteduser )) { - OC_Log::write( 'migration', 'Username is not valid', OC_Log::ERROR ); - return json_encode( array( 'success' => false ) ); - } - - // Copy data - $userfolder = $extractpath . $json->exporteduser; - $newuserfolder = $datadir . '/' . self::$uid; - foreach(scandir($userfolder) as $file){ - if($file !== '.' && $file !== '..' && is_dir($userfolder.'/'.$file)) { - $file = str_replace(array('/', '\\'), '', $file); - - // Then copy the folder over - OC_Helper::copyr($userfolder.'/'.$file, $newuserfolder.'/'.$file); - } - } - // Import user app data - if(file_exists($extractpath . $json->exporteduser . '/migration.db')) { - if( !$appsimported = self::importAppData( $extractpath . $json->exporteduser . '/migration.db', - $json, - self::$uid ) ) { - return json_encode( array( 'success' => false ) ); - } - } - // All done! - if( !self::unlink_r( $extractpath ) ) { - OC_Log::write( 'migration', 'Failed to delete the extracted zip', OC_Log::ERROR ); - } - return json_encode( array( 'success' => true, 'data' => $appsimported ) ); - break; - case 'instance': - /* - * EXPERIMENTAL - // Check for new data dir and dbexport before doing anything - // TODO - - // Delete current data folder. - OC_Log::write( 'migration', "Deleting current data dir", OC_Log::INFO ); - if( !self::unlink_r( $datadir, false ) ) { - OC_Log::write( 'migration', 'Failed to delete the current data dir', OC_Log::ERROR ); - return json_encode( array( 'success' => false ) ); - } - - // Copy over data - if( !self::copy_r( $extractpath . 'userdata', $datadir ) ) { - OC_Log::write( 'migration', 'Failed to copy over data directory', OC_Log::ERROR ); - return json_encode( array( 'success' => false ) ); - } - - // Import the db - if( !OC_DB::replaceDB( $extractpath . 'dbexport.xml' ) ) { - return json_encode( array( 'success' => false ) ); - } - // Done - return json_encode( array( 'success' => true ) ); - */ - break; - } - - } - - /** - * recursively deletes a directory - * @param string $dir path of dir to delete - * @param bool $deleteRootToo delete the root directory - * @return bool - */ - private static function unlink_r( $dir, $deleteRootToo=true ) { - if( !$dh = @opendir( $dir ) ) { - return false; - } - while (false !== ($obj = readdir($dh))) { - if($obj == '.' || $obj == '..') { - continue; - } - if (!@unlink($dir . '/' . $obj)) { - self::unlink_r($dir.'/'.$obj, true); - } - } - closedir($dh); - if ( $deleteRootToo ) { - @rmdir($dir); - } - return true; - } - - /** - * tries to extract the import zip - * @param string $path path to the zip - * @return string path to extract location (with a trailing slash) or false on failure - */ - static private function extractZip( $path ) { - self::$zip = new ZipArchive; - // Validate path - if( !file_exists( $path ) ) { - OC_Log::write( 'migration', 'Zip not found', OC_Log::ERROR ); - return false; - } - if ( self::$zip->open( $path ) != true ) { - OC_Log::write( 'migration', "Failed to open zip file", OC_Log::ERROR ); - return false; - } - $to = get_temp_dir() . '/oc_import_' . self::$exporttype . '_' . date("y-m-d_H-i-s") . '/'; - if( !self::$zip->extractTo( $to ) ) { - return false; - } - self::$zip->close(); - return $to; - } - - /** - * creates a migration.db in the users data dir with their app data in - * @return bool whether operation was successfull - */ - private static function exportAppData( ) { - - $success = true; - $return = array(); - - // Foreach provider - foreach( self::$providers as $provider ) { - // Check if the app is enabled - if( OC_App::isEnabled( $provider->getID() ) ) { - $success = true; - // Does this app use the database? - if( file_exists( OC_App::getAppPath($provider->getID()).'/appinfo/database.xml' ) ) { - // Create some app tables - $tables = self::createAppTables( $provider->getID() ); - if( is_array( $tables ) ) { - // Save the table names - foreach($tables as $table) { - $return['apps'][$provider->getID()]['tables'][] = $table; - } - } else { - // It failed to create the tables - $success = false; - } - } - - // Run the export function? - if( $success ) { - // Set the provider properties - $provider->setData( self::$uid, self::$content ); - $return['apps'][$provider->getID()]['success'] = $provider->export(); - } else { - $return['apps'][$provider->getID()]['success'] = false; - $return['apps'][$provider->getID()]['message'] = 'failed to create the app tables'; - } - - // Now add some app info the the return array - $appinfo = OC_App::getAppInfo( $provider->getID() ); - $return['apps'][$provider->getID()]['version'] = OC_App::getAppVersion($provider->getID()); - } - } - - return $return; - - } - - - /** - * generates json containing export info, and merges any data supplied - * @param array $array of data to include in the returned json - * @return string - */ - static private function getExportInfo( $array=array() ) { - $info = array( - 'ocversion' => OC_Util::getVersion(), - 'exporttime' => time(), - 'exportedby' => OC_User::getUser(), - 'exporttype' => self::$exporttype, - 'exporteduser' => self::$uid - ); - - if( !is_array( $array ) ) { - OC_Log::write( 'migration', 'Supplied $array was not an array in getExportInfo()', OC_Log::ERROR ); - } - // Merge in other data - $info = array_merge( $info, (array)$array ); - // Create json - $json = json_encode( $info ); - return $json; - } - - /** - * connects to migration.db, or creates if not found - * @param string $path to migration.db, defaults to user data dir - * @return bool whether the operation was successful - */ - static private function connectDB( $path=null ) { - // Has the dbpath been set? - self::$dbpath = !is_null( $path ) ? $path : self::$dbpath; - if( !self::$dbpath ) { - OC_Log::write( 'migration', 'connectDB() was called without dbpath being set', OC_Log::ERROR ); - return false; - } - // Already connected - if(!self::$migration_database) { - $datadir = OC_Config::getValue( "datadirectory", OC::$SERVERROOT."/data" ); - $connectionParams = array( - 'path' => self::$dbpath, - 'driver' => 'pdo_sqlite', - ); - $connectionParams['adapter'] = '\OC\DB\AdapterSqlite'; - $connectionParams['wrapperClass'] = 'OC\DB\Connection'; - $connectionParams['tablePrefix'] = ''; - - // Try to establish connection - self::$migration_database = \Doctrine\DBAL\DriverManager::getConnection($connectionParams); - } - return true; - - } - - /** - * creates the tables in migration.db from an apps database.xml - * @param string $appid id of the app - * @return bool whether the operation was successful - */ - static private function createAppTables( $appid ) { - $schema_manager = new OC\DB\MDB2SchemaManager(self::$migration_database); - - // There is a database.xml file - $content = file_get_contents(OC_App::getAppPath($appid) . '/appinfo/database.xml' ); - - $file2 = 'static://db_scheme'; - // TODO get the relative path to migration.db from the data dir - // For now just cheat - $path = pathinfo( self::$dbpath ); - $content = str_replace( '*dbname*', self::$uid.'/migration', $content ); - $content = str_replace( '*dbprefix*', '', $content ); - - $xml = new SimpleXMLElement($content); - foreach($xml->table as $table) { - $tables[] = (string)$table->name; - } - - file_put_contents( $file2, $content ); - - // Try to create tables - try { - $schema_manager->createDbFromStructure($file2); - } catch(Exception $e) { - unlink( $file2 ); - OC_Log::write( 'migration', 'Failed to create tables for: '.$appid, OC_Log::FATAL ); - OC_Log::write( 'migration', $e->getMessage(), OC_Log::FATAL ); - return false; - } - - return $tables; - } - - /** - * tries to create the zip - * @return bool - */ - static private function createZip() { - self::$zip = new ZipArchive; - // Check if properties are set - if( !self::$zippath ) { - OC_Log::write('migration', 'createZip() called but $zip and/or $zippath have not been set', OC_Log::ERROR); - return false; - } - if ( self::$zip->open( self::$zippath, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE ) !== true ) { - OC_Log::write('migration', - 'Failed to create the zip with error: '.self::$zip->getStatusString(), - OC_Log::ERROR); - return false; - } else { - return true; - } - } - - /** - * returns an array of apps that support migration - * @return array - */ - static public function getApps() { - $allapps = OC_App::getAllApps(); - foreach($allapps as $app) { - $path = self::getAppPath($app) . '/lib/migrate.php'; - if( file_exists( $path ) ) { - $supportsmigration[] = $app; - } - } - return $supportsmigration; - } - - /** - * imports a new user - * @param string $db string path to migration.db - * @param object $info object of migration info - * @param string|null|int $uid uid to use - * @return array an array of apps with import statuses, or false on failure. - */ - public static function importAppData( $db, $info, $uid=null ) { - // Check if the db exists - if( file_exists( $db ) ) { - // Connect to the db - if(!self::connectDB( $db )) { - OC_Log::write('migration', 'Failed to connect to migration.db', OC_Log::ERROR); - return false; - } - } else { - OC_Log::write('migration', 'Migration.db not found at: '.$db, OC_Log::FATAL ); - return false; - } - - // Find providers - self::findProviders(); - - // Generate importinfo array - $importinfo = array( - 'olduid' => $info->exporteduser, - 'newuid' => self::$uid - ); - - foreach( self::$providers as $provider) { - // Is the app in the export? - $id = $provider->getID(); - if( isset( $info->apps->$id ) ) { - // Is the app installed - if( !OC_App::isEnabled( $id ) ) { - OC_Log::write( 'migration', - 'App: ' . $id . ' is not installed, can\'t import data.', - OC_Log::INFO ); - $appsstatus[$id] = 'notsupported'; - } else { - // Did it succeed on export? - if( $info->apps->$id->success ) { - // Give the provider the content object - if( !self::connectDB( $db ) ) { - return false; - } - $content = new OC_Migration_Content( self::$zip, self::$migration_database ); - $provider->setData( self::$uid, $content, $info ); - // Then do the import - if( !$appsstatus[$id] = $provider->import( $info->apps->$id, $importinfo ) ) { - // Failed to import app - OC_Log::write( 'migration', - 'Failed to import app data for user: ' . self::$uid . ' for app: ' . $id, - OC_Log::ERROR ); - } - } else { - // Add to failed list - $appsstatus[$id] = false; - } - } - } - } - - return $appsstatus; - - } - - /** - * creates a new user in the database - * @param string $uid user_id of the user to be created - * @param string $hash hash of the user to be created - * @return bool result of user creation - */ - public static function createUser( $uid, $hash ) { - - // Check if userid exists - if(OC_User::userExists( $uid )) { - return false; - } - - // Create the user - $query = OC_DB::prepare( "INSERT INTO `*PREFIX*users` ( `uid`, `password` ) VALUES( ?, ? )" ); - $result = $query->execute( array( $uid, $hash)); - if( !$result ) { - OC_Log::write('migration', 'Failed to create the new user "'.$uid."", OC_Log::ERROR); - } - return $result ? true : false; - - } - -} diff --git a/lib/private/migration/content.php b/lib/private/migration/content.php deleted file mode 100644 index cb5d9ad1472..00000000000 --- a/lib/private/migration/content.php +++ /dev/null @@ -1,246 +0,0 @@ -<?php -/** - * ownCloud - * - * @author Tom Needham - * @copyright 2012 Tom Needham tom@owncloud.com - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU Affero General Public - * License along with this library. If not, see <http://www.gnu.org/licenses/>. - * - */ - - -/** - * provides methods to add and access data from the migration - */ -class OC_Migration_Content{ - - private $zip=false; - // Holds the database object - private $db=null; - // Holds an array of tmpfiles to delete after zip creation - private $tmpfiles=array(); - - /** - * sets up the - * @param ZipArchive $zip ZipArchive object - * @param object $db a database object (required for exporttype user) - * @return bool|null - */ - public function __construct( $zip, $db=null ) { - - $this->zip = $zip; - $this->db = $db; - - } - - /** - * prepares the db - * @param string $query the sql query to prepare - */ - public function prepare( $query ) { - - // Only add database to tmpfiles if actually used - if( !is_null( $this->db ) ) { - // Get db path - $db = $this->db->getDatabase(); - if(!in_array($db, $this->tmpfiles)) { - $this->tmpfiles[] = $db; - } - } - - // Optimize the query - $query = $this->processQuery( $query ); - - // Optimize the query - $query = $this->db->prepare( $query ); - $query = new OC_DB_StatementWrapper($query, false); - - return $query; - } - - /** - * processes the db query - * @param string $query the query to process - * @return string of processed query - */ - private function processQuery( $query ) { - $query = str_replace( '`', '\'', $query ); - $query = str_replace( 'NOW()', 'datetime(\'now\')', $query ); - $query = str_replace( 'now()', 'datetime(\'now\')', $query ); - // remove table prefixes - $query = str_replace( '*PREFIX*', '', $query ); - return $query; - } - - /** - * copys rows to migration.db from the main database - * @param array $options array of options. - * @return bool - */ - public function copyRows( $options ) { - if( !array_key_exists( 'table', $options ) ) { - return false; - } - - $return = array(); - - // Need to include 'where' in the query? - if( array_key_exists( 'matchval', $options ) && array_key_exists( 'matchcol', $options ) ) { - - // If only one matchval, create an array - if(!is_array($options['matchval'])) { - $options['matchval'] = array( $options['matchval'] ); - } - - foreach( $options['matchval'] as $matchval ) { - // Run the query for this match value (where x = y value) - $sql = 'SELECT * FROM `*PREFIX*' . $options['table'] . '` WHERE `' . $options['matchcol'] . '` = ?'; - $query = OC_DB::prepare( $sql ); - $results = $query->execute( array( $matchval ) ); - $newreturns = $this->insertData( $results, $options ); - $return = array_merge( $return, $newreturns ); - } - - } else { - // Just get everything - $sql = 'SELECT * FROM `*PREFIX*' . $options['table'] . '`'; - $query = OC_DB::prepare( $sql ); - $results = $query->execute(); - $return = $this->insertData( $results, $options ); - - } - - return $return; - - } - - /** - * saves a sql data set into migration.db - * @param OC_DB_StatementWrapper $data a sql data set returned from self::prepare()->query() - * @param array $options array of copyRows options - * @return void - */ - private function insertData( $data, $options ) { - $return = array(); - // Foreach row of data to insert - while( $row = $data->fetchRow() ) { - // Now save all this to the migration.db - foreach($row as $field=>$value) { - $fields[] = $field; - $values[] = $value; - } - - // Generate some sql - $sql = "INSERT INTO `" . $options['table'] . '` ( `'; - $fieldssql = implode( '`, `', $fields ); - $sql .= $fieldssql . "` ) VALUES( "; - $valuessql = substr( str_repeat( '?, ', count( $fields ) ), 0, -2 ); - $sql .= $valuessql . " )"; - // Make the query - $query = $this->prepare( $sql ); - $query->execute( $values ); - // Do we need to return some values? - if( array_key_exists( 'idcol', $options ) ) { - // Yes we do - $return[] = $row[$options['idcol']]; - } else { - // Take a guess and return the first field :) - $return[] = reset($row); - } - $fields = ''; - $values = ''; - } - return $return; - } - - /** - * adds a directory to the zip object - * @param boolean|string $dir string path of the directory to add - * @param bool $recursive - * @param string $internaldir path of folder to add dir to in zip - * @return bool - */ - public function addDir( $dir, $recursive=true, $internaldir='' ) { - $dirname = basename($dir); - $this->zip->addEmptyDir($internaldir . $dirname); - $internaldir.=$dirname.='/'; - if( !file_exists( $dir ) ) { - return false; - } - $dirhandle = opendir($dir); - if(is_resource($dirhandle)) { - while (false !== ( $file = readdir($dirhandle))) { - - if (( $file != '.' ) && ( $file != '..' )) { - - if (is_dir($dir . '/' . $file) && $recursive) { - $this->addDir($dir . '/' . $file, $recursive, $internaldir); - } elseif (is_file($dir . '/' . $file)) { - $this->zip->addFile($dir . '/' . $file, $internaldir . $file); - } - } - } - closedir($dirhandle); - } else { - OC_Log::write('admin_export', "Was not able to open directory: " . $dir, OC_Log::ERROR); - return false; - } - return true; - } - - /** - * adds a file to the zip from a given string - * @param string $data string of data to add - * @param string $path the relative path inside of the zip to save the file to - * @return bool - */ - public function addFromString( $data, $path ) { - // Create a temp file - $file = tempnam( get_temp_dir(). '/', 'oc_export_tmp_' ); - $this->tmpfiles[] = $file; - if( !file_put_contents( $file, $data ) ) { - OC_Log::write( 'migation', 'Failed to save data to a temporary file', OC_Log::ERROR ); - return false; - } - // Add file to the zip - $this->zip->addFile( $file, $path ); - return true; - } - - /** - * closes the zip, removes temp files - * @return bool - */ - public function finish() { - if( !$this->zip->close() ) { - OC_Log::write( 'migration', - 'Failed to write the zip file with error: '.$this->zip->getStatusString(), - OC_Log::ERROR ); - return false; - } - $this->cleanup(); - return true; - } - - /** - * cleans up after the zip - */ - private function cleanup() { - // Delete tmp files - foreach($this->tmpfiles as $i) { - unlink( $i ); - } - } -} diff --git a/lib/private/migration/provider.php b/lib/private/migration/provider.php deleted file mode 100644 index a7c611dcdd4..00000000000 --- a/lib/private/migration/provider.php +++ /dev/null @@ -1,52 +0,0 @@ -<?php -/** - * provides search functionalty - */ -abstract class OC_Migration_Provider{ - - protected $id=false; - protected $content=false; - protected $uid=false; - protected $olduid=false; - protected $appinfo=false; - - public function __construct( $appid ) { - // Set the id - $this->id = $appid; - OC_Migrate::registerProvider( $this ); - } - - /** - * exports data for apps - * @return array appdata to be exported - */ - abstract function export( ); - - /** - * imports data for the app - * @return void - */ - abstract function import( ); - - /** - * sets the OC_Migration_Content object to $this->content - * @param OC_Migration_Content $content a OC_Migration_Content object - */ - public function setData( $uid, $content, $info=null ) { - $this->content = $content; - $this->uid = $uid; - $id = $this->id; - if( !is_null( $info ) ) { - $this->olduid = $info->exporteduser; - $this->appinfo = $info->apps->$id; - } - } - - /** - * returns the appid of the provider - * @return string - */ - public function getID() { - return $this->id; - } -} diff --git a/lib/private/preview.php b/lib/private/preview.php index dbbe173bf80..c9d8810be6f 100644 --- a/lib/private/preview.php +++ b/lib/private/preview.php @@ -17,7 +17,7 @@ use OC\Preview\Provider; use OCP\Files\NotFoundException; require_once 'preview/image.php'; -require_once 'preview/movies.php'; +require_once 'preview/movie.php'; require_once 'preview/mp3.php'; require_once 'preview/svg.php'; require_once 'preview/txt.php'; @@ -48,6 +48,7 @@ class Preview { //filemapper used for deleting previews // index is path, value is fileinfo static public $deleteFileMapper = array(); + static public $deleteChildrenMapper = array(); /** * preview images object @@ -189,6 +190,21 @@ class Preview { return $this->info; } + + /** + * @return array|null + */ + private function getChildren() { + $absPath = $this->fileView->getAbsolutePath($this->file); + $absPath = Files\Filesystem::normalizePath($absPath); + + if (array_key_exists($absPath, self::$deleteChildrenMapper)) { + return self::$deleteChildrenMapper[$absPath]; + } + + return null; + } + /** * set the path of the file you want a thumbnail from * @param string $file @@ -269,6 +285,10 @@ class Preview { return $this; } + /** + * @param bool $keepAspect + * @return $this + */ public function setKeepAspect($keepAspect) { $this->keepAspect = $keepAspect; return $this; @@ -312,20 +332,25 @@ class Preview { /** * deletes all previews of a file - * @return bool */ public function deleteAllPreviews() { $file = $this->getFile(); $fileInfo = $this->getFileInfo($file); - if($fileInfo !== null && $fileInfo !== false) { - $fileId = $fileInfo->getId(); - $previewPath = $this->getPreviewPath($fileId); - $this->userView->deleteAll($previewPath); - return $this->userView->rmdir($previewPath); + $toDelete = $this->getChildren(); + $toDelete[] = $fileInfo; + + foreach ($toDelete as $delete) { + if ($delete !== null && $delete !== false) { + /** @var \OCP\Files\FileInfo $delete */ + $fileId = $delete->getId(); + + $previewPath = $this->getPreviewPath($fileId); + $this->userView->deleteAll($previewPath); + $this->userView->rmdir($previewPath); + } } - return false; } /** @@ -667,8 +692,8 @@ class Preview { } /** - * Register a new preview provider to be used - * @param $class + * register a new preview provider to be used + * @param string $class * @param array $options */ public static function registerProvider($class, $options = array()) { @@ -688,7 +713,7 @@ class Preview { * - OC\Preview\OpenDocument * - OC\Preview\StarOffice * - OC\Preview\SVG - * - OC\Preview\Movies + * - OC\Preview\Movie * - OC\Preview\PDF * - OC\Preview\TIFF * - OC\Preview\Illustrator @@ -737,14 +762,24 @@ class Preview { } + /** + * @param array $args + */ public static function post_write($args) { self::post_delete($args, 'files/'); } + /** + * @param array $args + */ public static function prepare_delete_files($args) { self::prepare_delete($args, 'files/'); } + /** + * @param array $args + * @param string $prefix + */ public static function prepare_delete($args, $prefix='') { $path = $args['path']; if (substr($path, 0, 1) === '/') { @@ -752,20 +787,63 @@ class Preview { } $view = new \OC\Files\View('/' . \OC_User::getUser() . '/' . $prefix); - $info = $view->getFileInfo($path); - \OC\Preview::$deleteFileMapper = array_merge( - \OC\Preview::$deleteFileMapper, - array( - Files\Filesystem::normalizePath($view->getAbsolutePath($path)) => $info, - ) - ); + $absPath = Files\Filesystem::normalizePath($view->getAbsolutePath($path)); + self::addPathToDeleteFileMapper($absPath, $view->getFileInfo($path)); + if ($view->is_dir($path)) { + $children = self::getAllChildren($view, $path); + self::$deleteChildrenMapper[$absPath] = $children; + } } + /** + * @param string $absolutePath + * @param \OCP\Files\FileInfo $info + */ + private static function addPathToDeleteFileMapper($absolutePath, $info) { + self::$deleteFileMapper[$absolutePath] = $info; + } + + /** + * @param \OC\Files\View $view + * @param string $path + * @return array + */ + private static function getAllChildren($view, $path) { + $children = $view->getDirectoryContent($path); + $childrensFiles = array(); + + $fakeRootLength = strlen($view->getRoot()); + + for ($i = 0; $i < count($children); $i++) { + $child = $children[$i]; + + $childsPath = substr($child->getPath(), $fakeRootLength); + + if ($view->is_dir($childsPath)) { + $children = array_merge( + $children, + $view->getDirectoryContent($childsPath) + ); + } else { + $childrensFiles[] = $child; + } + } + + return $childrensFiles; + } + + /** + * @param array $args + */ public static function post_delete_files($args) { self::post_delete($args, 'files/'); } + /** + * @param array $args + * @param string $prefix + */ public static function post_delete($args, $prefix='') { $path = Files\Filesystem::normalizePath($args['path']); @@ -814,16 +892,6 @@ class Preview { self::initProviders(); } - // FIXME: Ugly hack to prevent SVG of being returned if the SVG - // provider is not enabled. - // This is required because the preview system is designed in a - // bad way and relies on opt-in with asterisks (i.e. image/*) - // which will lead to the fact that a SVG will also match the image - // provider. - if($mimeType === 'image/svg+xml' && !array_key_exists('/image\/svg\+xml/', self::$providers)) { - return false; - } - foreach(self::$providers as $supportedMimetype => $provider) { if(preg_match($supportedMimetype, $mimeType)) { return true; diff --git a/lib/private/preview/image.php b/lib/private/preview/image.php index ec5b87befea..7bcbddc649e 100644 --- a/lib/private/preview/image.php +++ b/lib/private/preview/image.php @@ -11,7 +11,7 @@ namespace OC\Preview; class Image extends Provider { public function getMimeType() { - return '/image\/.*/'; + return '/image\/(?!tiff$)(?!svg.*).*/'; } public function getThumbnail($path, $maxX, $maxY, $scalingup, $fileview) { diff --git a/lib/private/preview/movies.php b/lib/private/preview/movie.php index 2a23c2141c1..d69266ceb33 100644 --- a/lib/private/preview/movies.php +++ b/lib/private/preview/movie.php @@ -8,28 +8,12 @@ */ namespace OC\Preview; -function findBinaryPath($program) { - exec('command -v ' . escapeshellarg($program) . ' 2> /dev/null', $output, $returnCode); - if ($returnCode === 0 && count($output) > 0) { - return escapeshellcmd($output[0]); - } - return null; -} - // movie preview is currently not supported on Windows if (!\OC_Util::runningOnWindows()) { - $isExecEnabled = \OC_Helper::is_function_enabled('exec'); - $ffmpegBinary = null; - $avconvBinary = null; - - if ($isExecEnabled) { - $avconvBinary = findBinaryPath('avconv'); - if (!$avconvBinary) { - $ffmpegBinary = findBinaryPath('ffmpeg'); - } - } + $avconvBinary = \OC_Helper::findBinaryPath('avconv'); + $ffmpegBinary = ($avconvBinary) ? null : \OC_Helper::findBinaryPath('ffmpeg'); - if($isExecEnabled && ( $avconvBinary || $ffmpegBinary )) { + if ($avconvBinary || $ffmpegBinary) { class Movie extends Provider { public static $avconvBinary; diff --git a/lib/private/preview/office-cl.php b/lib/private/preview/office-cl.php index 42d2cbf34fc..f5c791e37f2 100644 --- a/lib/private/preview/office-cl.php +++ b/lib/private/preview/office-cl.php @@ -29,7 +29,7 @@ if (!\OC_Util::runningOnWindows()) { $tmpDir = get_temp_dir(); - $defaultParameters = ' -env:UserInstallation=file://' . escapeshellarg($tmpDir . '/owncloud-' . \OC_Util::getInstanceId().'/') . ' --headless --nologo --nofirststartwizard --invisible --norestore -convert-to pdf -outdir '; + $defaultParameters = ' -env:UserInstallation=file://' . escapeshellarg($tmpDir . '/owncloud-' . \OC_Util::getInstanceId().'/') . ' --headless --nologo --nofirststartwizard --invisible --norestore --convert-to pdf --outdir '; $clParameters = \OCP\Config::getSystemValue('preview_office_cl_parameters', $defaultParameters); $exec = $this->cmd . $clParameters . escapeshellarg($tmpDir) . ' ' . escapeshellarg($absPath); diff --git a/lib/private/repair.php b/lib/private/repair.php index 081aeb32c66..b5c1e9db58e 100644 --- a/lib/private/repair.php +++ b/lib/private/repair.php @@ -93,7 +93,8 @@ class Repair extends BasicEmitter { $steps = array( new InnoDB(), new Collation(\OC::$server->getConfig(), \OC_DB::getConnection()), - new SearchLuceneTables() + new SearchLuceneTables(), + new RepairConfig() ); //There is no need to delete all previews on every single update diff --git a/lib/private/request.php b/lib/private/request.php index 1cfa4a150c5..d079dc110d1 100644 --- a/lib/private/request.php +++ b/lib/private/request.php @@ -12,8 +12,7 @@ class OC_Request { // Android Chrome user agent: https://developers.google.com/chrome/mobile/docs/user-agent const USER_AGENT_ANDROID_MOBILE_CHROME = '#Android.*Chrome/[.0-9]*#'; const USER_AGENT_FREEBOX = '#^Mozilla/5\.0$#'; - - const REGEX_LOCALHOST = '/^(127\.0\.0\.1|localhost)(:[0-9]+|)$/'; + const REGEX_LOCALHOST = '/^(127\.0\.0\.1|localhost)$/'; static protected $reqId; /** @@ -76,13 +75,26 @@ class OC_Request { * have been configured */ public static function isTrustedDomain($domain) { - $trustedList = \OC_Config::getValue('trusted_domains', array()); + // Extract port from domain if needed + $pos = strrpos($domain, ':'); + if ($pos !== false) { + $port = substr($domain, $pos + 1); + if (is_numeric($port)) { + $domain = substr($domain, 0, $pos); + } + } + + // FIXME: Empty config array defaults to true for now. - Deprecate this behaviour with ownCloud 8. + $trustedList = \OC::$server->getConfig()->getSystemValue('trusted_domains', array()); if (empty($trustedList)) { return true; } + + // Always allow access from localhost if (preg_match(self::REGEX_LOCALHOST, $domain) === 1) { return true; } + return in_array($domain, $trustedList); } diff --git a/lib/private/route/router.php b/lib/private/route/router.php index 645d6141964..5d6f621dc38 100644 --- a/lib/private/route/router.php +++ b/lib/private/route/router.php @@ -243,7 +243,6 @@ class Router implements IRouter { if (isset($parameters['action'])) { $action = $parameters['action']; if (!is_callable($action)) { - var_dump($action); throw new \Exception('not a callable action'); } unset($parameters['action']); diff --git a/lib/private/security/certificatemanager.php b/lib/private/security/certificatemanager.php index cae9730eb26..a2a4c8b83d2 100644 --- a/lib/private/security/certificatemanager.php +++ b/lib/private/security/certificatemanager.php @@ -49,6 +49,7 @@ class CertificateManager implements ICertificateManager { } catch(\Exception $e) {} } } + closedir($handle); return $result; } diff --git a/lib/private/server.php b/lib/private/server.php index f43613e8188..c413ee8bf6d 100644 --- a/lib/private/server.php +++ b/lib/private/server.php @@ -237,6 +237,12 @@ class Server extends SimpleContainer implements IServerContainer { /** @var Server $c */ return new TempManager(get_temp_dir(), $c->getLogger()); }); + $this->registerService('AppManager', function(Server $c) { + $userSession = $c->getUserSession(); + $appConfig = $c->getAppConfig(); + $groupManager = $c->getGroupManager(); + return new \OC\App\AppManager($userSession, $appConfig, $groupManager); + }); } /** @@ -616,4 +622,13 @@ class Server extends SimpleContainer implements IServerContainer { function getTempManager() { return $this->query('TempManager'); } + + /** + * Get the app manager + * + * @return \OCP\App\IAppManager + */ + function getAppManager() { + return $this->query('AppManager'); + } } diff --git a/lib/private/share/helper.php b/lib/private/share/helper.php index 2418535c9d5..6bbb101db3a 100644 --- a/lib/private/share/helper.php +++ b/lib/private/share/helper.php @@ -189,20 +189,23 @@ class Helper extends \OC\Share\Constants { public static function calculateExpireDate($defaultExpireSettings, $creationTime, $userExpireDate = null) { $expires = false; + $defaultExpires = null; if (!empty($defaultExpireSettings['defaultExpireDateSet'])) { - $expires = $creationTime + $defaultExpireSettings['expireAfterDays'] * 86400; + $defaultExpires = $creationTime + $defaultExpireSettings['expireAfterDays'] * 86400; } if (isset($userExpireDate)) { // if the admin decided to enforce the default expire date then we only take // the user defined expire date of it is before the default expire date - if ($expires && !empty($defaultExpireSettings['enforceExpireDate'])) { - $expires = min($userExpireDate, $expires); + if ($defaultExpires && !empty($defaultExpireSettings['enforceExpireDate'])) { + $expires = min($userExpireDate, $defaultExpires); } else { $expires = $userExpireDate; } + } else if ($defaultExpires && !empty($defaultExpireSettings['enforceExpireDate'])) { + $expires = $defaultExpires; } return $expires; diff --git a/lib/private/share/share.php b/lib/private/share/share.php index b7b05dab8ef..c6fd1604ac7 100644 --- a/lib/private/share/share.php +++ b/lib/private/share/share.php @@ -287,11 +287,12 @@ class Share extends \OC\Share\Constants { * Get the item of item type shared with a given user by source * @param string $itemType * @param string $itemSource - * @param string $user User user to whom the item was shared + * @param string $user User to whom the item was shared + * @param string $owner Owner of the share + * @param int $shareType only look for a specific share type * @return array Return list of items with file_target, permissions and expiration */ - public static function getItemSharedWithUser($itemType, $itemSource, $user) { - + public static function getItemSharedWithUser($itemType, $itemSource, $user, $owner = null, $shareType = null) { $shares = array(); $fileDependend = false; @@ -314,6 +315,16 @@ class Share extends \OC\Share\Constants { $arguments[] = $user; } + if ($shareType !== null) { + $where .= ' AND `share_type` = ? '; + $arguments[] = $shareType; + } + + if ($owner !== null) { + $where .= ' AND `uid_owner` = ? '; + $arguments[] = $owner; + } + $query = \OC_DB::prepare('SELECT ' . $select . ' FROM `*PREFIX*share` '. $where); $result = \OC_DB::executeAudited($query, $arguments); @@ -536,7 +547,7 @@ class Share extends \OC\Share\Constants { // single file shares should never have delete permissions if ($itemType === 'file') { - $permissions = (int)$permissions & ~\OCP\PERMISSION_DELETE; + $permissions = (int)$permissions & ~\OCP\Constants::PERMISSION_DELETE; } // Verify share type and sharing conditions are met @@ -627,9 +638,7 @@ class Share extends \OC\Share\Constants { // Generate hash of password - same method as user passwords if (!empty($shareWith)) { - $forcePortable = (CRYPT_BLOWFISH != 1); - $hasher = new \PasswordHash(8, $forcePortable); - $shareWith = $hasher->HashPassword($shareWith.\OC_Config::getValue('passwordsalt', '')); + $shareWith = \OC::$server->getHasher()->hash($shareWith); } else { // reuse the already set password, but only if we change permissions // otherwise the user disabled the password protection @@ -697,7 +706,7 @@ class Share extends \OC\Share\Constants { // check if it is a valid itemType self::getBackend($itemType); - $items = self::getItemSharedWithUser($itemType, $itemSource, $shareWith); + $items = self::getItemSharedWithUser($itemType, $itemSource, $shareWith, null, $shareType); $toDelete = array(); $newParent = null; @@ -920,7 +929,7 @@ class Share extends \OC\Share\Constants { // Check if permissions were removed if ($item['permissions'] & ~$permissions) { // If share permission is removed all reshares must be deleted - if (($item['permissions'] & \OCP\PERMISSION_SHARE) && (~$permissions & \OCP\PERMISSION_SHARE)) { + if (($item['permissions'] & \OCP\Constants::PERMISSION_SHARE) && (~$permissions & \OCP\Constants::PERMISSION_SHARE)) { Helper::delete($item['id'], true); } else { $ids = array(); @@ -1308,14 +1317,18 @@ class Share extends \OC\Share\Constants { if (isset($shareType)) { // Include all user and group items if ($shareType == self::$shareTypeUserAndGroups && isset($shareWith)) { - $where .= ' AND `share_type` IN (?,?,?)'; + $where .= ' AND ((`share_type` in (?, ?) AND `share_with` = ?) '; $queryArgs[] = self::SHARE_TYPE_USER; - $queryArgs[] = self::SHARE_TYPE_GROUP; $queryArgs[] = self::$shareTypeGroupUserUnique; - $userAndGroups = array_merge(array($shareWith), \OC_Group::getUserGroups($shareWith)); - $placeholders = join(',', array_fill(0, count($userAndGroups), '?')); - $where .= ' AND `share_with` IN ('.$placeholders.')'; - $queryArgs = array_merge($queryArgs, $userAndGroups); + $queryArgs[] = $shareWith; + $groups = \OC_Group::getUserGroups($shareWith); + if (!empty($groups)) { + $placeholders = join(',', array_fill(0, count($groups), '?')); + $where .= ' OR (`share_type` = ? AND `share_with` IN ('.$placeholders.')) '; + $queryArgs[] = self::SHARE_TYPE_GROUP; + $queryArgs = array_merge($queryArgs, $groups); + } + $where .= ')'; // Don't include own group shares $where .= ' AND `uid_owner` != ?'; $queryArgs[] = $shareWith; @@ -1445,8 +1458,8 @@ class Share extends \OC\Share\Constants { } // Switch ids if sharing permission is granted on only // one share to ensure correct parent is used if resharing - if (~(int)$items[$id]['permissions'] & \OCP\PERMISSION_SHARE - && (int)$row['permissions'] & \OCP\PERMISSION_SHARE) { + if (~(int)$items[$id]['permissions'] & \OCP\Constants::PERMISSION_SHARE + && (int)$row['permissions'] & \OCP\Constants::PERMISSION_SHARE) { $items[$row['id']] = $items[$id]; $switchedItems[$id] = $row['id']; unset($items[$id]); @@ -1503,11 +1516,14 @@ class Share extends \OC\Share\Constants { } // Check if resharing is allowed, if not remove share permission if (isset($row['permissions']) && (!self::isResharingAllowed() | \OC_Util::isSharingDisabledForUser())) { - $row['permissions'] &= ~\OCP\PERMISSION_SHARE; + $row['permissions'] &= ~\OCP\Constants::PERMISSION_SHARE; } // Add display names to result - if ( isset($row['share_with']) && $row['share_with'] != '') { + if ( isset($row['share_with']) && $row['share_with'] != '' && + isset($row['share_with']) && $row['share_type'] === self::SHARE_TYPE_USER) { $row['share_with_displayname'] = \OCP\User::getDisplayName($row['share_with']); + } else { + $row['share_with_displayname'] = $row['share_with']; } if ( isset($row['uid_owner']) && $row['uid_owner'] != '') { $row['displayname_owner'] = \OCP\User::getDisplayName($row['uid_owner']); @@ -1618,7 +1634,7 @@ class Share extends \OC\Share\Constants { // Need to find a solution which works for all back-ends $collectionItems = array(); $collectionBackend = self::getBackend('folder'); - $sharedParents = $collectionBackend->getParents($item, $shareWith); + $sharedParents = $collectionBackend->getParents($item, $shareWith, $uidOwner); foreach ($sharedParents as $parent) { $collectionItems[] = $parent; } @@ -1895,7 +1911,7 @@ class Share extends \OC\Share\Constants { } // Check if share permissions is granted - if (self::isResharingAllowed() && (int)$checkReshare['permissions'] & \OCP\PERMISSION_SHARE) { + if (self::isResharingAllowed() && (int)$checkReshare['permissions'] & \OCP\Constants::PERMISSION_SHARE) { if (~(int)$checkReshare['permissions'] & $permissions) { $message = 'Sharing %s failed, because the permissions exceed permissions granted to %s'; $message_t = $l->t('Sharing %s failed, because the permissions exceed permissions granted to %s', array($itemSourceName, $uidOwner)); diff --git a/lib/private/template.php b/lib/private/template.php index 9ad9d5466db..bda802fd2e2 100644 --- a/lib/private/template.php +++ b/lib/private/template.php @@ -50,16 +50,13 @@ class OC_Template extends \OC\Template\Base { // Read the selected theme from the config file $theme = OC_Util::getTheme(); - // Read the detected formfactor and use the right file name. - $fext = self::getFormFactorExtension(); - $requesttoken = (OC::$server->getSession() and $registerCall) ? OC_Util::callRegister() : ''; $parts = explode('/', $app); // fix translation when app is something like core/lostpassword $l10n = \OC::$server->getL10N($parts[0]); $themeDefaults = new OC_Defaults(); - list($path, $template) = $this->findTemplate($theme, $app, $name, $fext); + list($path, $template) = $this->findTemplate($theme, $app, $name); // Set the private data $this->renderas = $renderas; @@ -70,85 +67,23 @@ class OC_Template extends \OC\Template\Base { } /** - * autodetect the formfactor of the used device - * default -> the normal desktop browser interface - * mobile -> interface for smartphones - * tablet -> interface for tablets - * standalone -> the default interface but without header, footer and - * sidebar, just the application. Useful to use just a specific - * app on the desktop in a standalone window. - */ - public static function detectFormfactor() { - // please add more useragent strings for other devices - if(isset($_SERVER['HTTP_USER_AGENT'])) { - if(stripos($_SERVER['HTTP_USER_AGENT'], 'ipad')>0) { - $mode='tablet'; - }elseif(stripos($_SERVER['HTTP_USER_AGENT'], 'iphone')>0) { - $mode='mobile'; - }elseif((stripos($_SERVER['HTTP_USER_AGENT'], 'N9')>0) - and (stripos($_SERVER['HTTP_USER_AGENT'], 'nokia')>0)) { - $mode='mobile'; - }else{ - $mode='default'; - } - }else{ - $mode='default'; - } - return($mode); - } - - /** - * Returns the formfactor extension for current formfactor - */ - static public function getFormFactorExtension() - { - if (!\OC::$server->getSession()) { - return ''; - } - // if the formfactor is not yet autodetected do the - // autodetection now. For possible formfactors check the - // detectFormfactor documentation - if (!\OC::$server->getSession()->exists('formfactor')) { - \OC::$server->getSession()->set('formfactor', self::detectFormfactor()); - } - // allow manual override via GET parameter - if(isset($_GET['formfactor'])) { - \OC::$server->getSession()->set('formfactor', $_GET['formfactor']); - } - $formfactor = \OC::$server->getSession()->get('formfactor'); - if($formfactor==='default') { - $fext=''; - }elseif($formfactor==='mobile') { - $fext='.mobile'; - }elseif($formfactor==='tablet') { - $fext='.tablet'; - }elseif($formfactor==='standalone') { - $fext='.standalone'; - }else{ - $fext=''; - } - return $fext; - } - - /** * find the template with the given name * @param string $name of the template file (without suffix) * - * Will select the template file for the selected theme and formfactor. + * Will select the template file for the selected theme. * Checking all the possible locations. * @param string $theme * @param string $app - * @param string $fext * @return array */ - protected function findTemplate($theme, $app, $name, $fext) { + protected function findTemplate($theme, $app, $name) { // Check if it is a app template or not. if( $app !== '' ) { $dirs = $this->getAppTemplateDirs($theme, $app, OC::$SERVERROOT, OC_App::getAppPath($app)); } else { $dirs = $this->getCoreTemplateDirs($theme, OC::$SERVERROOT); } - $locator = new \OC\Template\TemplateFileLocator( $fext, $dirs ); + $locator = new \OC\Template\TemplateFileLocator( $dirs ); $template = $locator->find($name); $path = $locator->getPath(); return array($path, $template); diff --git a/lib/private/template/cssresourcelocator.php b/lib/private/template/cssresourcelocator.php index e26daa25827..cb129261b51 100644 --- a/lib/private/template/cssresourcelocator.php +++ b/lib/private/template/cssresourcelocator.php @@ -12,9 +12,7 @@ class CSSResourceLocator extends ResourceLocator { public function doFind( $style ) { if (strpos($style, '3rdparty') === 0 && $this->appendIfExist($this->thirdpartyroot, $style.'.css') - || $this->appendIfExist($this->serverroot, $style.$this->form_factor.'.css') || $this->appendIfExist($this->serverroot, $style.'.css') - || $this->appendIfExist($this->serverroot, 'core/'.$style.$this->form_factor.'.css') || $this->appendIfExist($this->serverroot, 'core/'.$style.'.css') ) { return; @@ -23,8 +21,7 @@ class CSSResourceLocator extends ResourceLocator { $style = substr($style, strpos($style, '/')+1); $app_path = \OC_App::getAppPath($app); $app_url = \OC_App::getAppWebPath($app); - if ($this->appendIfExist($app_path, $style.$this->form_factor.'.css', $app_url) - || $this->appendIfExist($app_path, $style.'.css', $app_url) + if ($this->appendIfExist($app_path, $style.'.css', $app_url) ) { return; } @@ -33,11 +30,8 @@ class CSSResourceLocator extends ResourceLocator { public function doFindTheme( $style ) { $theme_dir = 'themes/'.$this->theme.'/'; - $this->appendIfExist($this->serverroot, $theme_dir.'apps/'.$style.$this->form_factor.'.css') - || $this->appendIfExist($this->serverroot, $theme_dir.'apps/'.$style.'.css') - || $this->appendIfExist($this->serverroot, $theme_dir.$style.$this->form_factor.'.css') + $this->appendIfExist($this->serverroot, $theme_dir.'apps/'.$style.'.css') || $this->appendIfExist($this->serverroot, $theme_dir.$style.'.css') - || $this->appendIfExist($this->serverroot, $theme_dir.'core/'.$style.$this->form_factor.'.css') || $this->appendIfExist($this->serverroot, $theme_dir.'core/'.$style.'.css'); } } diff --git a/lib/private/template/functions.php b/lib/private/template/functions.php index e9f9f39c191..4172d47ba61 100644 --- a/lib/private/template/functions.php +++ b/lib/private/template/functions.php @@ -29,7 +29,7 @@ function print_unescaped($string) { * @param string|string[] $file the filename, * if an array is given it will add all scripts */ -function script($app, $file) { +function script($app, $file = null) { if(is_array($file)) { foreach($file as $f) { OC_Util::addScript($app, $f); @@ -61,7 +61,7 @@ function vendor_script($app, $file = null) { * @param string|string[] $file the filename, * if an array is given it will add all styles */ -function style($app, $file) { +function style($app, $file = null) { if(is_array($file)) { foreach($file as $f) { OC_Util::addStyle($app, $f); diff --git a/lib/private/template/jsresourcelocator.php b/lib/private/template/jsresourcelocator.php index 507f31327a6..5a6672429cf 100644 --- a/lib/private/template/jsresourcelocator.php +++ b/lib/private/template/jsresourcelocator.php @@ -13,15 +13,10 @@ class JSResourceLocator extends ResourceLocator { $theme_dir = 'themes/'.$this->theme.'/'; if (strpos($script, '3rdparty') === 0 && $this->appendIfExist($this->thirdpartyroot, $script.'.js') - || $this->appendIfExist($this->serverroot, $theme_dir.'apps/'.$script.$this->form_factor.'.js') || $this->appendIfExist($this->serverroot, $theme_dir.'apps/'.$script.'.js') - || $this->appendIfExist($this->serverroot, $theme_dir.$script.$this->form_factor.'.js') || $this->appendIfExist($this->serverroot, $theme_dir.$script.'.js') - || $this->appendIfExist($this->serverroot, $script.$this->form_factor.'.js') || $this->appendIfExist($this->serverroot, $script.'.js') - || $this->appendIfExist($this->serverroot, $theme_dir.'core/'.$script.$this->form_factor.'.js') || $this->appendIfExist($this->serverroot, $theme_dir.'core/'.$script.'.js') - || $this->appendIfExist($this->serverroot, 'core/'.$script.$this->form_factor.'.js') || $this->appendIfExist($this->serverroot, 'core/'.$script.'.js') ) { return; @@ -30,9 +25,7 @@ class JSResourceLocator extends ResourceLocator { $script = substr($script, strpos($script, '/')+1); $app_path = \OC_App::getAppPath($app); $app_url = \OC_App::getAppWebPath($app); - if ($this->appendIfExist($app_path, $script.$this->form_factor.'.js', $app_url) - || $this->appendIfExist($app_path, $script.'.js', $app_url) - ) { + if ($this->appendIfExist($app_path, $script.'.js', $app_url)) { return; } // missing translations files fill be ignored diff --git a/lib/private/template/resourcelocator.php b/lib/private/template/resourcelocator.php index 7976c415922..919665df704 100644 --- a/lib/private/template/resourcelocator.php +++ b/lib/private/template/resourcelocator.php @@ -10,7 +10,6 @@ namespace OC\Template; abstract class ResourceLocator { protected $theme; - protected $form_factor; protected $mapping; protected $serverroot; @@ -21,11 +20,9 @@ abstract class ResourceLocator { /** * @param string $theme - * @param string $form_factor */ - public function __construct( $theme, $form_factor, $core_map, $party_map ) { + public function __construct( $theme, $core_map, $party_map ) { $this->theme = $theme; - $this->form_factor = $form_factor; $this->mapping = $core_map + $party_map; $this->serverroot = key($core_map); $this->thirdpartyroot = key($party_map); @@ -46,8 +43,7 @@ abstract class ResourceLocator { } } } catch (\Exception $e) { - throw new \Exception($e->getMessage().' formfactor:'.$this->form_factor - .' serverroot:'.$this->serverroot); + throw new \Exception($e->getMessage().' serverroot:'.$this->serverroot); } } diff --git a/lib/private/template/templatefilelocator.php b/lib/private/template/templatefilelocator.php index 8e9f3bd8100..042298389c8 100644 --- a/lib/private/template/templatefilelocator.php +++ b/lib/private/template/templatefilelocator.php @@ -9,16 +9,13 @@ namespace OC\Template; class TemplateFileLocator { - protected $form_factor; protected $dirs; private $path; /** * @param string[] $dirs - * @param string $form_factor */ - public function __construct( $form_factor, $dirs ) { - $this->form_factor = $form_factor; + public function __construct( $dirs ) { $this->dirs = $dirs; } @@ -33,18 +30,13 @@ class TemplateFileLocator { } foreach($this->dirs as $dir) { - $file = $dir.$template.$this->form_factor.'.php'; - if (is_file($file)) { - $this->path = $dir; - return $file; - } $file = $dir.$template.'.php'; if (is_file($file)) { $this->path = $dir; return $file; } } - throw new \Exception('template file not found: template:'.$template.' formfactor:'.$this->form_factor); + throw new \Exception('template file not found: template:'.$template); } public function getPath() { diff --git a/lib/private/templatelayout.php b/lib/private/templatelayout.php index a93449f202f..a066f90bb23 100644 --- a/lib/private/templatelayout.php +++ b/lib/private/templatelayout.php @@ -131,10 +131,7 @@ class OC_TemplateLayout extends OC_Template { // Read the selected theme from the config file $theme = OC_Util::getTheme(); - // Read the detected form factor and use the right file name. - $formFactorExt = self::getFormFactorExtension(); - - $locator = new \OC\Template\CSSResourceLocator( $theme, $formFactorExt, + $locator = new \OC\Template\CSSResourceLocator( $theme, array( OC::$SERVERROOT => OC::$WEBROOT ), array( OC::$THIRDPARTYROOT => OC::$THIRDPARTYWEBROOT )); $locator->find($styles); @@ -149,10 +146,7 @@ class OC_TemplateLayout extends OC_Template { // Read the selected theme from the config file $theme = OC_Util::getTheme(); - // Read the detected form factor and use the right file name. - $formFactorExt = self::getFormFactorExtension(); - - $locator = new \OC\Template\JSResourceLocator( $theme, $formFactorExt, + $locator = new \OC\Template\JSResourceLocator( $theme, array( OC::$SERVERROOT => OC::$WEBROOT ), array( OC::$THIRDPARTYROOT => OC::$THIRDPARTYWEBROOT )); $locator->find($scripts); diff --git a/lib/private/updater.php b/lib/private/updater.php index c4c70a3cc4a..e07ff03ffc4 100644 --- a/lib/private/updater.php +++ b/lib/private/updater.php @@ -245,7 +245,6 @@ class Updater extends BasicEmitter { protected function checkAppUpgrade($version) { $apps = \OC_App::getEnabledApps(); - foreach ($apps as $appId) { if ($version) { $info = \OC_App::getAppInfo($appId); @@ -255,6 +254,15 @@ class Updater extends BasicEmitter { } if ($compatible && \OC_App::shouldUpgrade($appId)) { + /** + * FIXME: The preupdate check is performed before the database migration, otherwise database changes + * are not possible anymore within it. - Consider this when touching the code. + * @link https://github.com/owncloud/core/issues/10980 + * @see \OC_App::updateApp + */ + if (file_exists(\OC_App::getAppPath($appId) . '/appinfo/preupdate.php')) { + $this->includePreUpdate($appId); + } if (file_exists(\OC_App::getAppPath($appId) . '/appinfo/database.xml')) { \OC_DB::simulateUpdateDbFromStructure(\OC_App::getAppPath($appId) . '/appinfo/database.xml'); } @@ -264,6 +272,14 @@ class Updater extends BasicEmitter { $this->emit('\OC\Updater', 'appUpgradeCheck'); } + /** + * Includes the pre-update file. Done here to prevent namespace mixups. + * @param string $appId + */ + private function includePreUpdate($appId) { + include \OC_App::getAppPath($appId) . '/appinfo/preupdate.php'; + } + protected function doAppUpgrade() { $apps = \OC_App::getEnabledApps(); diff --git a/lib/private/urlgenerator.php b/lib/private/urlgenerator.php index e50e9eed6af..d263d25aeef 100644 --- a/lib/private/urlgenerator.php +++ b/lib/private/urlgenerator.php @@ -8,6 +8,7 @@ */ namespace OC; +use OC_Defaults; use OCP\IURLGenerator; use RuntimeException; @@ -156,7 +157,7 @@ class URLGenerator implements IURLGenerator { /** * Makes an URL absolute - * @param string $url the url in the owncloud host + * @param string $url the url in the ownCloud host * @return string the absolute version of the url */ public function getAbsoluteURL($url) { @@ -173,4 +174,13 @@ class URLGenerator implements IURLGenerator { return \OC_Request::serverProtocol() . '://' . \OC_Request::serverHost(). $webRoot . $separator . $url; } + + /** + * @param string $key + * @return string url to the online documentation + */ + public function linkToDocs($key) { + $theme = new OC_Defaults(); + return $theme->buildDocLinkToKey($key); + } } diff --git a/lib/private/user.php b/lib/private/user.php index 2358f4a14e4..b2a235425c4 100644 --- a/lib/private/user.php +++ b/lib/private/user.php @@ -228,6 +228,9 @@ class OC_User { * Log in a user and regenerate a new session - if the password is ok */ public static function login($loginname, $password) { + $loginname = str_replace("\0", '', $loginname); + $password = str_replace("\0", '', $password); + session_regenerate_id(true); $result = self::getUserSession()->login($loginname, $password); if ($result) { diff --git a/lib/private/user/user.php b/lib/private/user/user.php index 452261a75ff..729abdc6227 100644 --- a/lib/private/user/user.php +++ b/lib/private/user/user.php @@ -115,7 +115,7 @@ class User implements IUser { */ public function setDisplayName($displayName) { $displayName = trim($displayName); - if ($this->canChangeDisplayName() && !empty($displayName)) { + if ($this->backend->implementsActions(\OC_USER_BACKEND_SET_DISPLAYNAME) && !empty($displayName)) { $this->displayName = $displayName; $result = $this->backend->setDisplayName($this->uid, $displayName); return $result !== false; diff --git a/lib/private/util.php b/lib/private/util.php index bee0a579192..a18a4e44232 100644 --- a/lib/private/util.php +++ b/lib/private/util.php @@ -562,6 +562,7 @@ class OC_Util { 'classes' => array( 'ZipArchive' => 'zip', 'DOMDocument' => 'dom', + 'XMLWriter' => 'XMLWriter' ), 'functions' => array( 'xml_parser_create' => 'libxml', @@ -1335,7 +1336,7 @@ class OC_Util { return false; } foreach (str_split($trimmed) as $char) { - if (strpos(\OCP\FILENAME_INVALID_CHARS, $char) !== false) { + if (strpos(\OCP\Constants::FILENAME_INVALID_CHARS, $char) !== false) { return false; } } diff --git a/lib/public/app/iappmanager.php b/lib/public/app/iappmanager.php new file mode 100644 index 00000000000..ebd84a1ce9d --- /dev/null +++ b/lib/public/app/iappmanager.php @@ -0,0 +1,51 @@ +<?php + +/** + * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OCP\App; + +interface IAppManager { + /** + * Check if an app is enabled for user + * + * @param string $appId + * @param \OCP\IUser $user (optional) if not defined, the currently loggedin user will be used + * @return bool + */ + public function isEnabledForUser($appId, $user = null); + + /** + * Check if an app is installed in the instance + * + * @param string $appId + * @return bool + */ + public function isInstalled($appId); + + /** + * Enable an app for every user + * + * @param string $appId + */ + public function enableApp($appId); + + /** + * Enable an app only for specific groups + * + * @param string $appId + * @param \OCP\IGroup[] $groups + */ + public function enableAppForGroups($appId, $groups); + + /** + * Disable an app for every user + * + * @param string $appId + */ + public function disableApp($appId); +} diff --git a/lib/public/appframework/iapi.php b/lib/public/appframework/iapi.php index 9af251be850..ecbc0fd1900 100644 --- a/lib/public/appframework/iapi.php +++ b/lib/public/appframework/iapi.php @@ -37,6 +37,7 @@ interface IApi { /** * Gets the userid of the current user * @return string the user id of the current user + * @deprecated Use \OC::$server->getUserSession()->getUser()->getUID() */ function getUserId(); diff --git a/lib/public/constants.php b/lib/public/constants.php index 350646a0ac0..78cafd11847 100644 --- a/lib/public/constants.php +++ b/lib/public/constants.php @@ -26,15 +26,37 @@ namespace OCP; -/** - * CRUDS permissions. - */ +/** @deprecated Use \OCP\Constants::PERMISSION_CREATE instead */ const PERMISSION_CREATE = 4; + +/** @deprecated Use \OCP\Constants::PERMISSION_READ instead */ const PERMISSION_READ = 1; + +/** @deprecated Use \OCP\Constants::PERMISSION_UPDATE instead */ const PERMISSION_UPDATE = 2; + +/** @deprecated Use \OCP\Constants::PERMISSION_DELETE instead */ const PERMISSION_DELETE = 8; + +/** @deprecated Use \OCP\Constants::PERMISSION_SHARE instead */ const PERMISSION_SHARE = 16; + +/** @deprecated Use \OCP\Constants::PERMISSION_ALL instead */ const PERMISSION_ALL = 31; +/** @deprecated Use \OCP\Constants::FILENAME_INVALID_CHARS instead */ const FILENAME_INVALID_CHARS = "\\/<>:\"|?*\n"; +class Constants { + /** + * CRUDS permissions. + */ + const PERMISSION_CREATE = 4; + const PERMISSION_READ = 1; + const PERMISSION_UPDATE = 2; + const PERMISSION_DELETE = 8; + const PERMISSION_SHARE = 16; + const PERMISSION_ALL = 31; + + const FILENAME_INVALID_CHARS = "\\/<>:\"|?*\n"; +} diff --git a/lib/public/files/fileinfo.php b/lib/public/files/fileinfo.php index ec81a541564..3a407ed67ca 100644 --- a/lib/public/files/fileinfo.php +++ b/lib/public/files/fileinfo.php @@ -103,12 +103,12 @@ interface FileInfo { /** * Get the permissions of the file or folder as bitmasked combination of the following constants - * \OCP\PERMISSION_CREATE - * \OCP\PERMISSION_READ - * \OCP\PERMISSION_UPDATE - * \OCP\PERMISSION_DELETE - * \OCP\PERMISSION_SHARE - * \OCP\PERMISSION_ALL + * \OCP\Constants::PERMISSION_CREATE + * \OCP\Constants::PERMISSION_READ + * \OCP\Constants::PERMISSION_UPDATE + * \OCP\Constants::PERMISSION_DELETE + * \OCP\Constants::PERMISSION_SHARE + * \OCP\Constants::PERMISSION_ALL * * @return int */ diff --git a/lib/public/files/node.php b/lib/public/files/node.php index a380394095b..35c20b487c9 100644 --- a/lib/public/files/node.php +++ b/lib/public/files/node.php @@ -128,11 +128,11 @@ interface Node { /** * Get the permissions of the file or folder as a combination of one or more of the following constants: - * - \OCP\PERMISSION_READ - * - \OCP\PERMISSION_UPDATE - * - \OCP\PERMISSION_CREATE - * - \OCP\PERMISSION_DELETE - * - \OCP\PERMISSION_SHARE + * - \OCP\Constants::PERMISSION_READ + * - \OCP\Constants::PERMISSION_UPDATE + * - \OCP\Constants::PERMISSION_CREATE + * - \OCP\Constants::PERMISSION_DELETE + * - \OCP\Constants::PERMISSION_SHARE * * @return int */ diff --git a/lib/public/iavatar.php b/lib/public/iavatar.php index 1e80682c4f7..213d2e6cef5 100644 --- a/lib/public/iavatar.php +++ b/lib/public/iavatar.php @@ -23,9 +23,9 @@ interface IAvatar { /** * sets the users avatar * @param Image $data mixed imagedata or path to set a new avatar - * @throws Exception if the provided file is not a jpg or png image - * @throws Exception if the provided image is not valid - * @throws \OCP\NotSquareException if the image is not square + * @throws \Exception if the provided file is not a jpg or png image + * @throws \Exception if the provided image is not valid + * @throws \OC\NotSquareException if the image is not square * @return void */ function set($data); diff --git a/lib/public/iservercontainer.php b/lib/public/iservercontainer.php index 794bba6bfb6..b734d1b4161 100644 --- a/lib/public/iservercontainer.php +++ b/lib/public/iservercontainer.php @@ -291,4 +291,11 @@ interface IServerContainer { * @return \OCP\ITempManager */ function getTempManager(); + + /** + * Get the app manager + * + * @return \OCP\App\IAppManager + */ + function getAppManager(); } diff --git a/lib/public/iurlgenerator.php b/lib/public/iurlgenerator.php index dbbd8a3bb63..fa817c10ea5 100644 --- a/lib/public/iurlgenerator.php +++ b/lib/public/iurlgenerator.php @@ -69,8 +69,14 @@ interface IURLGenerator { /** * Makes an URL absolute - * @param string $url the url in the owncloud host + * @param string $url the url in the ownCloud host * @return string the absolute version of the url */ public function getAbsoluteURL($url); + + /** + * @param string $key + * @return string url to the online documentation + */ + public function linkToDocs($key); } diff --git a/lib/public/share.php b/lib/public/share.php index 449d1fa211e..333e0a26970 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -125,11 +125,12 @@ class Share extends \OC\Share\Constants { * Get the item of item type shared with a given user by source * @param string $itemType * @param string $itemSource - * @param string $user User user to whom the item was shared + * @param string $user User to whom the item was shared + * @param string $owner Owner of the share * @return array Return list of items with file_target, permissions and expiration */ - public static function getItemSharedWithUser($itemType, $itemSource, $user) { - return \OC\Share\Share::getItemSharedWithUser($itemType, $itemSource, $user); + public static function getItemSharedWithUser($itemType, $itemSource, $user, $owner = null) { + return \OC\Share\Share::getItemSharedWithUser($itemType, $itemSource, $user, $owner); } /** diff --git a/lib/public/template.php b/lib/public/template.php index 2e265bb5e8e..a1b650649ff 100644 --- a/lib/public/template.php +++ b/lib/public/template.php @@ -88,7 +88,7 @@ function human_file_size( $bytes ) { * Return the relative date in relation to today. Returns something like "last hour" or "two month ago" * @param int $timestamp unix timestamp * @param boolean $dateOnly - * @return OC_L10N_String human readable interpretation of the timestamp + * @return \OC_L10N_String human readable interpretation of the timestamp */ function relative_modified_date( $timestamp, $dateOnly = false ) { return(\relative_modified_date($timestamp, null, $dateOnly)); diff --git a/lib/public/user.php b/lib/public/user.php index 925410d37d5..e9835620433 100644 --- a/lib/public/user.php +++ b/lib/public/user.php @@ -38,6 +38,7 @@ class User { /** * Get the user id of the user currently logged in. * @return string uid or false + * @deprecated Use \OC::$server->getUserSession()->getUser()->getUID() */ public static function getUser() { return \OC_User::getUser(); @@ -94,6 +95,7 @@ class User { /** * Logs the user out including all the session data * Logout, destroys session + * @deprecated Use \OC::$server->getUserSession()->logout(); */ public static function logout() { \OC_User::logout(); @@ -106,6 +108,7 @@ class User { * @return string|false username on success, false otherwise * * Check if the password is correct without logging in the user + * @deprecated Use \OC::$server->getUserManager()->checkPassword(); */ public static function checkPassword( $uid, $password ) { return \OC_User::checkPassword( $uid, $password ); diff --git a/lib/public/util.php b/lib/public/util.php index a87d26a4004..793a16c4d84 100644 --- a/lib/public/util.php +++ b/lib/public/util.php @@ -508,8 +508,8 @@ class Util { /** * Compare two strings to provide a natural sort - * @param $a first string to compare - * @param $b second string to compare + * @param string $a first string to compare + * @param string $b second string to compare * @return -1 if $b comes before $a, 1 if $a comes before $b * or 0 if the strings are identical */ diff --git a/lib/repair/repairconfig.php b/lib/repair/repairconfig.php index e09d8e8fe7a..e9b322da826 100644 --- a/lib/repair/repairconfig.php +++ b/lib/repair/repairconfig.php @@ -12,8 +12,16 @@ use OC\Hooks\BasicEmitter; use OC\RepairStep; use Sabre\DAV\Exception; +/** + * Class RepairConfig + * + * @package OC\Repair + */ class RepairConfig extends BasicEmitter implements RepairStep { + /** + * @return string + */ public function getName() { return 'Repair config'; } @@ -23,6 +31,7 @@ class RepairConfig extends BasicEmitter implements RepairStep { */ public function run() { $this->addSecret(); + $this->removePortsFromTrustedDomains(); } /** @@ -34,4 +43,24 @@ class RepairConfig extends BasicEmitter implements RepairStep { \OC::$server->getConfig()->setSystemValue('secret', $secret); } } + + + /** + * Remove ports from existing trusted domains in config.php + */ + private function removePortsFromTrustedDomains() { + $trustedDomains = \OC::$server->getConfig()->getSystemValue('trusted_domains', array()); + $newTrustedDomains = array(); + foreach($trustedDomains as $domain) { + $pos = strrpos($domain, ':'); + if ($pos !== false) { + $port = substr($domain, $pos + 1); + if (is_numeric($port)) { + $domain = substr($domain, 0, $pos); + } + } + $newTrustedDomains[] = $domain; + } + \OC::$server->getConfig()->setSystemValue('trusted_domains', $newTrustedDomains); + } } diff --git a/public.php b/public.php index 0e04db66da7..c5c227ef460 100644 --- a/public.php +++ b/public.php @@ -37,7 +37,9 @@ try { OC_App::loadApps(array('authentication')); OC_App::loadApps(array('filesystem', 'logging')); - OC_Util::checkAppEnabled($app); + if (!\OC::$server->getAppManager()->isInstalled($app)) { + throw new Exception('App not installed: ' . $app); + } OC_App::loadApp($app); OC_User::setIncognitoMode(true); diff --git a/remote.php b/remote.php index d854b1d65a6..7993566afec 100644 --- a/remote.php +++ b/remote.php @@ -43,7 +43,9 @@ try { $file = OC::$SERVERROOT .'/'. $file; break; default: - OC_Util::checkAppEnabled($app); + if (!\OC::$server->getAppManager()->isInstalled($app)) { + throw new Exception('App not installed: ' . $app); + } OC_App::loadApp($app); $file = OC_App::getAppPath($app) .'/'. $parts[1]; break; diff --git a/settings/admin.php b/settings/admin.php index d58b9a597b9..a669974891c 100644 --- a/settings/admin.php +++ b/settings/admin.php @@ -17,7 +17,7 @@ $config = \OC::$server->getConfig(); $appConfig = \OC::$server->getAppConfig(); // Should we display sendmail as an option? -$template->assign('sendmail_is_available', (bool)findBinaryPath('sendmail')); +$template->assign('sendmail_is_available', (bool) \OC_Helper::findBinaryPath('sendmail')); $template->assign('loglevel', $config->getSystemValue("loglevel", 2)); $template->assign('mail_domain', $config->getSystemValue("mail_domain", '')); @@ -53,7 +53,8 @@ $template->assign('shareExcludedGroupsList', implode('|', $excludedGroupsList)); // Check if connected using HTTPS $template->assign('isConnectedViaHTTPS', OC_Request::serverProtocol() === 'https'); -$template->assign('enforceHTTPSEnabled', $config->getSystemValue("forcessl", false)); +$template->assign('enforceHTTPSEnabled', $config->getSystemValue('forcessl', false)); +$template->assign('forceSSLforSubdomainsEnabled', $config->getSystemValue('forceSSLforSubdomains', false)); // If the current web root is non-empty but the web root from the config is, // and system cron is used, the URL generator fails to build valid URLs. @@ -92,7 +93,7 @@ $formsMap = array_map(function ($form) { $anchor = str_replace(' ', '-', $anchor); return array( - 'anchor' => $anchor, + 'anchor' => 'goto-' . $anchor, 'section-name' => $sectionName, 'form' => $form ); @@ -114,19 +115,3 @@ $formsAndMore[] = array('anchor' => 'log-section', 'section-name' => $l->t('Log' $template->assign('forms', $formsAndMore); $template->printPage(); - -/** - * Try to find a program - * - * @param string $program - * @return null|string - */ -function findBinaryPath($program) { - if (OC_Helper::is_function_enabled('exec')) { - exec('command -v ' . escapeshellarg($program) . ' 2> /dev/null', $output, $returnCode); - if ($returnCode === 0 && count($output) > 0) { - return escapeshellcmd($output[0]); - } - } - return null; -} diff --git a/settings/ajax/setsecurity.php b/settings/ajax/setsecurity.php deleted file mode 100644 index f1f737a4943..00000000000 --- a/settings/ajax/setsecurity.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php -/** - * Copyright (c) 2013-2014, Lukas Reschke <lukas@owncloud.com> - * This file is licensed under the Affero General Public License version 3 or later. - * See the COPYING-README file. - */ - -OC_Util::checkAdminUser(); -OCP\JSON::callCheck(); - -if(isset($_POST['enforceHTTPS'])) { - \OC::$server->getConfig()->setSystemValue('forcessl', filter_var($_POST['enforceHTTPS'], FILTER_VALIDATE_BOOLEAN)); -} - -if(isset($_POST['trustedDomain'])) { - $trustedDomains = \OC::$server->getConfig()->getSystemValue('trusted_domains'); - $trustedDomains[] = $_POST['trustedDomain']; - \OC::$server->getConfig()->setSystemValue('trusted_domains', $trustedDomains); -} - -echo 'true'; diff --git a/settings/application.php b/settings/application.php index 99d78aff2cc..64aa4671228 100644 --- a/settings/application.php +++ b/settings/application.php @@ -13,6 +13,7 @@ namespace OC\Settings; use OC\AppFramework\Utility\SimpleContainer; use OC\Settings\Controller\AppSettingsController; use OC\Settings\Controller\MailSettingsController; +use OC\Settings\Controller\SecuritySettingsController; use \OCP\AppFramework\App; use \OCP\Util; @@ -53,6 +54,14 @@ class Application extends App { $c->query('Config') ); }); + $container->registerService('SecuritySettingsController', function(SimpleContainer $c) { + return new SecuritySettingsController( + $c->query('AppName'), + $c->query('Request'), + $c->query('Config') + ); + }); + /** * Core class wrappers */ diff --git a/settings/controller/securitysettingscontroller.php b/settings/controller/securitysettingscontroller.php new file mode 100644 index 00000000000..af60df8dc3b --- /dev/null +++ b/settings/controller/securitysettingscontroller.php @@ -0,0 +1,95 @@ +<?php +/** + * @author Lukas Reschke + * @copyright 2014 Lukas Reschke lukas@owncloud.com + * + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Settings\Controller; + +use \OCP\AppFramework\Controller; +use OCP\IRequest; +use OCP\IConfig; + +/** + * @package OC\Settings\Controller + */ +class SecuritySettingsController extends Controller { + /** @var \OCP\IConfig */ + private $config; + + /** + * @param string $appName + * @param IRequest $request + * @param IConfig $config + */ + public function __construct($appName, + IRequest $request, + IConfig $config) { + parent::__construct($appName, $request); + $this->config = $config; + } + + /** + * @return array + */ + protected function returnSuccess() { + return array( + 'status' => 'success' + ); + } + + /** + * @return array + */ + protected function returnError() { + return array( + 'status' => 'error' + ); + } + + /** + * Enforce or disable the enforcement of SSL + * @param boolean $enforceHTTPS Whether SSL should be enforced + * @return array + */ + public function enforceSSL($enforceHTTPS = false) { + if(!is_bool($enforceHTTPS)) { + return $this->returnError(); + } + $this->config->setSystemValue('forcessl', $enforceHTTPS); + + return $this->returnSuccess(); + } + + /** + * Enforce or disable the enforcement for SSL on subdomains + * @param bool $forceSSLforSubdomains Whether SSL on subdomains should be enforced + * @return array + */ + public function enforceSSLForSubdomains($forceSSLforSubdomains = false) { + if(!is_bool($forceSSLforSubdomains)) { + return $this->returnError(); + } + $this->config->setSystemValue('forceSSLforSubdomains', $forceSSLforSubdomains); + + return $this->returnSuccess(); + } + + /** + * Add a new trusted domain + * @param string $newTrustedDomain The newly to add trusted domain + * @return array + */ + public function trustedDomains($newTrustedDomain) { + $trustedDomains = $this->config->getSystemValue('trusted_domains'); + $trustedDomains[] = $newTrustedDomain; + $this->config->setSystemValue('trusted_domains', $trustedDomains); + + return $this->returnSuccess(); + } + +} diff --git a/settings/js/admin.js b/settings/js/admin.js index e3a092f71b0..059e48ebabe 100644 --- a/settings/js/admin.js +++ b/settings/js/admin.js @@ -9,8 +9,8 @@ $(document).ready(function(){ if(answer) { $.ajax({ type: 'POST', - url: OC.generateUrl('settings/ajax/setsecurity.php'), - data: { trustedDomain: params.trustDomain } + url: OC.generateUrl('settings/admin/security/trustedDomains'), + data: { newTrustedDomain: params.trustDomain } }).done(function() { window.location.replace(OC.generateUrl('settings/admin')); }); @@ -73,10 +73,32 @@ $(document).ready(function(){ $('#setDefaultExpireDate').toggleClass('hidden', !(this.checked && $('#shareapiDefaultExpireDate')[0].checked)); }); - $('#security').change(function(){ - $.post(OC.filePath('settings','ajax','setsecurity.php'), { enforceHTTPS: $('#forcessl').val() },function(){} ); + $('#forcessl').change(function(){ + $(this).val(($(this).val() !== 'true')); + var forceSSLForSubdomain = $('#forceSSLforSubdomainsSpan'); + + $.post(OC.generateUrl('settings/admin/security/ssl'), { + enforceHTTPS: $(this).val() + },function(){} ); + + if($(this).val() === 'true') { + forceSSLForSubdomain.prop('disabled', false); + forceSSLForSubdomain.removeClass('hidden'); + } else { + forceSSLForSubdomain.prop('disabled', true); + forceSSLForSubdomain.addClass('hidden'); + } }); + $('#forceSSLforSubdomains').change(function(){ + $(this).val(($(this).val() !== 'true')); + + $.post(OC.generateUrl('settings/admin/security/ssl/subdomains'), { + forceSSLforSubdomains: $(this).val() + },function(){} ); + }); + + $('#mail_smtpauth').change(function() { if (!this.checked) { $('#mail_credentials').addClass('hidden'); diff --git a/settings/js/users/users.js b/settings/js/users/users.js index f7ac5dc752d..5e0c0cac189 100644 --- a/settings/js/users/users.js +++ b/settings/js/users/users.js @@ -46,7 +46,7 @@ var UserList = { // make them look like the multiselect buttons // until they get time to really get initialized - groupsSelect = $('<select multiple="multiple" class="groupsselect multiselect button" data-placehoder="Groups" title="' + t('settings', 'Groups') + '"></select>') + groupsSelect = $('<select multiple="multiple" class="groupsselect multiselect button" data-placehoder="Groups" title="' + t('settings', 'no group') + '"></select>') .data('username', username) .data('user-groups', groups); if ($tr.find('td.subadmins').length > 0) { diff --git a/settings/l10n/ar.js b/settings/l10n/ar.js index 80d19fa2635..7f3695a1df6 100644 --- a/settings/l10n/ar.js +++ b/settings/l10n/ar.js @@ -81,7 +81,6 @@ OC.L10N.register( "Locale not working" : "اللغه لا تعمل", "System locale can not be set to a one which supports UTF-8." : "لا يمكن تعيين لغة النظام الى احد اللغات التي تدعم UTF-8.", "This means that there might be problems with certain characters in file names." : "هذا يعني انه من الممكن ان يكون هناك مشكلة في بعض الاحرف في اسم الملف.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "نحن باصرار نقترح ان تثبت الحزم المطلوبة في نظامك لدعم احد هذة اللغات: %s.", "Please double check the <a href='%s'>installation guides</a>." : "الرجاء التحقق من <a href='%s'>دليل التنصيب</a>.", "Execute one task with each page loaded" : "قم بتنفيذ مهمة واحدة مع كل صفحة تم تحميلها", "cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "الملف cron.php تم تسجيله فى خدمه webcron لاستدعاء الملف cron.php كل 15 دقيقه", @@ -138,7 +137,7 @@ OC.L10N.register( "The encryption app is no longer enabled, please decrypt all your files" : "البرنامج المشفر لم يعد مفعل, يرجى فك التشفير عن كل ملفاتك", "Log-in password" : "كلمه سر الدخول", "Decrypt all Files" : "فك تشفير جميع الملفات ", - "Login Name" : "اسم الدخول", + "Username" : "إسم المستخدم", "Create" : "انشئ", "Admin Recovery Password" : "استعادة كلمة المرور للمسؤول", "Enter the recovery password in order to recover the users files during password change" : "ادخل كلمة المرور المستعادة من اجل استرداد ملفات المستخدمين اثناء تغيير كلمة المرور", @@ -148,7 +147,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "يرجى ادخال تخزين quota (مثل:\"512 MB\" او \"12 GB\")", "Unlimited" : "غير محدود", "Other" : "شيء آخر", - "Username" : "إسم المستخدم", "Quota" : "حصه", "Last Login" : "آخر تسجيل دخول", "change full name" : "تغيير اسمك الكامل", diff --git a/settings/l10n/ar.json b/settings/l10n/ar.json index fe6a18d6857..5e2fc16b24e 100644 --- a/settings/l10n/ar.json +++ b/settings/l10n/ar.json @@ -79,7 +79,6 @@ "Locale not working" : "اللغه لا تعمل", "System locale can not be set to a one which supports UTF-8." : "لا يمكن تعيين لغة النظام الى احد اللغات التي تدعم UTF-8.", "This means that there might be problems with certain characters in file names." : "هذا يعني انه من الممكن ان يكون هناك مشكلة في بعض الاحرف في اسم الملف.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "نحن باصرار نقترح ان تثبت الحزم المطلوبة في نظامك لدعم احد هذة اللغات: %s.", "Please double check the <a href='%s'>installation guides</a>." : "الرجاء التحقق من <a href='%s'>دليل التنصيب</a>.", "Execute one task with each page loaded" : "قم بتنفيذ مهمة واحدة مع كل صفحة تم تحميلها", "cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "الملف cron.php تم تسجيله فى خدمه webcron لاستدعاء الملف cron.php كل 15 دقيقه", @@ -136,7 +135,7 @@ "The encryption app is no longer enabled, please decrypt all your files" : "البرنامج المشفر لم يعد مفعل, يرجى فك التشفير عن كل ملفاتك", "Log-in password" : "كلمه سر الدخول", "Decrypt all Files" : "فك تشفير جميع الملفات ", - "Login Name" : "اسم الدخول", + "Username" : "إسم المستخدم", "Create" : "انشئ", "Admin Recovery Password" : "استعادة كلمة المرور للمسؤول", "Enter the recovery password in order to recover the users files during password change" : "ادخل كلمة المرور المستعادة من اجل استرداد ملفات المستخدمين اثناء تغيير كلمة المرور", @@ -146,7 +145,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "يرجى ادخال تخزين quota (مثل:\"512 MB\" او \"12 GB\")", "Unlimited" : "غير محدود", "Other" : "شيء آخر", - "Username" : "إسم المستخدم", "Quota" : "حصه", "Last Login" : "آخر تسجيل دخول", "change full name" : "تغيير اسمك الكامل", diff --git a/settings/l10n/ast.js b/settings/l10n/ast.js index 1689e49d203..12482c4ddb5 100644 --- a/settings/l10n/ast.js +++ b/settings/l10n/ast.js @@ -116,7 +116,6 @@ OC.L10N.register( "Locale not working" : "La configuración rexonal nun ta funcionando", "System locale can not be set to a one which supports UTF-8." : "Nun se pue escoyer una configuración rexonal que sofite UTF-8.", "This means that there might be problems with certain characters in file names." : "Esto significa que pue haber problemes con ciertos caráuteres nos nomes de los ficheros.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Ye enforma recomendable instalar los paquetes necesarios pa poder soportar una de les siguientes configuraciones rexonales: %s. ", "URL generation in notification emails" : "Xeneración d'URL en mensaxes de notificación", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Si la so instalación nun ta asitiada nel raigañu del dominiu y uses el cron del sistema, pues atopar problemas cola xeneración d'URL. Pa evitar estos problemes, afita la opción \"overwritewebroot\" nel tu ficheru config.php pa qu'use'l camín del raigañu la so instalación (Suxerencia: \"%s\")", "Please double check the <a href='%s'>installation guides</a>." : "Por favor, comprueba les <a href='%s'>guíes d'instalación</a>.", @@ -202,11 +201,10 @@ OC.L10N.register( "Your encryption keys are moved to a backup location. If something went wrong you can restore the keys. Only delete them permanently if you are sure that all files are decrypted correctly." : "Les claves de cifráu van guardase nuna llocalización segura. D'esta miente, en casu de que daqué saliere mal, vas poder recuperar les claves. Desanicia dafechu les claves de cifráu namái si tas seguru de que los ficheros descifráronse correcho.", "Restore Encryption Keys" : "Restaurar claves de cifráu.", "Delete Encryption Keys" : "Desaniciar claves de cifráu", - "Login Name" : "Nome d'usuariu", + "Username" : "Nome d'usuariu", "Create" : "Crear", "Admin Recovery Password" : "Recuperación de la contraseña d'alministración", "Enter the recovery password in order to recover the users files during password change" : "Introduz la contraseña de recuperación col envís de recuperar los ficheros de los usuarios mientres el cambéu de contraseña.", - "Search Users and Groups" : "Guetar Usuarios y Grupos", "Add Group" : "Amestar grupu", "Group" : "Grupu", "Everyone" : "Toos", @@ -215,7 +213,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Por favor indica la cuota d'almacenamientu (ex: \"512 MB\" o \"12 GB\")", "Unlimited" : "Non llendáu", "Other" : "Otru", - "Username" : "Nome d'usuariu", "Quota" : "Cuota", "Storage Location" : "Llocalización d'almacenamientu", "Last Login" : "Caberu aniciu de sesión", diff --git a/settings/l10n/ast.json b/settings/l10n/ast.json index 643ef9cc6ee..8ab5e2e448a 100644 --- a/settings/l10n/ast.json +++ b/settings/l10n/ast.json @@ -114,7 +114,6 @@ "Locale not working" : "La configuración rexonal nun ta funcionando", "System locale can not be set to a one which supports UTF-8." : "Nun se pue escoyer una configuración rexonal que sofite UTF-8.", "This means that there might be problems with certain characters in file names." : "Esto significa que pue haber problemes con ciertos caráuteres nos nomes de los ficheros.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Ye enforma recomendable instalar los paquetes necesarios pa poder soportar una de les siguientes configuraciones rexonales: %s. ", "URL generation in notification emails" : "Xeneración d'URL en mensaxes de notificación", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Si la so instalación nun ta asitiada nel raigañu del dominiu y uses el cron del sistema, pues atopar problemas cola xeneración d'URL. Pa evitar estos problemes, afita la opción \"overwritewebroot\" nel tu ficheru config.php pa qu'use'l camín del raigañu la so instalación (Suxerencia: \"%s\")", "Please double check the <a href='%s'>installation guides</a>." : "Por favor, comprueba les <a href='%s'>guíes d'instalación</a>.", @@ -200,11 +199,10 @@ "Your encryption keys are moved to a backup location. If something went wrong you can restore the keys. Only delete them permanently if you are sure that all files are decrypted correctly." : "Les claves de cifráu van guardase nuna llocalización segura. D'esta miente, en casu de que daqué saliere mal, vas poder recuperar les claves. Desanicia dafechu les claves de cifráu namái si tas seguru de que los ficheros descifráronse correcho.", "Restore Encryption Keys" : "Restaurar claves de cifráu.", "Delete Encryption Keys" : "Desaniciar claves de cifráu", - "Login Name" : "Nome d'usuariu", + "Username" : "Nome d'usuariu", "Create" : "Crear", "Admin Recovery Password" : "Recuperación de la contraseña d'alministración", "Enter the recovery password in order to recover the users files during password change" : "Introduz la contraseña de recuperación col envís de recuperar los ficheros de los usuarios mientres el cambéu de contraseña.", - "Search Users and Groups" : "Guetar Usuarios y Grupos", "Add Group" : "Amestar grupu", "Group" : "Grupu", "Everyone" : "Toos", @@ -213,7 +211,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Por favor indica la cuota d'almacenamientu (ex: \"512 MB\" o \"12 GB\")", "Unlimited" : "Non llendáu", "Other" : "Otru", - "Username" : "Nome d'usuariu", "Quota" : "Cuota", "Storage Location" : "Llocalización d'almacenamientu", "Last Login" : "Caberu aniciu de sesión", diff --git a/settings/l10n/bg_BG.js b/settings/l10n/bg_BG.js index 435bf0f43ec..e072dd080f8 100644 --- a/settings/l10n/bg_BG.js +++ b/settings/l10n/bg_BG.js @@ -1,6 +1,7 @@ OC.L10N.register( "settings", { + "Security & Setup Warnings" : "Предупреждения за сигурност и настройки", "Cron" : "Крон", "Sharing" : "Споделяне", "Security" : "Сигурност", @@ -116,9 +117,9 @@ OC.L10N.register( "Locale not working" : "Местоположението не работи", "System locale can not be set to a one which supports UTF-8." : "Системните настройки за местоположение не могат да бъдат промени на такива, подържащи UTF-8.", "This means that there might be problems with certain characters in file names." : "Това означва, че може да има проблеми с определини символи в имената на файловете.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Силно препоръчваме да инсталираш на сървъра пакетите, които подържат следните местоположения: %s.", "URL generation in notification emails" : "Генериране на URL в имейлите за известяване", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Ако инсталацията не e инсталиранa в root на домейна и използва cron, може да има проблеми с генерирането на URL. За да избегнеш тези проблеми, моля, промени \"overwritewebroot\" в config.php с webroot пътя (Препоръчително: \"%s\")", + "Connectivity Checks" : "Проверки за свързаност", "No problems found" : "Не са открити проблеми", "Please double check the <a href='%s'>installation guides</a>." : "Моля, провери <a href='%s'>ръководството за инсталиране</a> отново.", "Last cron was executed at %s." : "Последният cron се изпълни в %s.", @@ -142,6 +143,8 @@ OC.L10N.register( "These groups will still be able to receive shares, but not to initiate them." : "Тези групи ще могат да получават споделения, но няма да могат самите те да споделят.", "Enforce HTTPS" : "Изисквай HTTPS", "Forces the clients to connect to %s via an encrypted connection." : "Задължава клиента да се свързва с %s през криптирана връзка.", + "Enforce HTTPS for subdomains" : "Изисквай HTTPS за под домейни", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Задължава клиента да се свързва с %s и негови под домейни през криптирана връзка.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Моля свържи се с твоя %s през HTTPS, за да включиш или изключиш SSL задължаването.", "This is used for sending out notifications." : "Това се използва за изпращане на уведомления.", "Send mode" : "Режим на изпращане", @@ -214,11 +217,10 @@ OC.L10N.register( "Delete Encryption Keys" : "Изтрий Криптиращи Ключове", "Show storage location" : "Покажи място за запис", "Show last log in" : "Покажи последно вписване", - "Login Name" : "Потребителско Име", + "Username" : "Потребителско Име", "Create" : "Създаване", "Admin Recovery Password" : "Възстановяване на Администраторска Парола", "Enter the recovery password in order to recover the users files during password change" : "Въведи паролата за възстановяване, за да възстановиш файловете на потребителите при промяна на паролата.", - "Search Users and Groups" : "Търси Потребители и Групи", "Add Group" : "Добави Група", "Group" : "Група", "Everyone" : "Всички", @@ -227,7 +229,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Моля, въведи квота за заделено място (пр. \"512 MB\" или \"12 GB\")", "Unlimited" : "Неограничено", "Other" : "Друга...", - "Username" : "Потребителско Име", "Group Admin for" : "Групов администратор за", "Quota" : "Квота", "Storage Location" : "Място за Запис", diff --git a/settings/l10n/bg_BG.json b/settings/l10n/bg_BG.json index 7925a93bebb..a4eee134950 100644 --- a/settings/l10n/bg_BG.json +++ b/settings/l10n/bg_BG.json @@ -1,4 +1,5 @@ { "translations": { + "Security & Setup Warnings" : "Предупреждения за сигурност и настройки", "Cron" : "Крон", "Sharing" : "Споделяне", "Security" : "Сигурност", @@ -114,9 +115,9 @@ "Locale not working" : "Местоположението не работи", "System locale can not be set to a one which supports UTF-8." : "Системните настройки за местоположение не могат да бъдат промени на такива, подържащи UTF-8.", "This means that there might be problems with certain characters in file names." : "Това означва, че може да има проблеми с определини символи в имената на файловете.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Силно препоръчваме да инсталираш на сървъра пакетите, които подържат следните местоположения: %s.", "URL generation in notification emails" : "Генериране на URL в имейлите за известяване", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Ако инсталацията не e инсталиранa в root на домейна и използва cron, може да има проблеми с генерирането на URL. За да избегнеш тези проблеми, моля, промени \"overwritewebroot\" в config.php с webroot пътя (Препоръчително: \"%s\")", + "Connectivity Checks" : "Проверки за свързаност", "No problems found" : "Не са открити проблеми", "Please double check the <a href='%s'>installation guides</a>." : "Моля, провери <a href='%s'>ръководството за инсталиране</a> отново.", "Last cron was executed at %s." : "Последният cron се изпълни в %s.", @@ -140,6 +141,8 @@ "These groups will still be able to receive shares, but not to initiate them." : "Тези групи ще могат да получават споделения, но няма да могат самите те да споделят.", "Enforce HTTPS" : "Изисквай HTTPS", "Forces the clients to connect to %s via an encrypted connection." : "Задължава клиента да се свързва с %s през криптирана връзка.", + "Enforce HTTPS for subdomains" : "Изисквай HTTPS за под домейни", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Задължава клиента да се свързва с %s и негови под домейни през криптирана връзка.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Моля свържи се с твоя %s през HTTPS, за да включиш или изключиш SSL задължаването.", "This is used for sending out notifications." : "Това се използва за изпращане на уведомления.", "Send mode" : "Режим на изпращане", @@ -212,11 +215,10 @@ "Delete Encryption Keys" : "Изтрий Криптиращи Ключове", "Show storage location" : "Покажи място за запис", "Show last log in" : "Покажи последно вписване", - "Login Name" : "Потребителско Име", + "Username" : "Потребителско Име", "Create" : "Създаване", "Admin Recovery Password" : "Възстановяване на Администраторска Парола", "Enter the recovery password in order to recover the users files during password change" : "Въведи паролата за възстановяване, за да възстановиш файловете на потребителите при промяна на паролата.", - "Search Users and Groups" : "Търси Потребители и Групи", "Add Group" : "Добави Група", "Group" : "Група", "Everyone" : "Всички", @@ -225,7 +227,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Моля, въведи квота за заделено място (пр. \"512 MB\" или \"12 GB\")", "Unlimited" : "Неограничено", "Other" : "Друга...", - "Username" : "Потребителско Име", "Group Admin for" : "Групов администратор за", "Quota" : "Квота", "Storage Location" : "Място за Запис", diff --git a/settings/l10n/bn_BD.js b/settings/l10n/bn_BD.js index 57136a41b48..8d841f08b89 100644 --- a/settings/l10n/bn_BD.js +++ b/settings/l10n/bn_BD.js @@ -87,7 +87,7 @@ OC.L10N.register( "Language" : "ভাষা", "Help translate" : "অনুবাদ করতে সহায়তা করুন", "Import Root Certificate" : "রুট সনদপত্রটি আমদানি করুন", - "Login Name" : "প্রবেশ", + "Username" : "ব্যবহারকারী", "Create" : "তৈরী কর", "Admin Recovery Password" : "প্রশাসক পূণরূদ্ধার কুটশব্দ", "Add Group" : "গ্রুপ যোগ কর", @@ -96,7 +96,6 @@ OC.L10N.register( "Admins" : "প্রশাসন", "Unlimited" : "অসীম", "Other" : "অন্যান্য", - "Username" : "ব্যবহারকারী", "Quota" : "কোটা", "Storage Location" : "সংরক্ষণাগার এর অবস্থান", "Last Login" : "শেষ লগইন", diff --git a/settings/l10n/bn_BD.json b/settings/l10n/bn_BD.json index fbced11ab41..3c73fdcfd00 100644 --- a/settings/l10n/bn_BD.json +++ b/settings/l10n/bn_BD.json @@ -85,7 +85,7 @@ "Language" : "ভাষা", "Help translate" : "অনুবাদ করতে সহায়তা করুন", "Import Root Certificate" : "রুট সনদপত্রটি আমদানি করুন", - "Login Name" : "প্রবেশ", + "Username" : "ব্যবহারকারী", "Create" : "তৈরী কর", "Admin Recovery Password" : "প্রশাসক পূণরূদ্ধার কুটশব্দ", "Add Group" : "গ্রুপ যোগ কর", @@ -94,7 +94,6 @@ "Admins" : "প্রশাসন", "Unlimited" : "অসীম", "Other" : "অন্যান্য", - "Username" : "ব্যবহারকারী", "Quota" : "কোটা", "Storage Location" : "সংরক্ষণাগার এর অবস্থান", "Last Login" : "শেষ লগইন", diff --git a/settings/l10n/ca.js b/settings/l10n/ca.js index 1c1e5616252..7a3e95c7cbd 100644 --- a/settings/l10n/ca.js +++ b/settings/l10n/ca.js @@ -106,7 +106,6 @@ OC.L10N.register( "Locale not working" : "Locale no funciona", "System locale can not be set to a one which supports UTF-8." : "No s'ha pogut establir cap localització del sistema amb suport per UTF-8.", "This means that there might be problems with certain characters in file names." : "Això podria comportar problemes amb alguns caràcters en els noms dels fitxer.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Us recomanem que instal·leu els paquets necessaris en el sistema per donar suport a alguna de les localitzacions següents: %s", "Please double check the <a href='%s'>installation guides</a>." : "Comproveu les <a href='%s'>guies d'instal·lació</a>.", "Last cron was executed at %s." : "L'últim cron s'ha executat el %s", "Last cron was executed at %s. This is more than an hour ago, something seems wrong." : "L'últim cron es va executar a %s. Fa més d'una hora, alguna cosa sembla que va malament.", @@ -190,11 +189,10 @@ OC.L10N.register( "Your encryption keys are moved to a backup location. If something went wrong you can restore the keys. Only delete them permanently if you are sure that all files are decrypted correctly." : "Les claus d'encriptació s'han mogut a una còpia de seguretat. Si alguna cosa va malament les podreu restablir. Esborreu-les permanentment només si esteu segur que tots els fitxers es desencripten correctament.", "Restore Encryption Keys" : "Restableix les claus d'encriptació", "Delete Encryption Keys" : "Esborra les claus d'encriptació", - "Login Name" : "Nom d'accés", + "Username" : "Nom d'usuari", "Create" : "Crea", "Admin Recovery Password" : "Recuperació de contrasenya d'administrador", "Enter the recovery password in order to recover the users files during password change" : "Escriviu la contrasenya de recuperació per a poder recuperar els fitxers dels usuaris en canviar la contrasenya", - "Search Users and Groups" : "Cerca usuaris i grups", "Add Group" : "Afegeix grup", "Group" : "Grup", "Everyone" : "Tothom", @@ -203,7 +201,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Escriviu la quota d'emmagatzemament (per ex.: \"512 MB\" o \"12 GB\")", "Unlimited" : "Il·limitat", "Other" : "Un altre", - "Username" : "Nom d'usuari", "Quota" : "Quota", "Storage Location" : "Ubicació de l'emmagatzemament", "Last Login" : "Últim accés", diff --git a/settings/l10n/ca.json b/settings/l10n/ca.json index d6928e1259a..9298c84ae75 100644 --- a/settings/l10n/ca.json +++ b/settings/l10n/ca.json @@ -104,7 +104,6 @@ "Locale not working" : "Locale no funciona", "System locale can not be set to a one which supports UTF-8." : "No s'ha pogut establir cap localització del sistema amb suport per UTF-8.", "This means that there might be problems with certain characters in file names." : "Això podria comportar problemes amb alguns caràcters en els noms dels fitxer.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Us recomanem que instal·leu els paquets necessaris en el sistema per donar suport a alguna de les localitzacions següents: %s", "Please double check the <a href='%s'>installation guides</a>." : "Comproveu les <a href='%s'>guies d'instal·lació</a>.", "Last cron was executed at %s." : "L'últim cron s'ha executat el %s", "Last cron was executed at %s. This is more than an hour ago, something seems wrong." : "L'últim cron es va executar a %s. Fa més d'una hora, alguna cosa sembla que va malament.", @@ -188,11 +187,10 @@ "Your encryption keys are moved to a backup location. If something went wrong you can restore the keys. Only delete them permanently if you are sure that all files are decrypted correctly." : "Les claus d'encriptació s'han mogut a una còpia de seguretat. Si alguna cosa va malament les podreu restablir. Esborreu-les permanentment només si esteu segur que tots els fitxers es desencripten correctament.", "Restore Encryption Keys" : "Restableix les claus d'encriptació", "Delete Encryption Keys" : "Esborra les claus d'encriptació", - "Login Name" : "Nom d'accés", + "Username" : "Nom d'usuari", "Create" : "Crea", "Admin Recovery Password" : "Recuperació de contrasenya d'administrador", "Enter the recovery password in order to recover the users files during password change" : "Escriviu la contrasenya de recuperació per a poder recuperar els fitxers dels usuaris en canviar la contrasenya", - "Search Users and Groups" : "Cerca usuaris i grups", "Add Group" : "Afegeix grup", "Group" : "Grup", "Everyone" : "Tothom", @@ -201,7 +199,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Escriviu la quota d'emmagatzemament (per ex.: \"512 MB\" o \"12 GB\")", "Unlimited" : "Il·limitat", "Other" : "Un altre", - "Username" : "Nom d'usuari", "Quota" : "Quota", "Storage Location" : "Ubicació de l'emmagatzemament", "Last Login" : "Últim accés", diff --git a/settings/l10n/cs_CZ.js b/settings/l10n/cs_CZ.js index 90e4bd6ec7b..d4871378c04 100644 --- a/settings/l10n/cs_CZ.js +++ b/settings/l10n/cs_CZ.js @@ -1,7 +1,7 @@ OC.L10N.register( "settings", { - "Security & Setup Warnings" : "Upozornění bezpečnosti a nastavení", + "Security & Setup Warnings" : "Upozornění zabezpečení a nastavení", "Cron" : "Cron", "Sharing" : "Sdílení", "Security" : "Zabezpečení", @@ -13,17 +13,17 @@ OC.L10N.register( "Group already exists" : "Skupina již existuje", "Unable to add group" : "Nelze přidat skupinu", "Files decrypted successfully" : "Soubory úspěšně dešifrovány", - "Couldn't decrypt your files, please check your owncloud.log or ask your administrator" : "Nebylo možno dešifrovat soubory, zkontroluje prosím owncloud.log nebo kontaktujte svého administrátora", + "Couldn't decrypt your files, please check your owncloud.log or ask your administrator" : "Nebylo možno dešifrovat soubory, zkontroluje prosím owncloud.log nebo kontaktujte svého správce systému", "Couldn't decrypt your files, check your password and try again" : "Nebylo možno dešifrovat soubory, zkontrolujte své heslo a zkuste znovu", "Encryption keys deleted permanently" : "Šifrovací klíče trvale smazány", - "Couldn't permanently delete your encryption keys, please check your owncloud.log or ask your administrator" : "Nebylo možno trvale smazat vaše šifrovací klíče, zkontrolujte prosím owncloud.log nebo kontaktujte svého administrátora", + "Couldn't permanently delete your encryption keys, please check your owncloud.log or ask your administrator" : "Nebylo možno trvale smazat vaše šifrovací klíče, zkontrolujte prosím owncloud.log nebo kontaktujte svého správce systému", "Couldn't remove app." : "Nepodařilo se odebrat aplikaci.", "Email saved" : "E-mail uložen", "Invalid email" : "Neplatný e-mail", "Unable to delete group" : "Nelze smazat skupinu", "Unable to delete user" : "Nelze smazat uživatele", "Backups restored successfully" : "Zálohy úspěšně obnoveny", - "Couldn't restore your encryption keys, please check your owncloud.log or ask your administrator" : "Nebylo možno obnovit vaše šifrovací klíče, zkontrolujte prosím owncloud.log nebo kontaktujte svého administrátora", + "Couldn't restore your encryption keys, please check your owncloud.log or ask your administrator" : "Nebylo možno obnovit vaše šifrovací klíče, zkontrolujte prosím owncloud.log nebo kontaktujte svého správce systému", "Language changed" : "Jazyk byl změněn", "Invalid request" : "Neplatný požadavek", "Admins can't remove themself from the admin group" : "Správci se nemohou odebrat sami ze skupiny správců", @@ -117,7 +117,7 @@ OC.L10N.register( "Locale not working" : "Lokalizace nefunguje", "System locale can not be set to a one which supports UTF-8." : "Není možné nastavit znakovou sadu, která podporuje UTF-8.", "This means that there might be problems with certain characters in file names." : "To znamená, že se mohou vyskytnout problémy s určitými znaky v názvech souborů.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Důrazně doporučujeme nainstalovat do vašeho systém balíčky nutné pro podporu některé z následujících znakových sad: %s.", + "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Velmi doporučujeme nainstalovat požadované balíčky do systému, pro podporu jednoho z následujících národních prostředí: %s.", "URL generation in notification emails" : "Generování adresy URL v oznamovacích e-mailech", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Instalace mimo kořenový adresář domény a používání systémového příkazu cron může způsobit problém s generováním správné URL. Pro zabránění těmto chybám nastavte prosím správnou cestu ve svém config.php souboru v hodnotě \"overwritewebroot\" (Doporučujeme: \"%s\")", "Connectivity Checks" : "Ověřování připojení", @@ -144,6 +144,8 @@ OC.L10N.register( "These groups will still be able to receive shares, but not to initiate them." : "Těmto skupinám bude stále možno sdílet, nemohou ale sami sdílet ostatním.", "Enforce HTTPS" : "Vynutit HTTPS", "Forces the clients to connect to %s via an encrypted connection." : "Vynutí připojování klientů k %s šifrovaným spojením.", + "Enforce HTTPS for subdomains" : "Vynutit HTTPS pro subdomény", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Vynutí připojování klientů k %s a subdoménám šifrovaným spojením.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Připojte se k %s přes HTTPS pro povolení nebo zakázání vynucení SSL.", "This is used for sending out notifications." : "Toto se používá pro odesílání upozornění.", "Send mode" : "Mód odesílání", @@ -216,11 +218,11 @@ OC.L10N.register( "Delete Encryption Keys" : "Smazat šifrovací klíče", "Show storage location" : "Zobrazit umístění úložiště", "Show last log in" : "Zobrazit poslední přihlášení", - "Login Name" : "Přihlašovací jméno", + "Username" : "Uživatelské jméno", "Create" : "Vytvořit", "Admin Recovery Password" : "Heslo obnovy správce", "Enter the recovery password in order to recover the users files during password change" : "Zadejte heslo obnovy pro obnovení souborů uživatele při změně hesla", - "Search Users and Groups" : "Prohledat uživatele a skupiny", + "Search Users" : "Hledat uživatele", "Add Group" : "Přidat skupinu", "Group" : "Skupina", "Everyone" : "Všichni", @@ -229,8 +231,7 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Zvolte prosím kvótu pro úložiště (např. \"512 MB\" nebo \"12 GB\")", "Unlimited" : "Neomezeně", "Other" : "Jiný", - "Username" : "Uživatelské jméno", - "Group Admin for" : "Administrátor skupiny ", + "Group Admin for" : "Správce skupiny ", "Quota" : "Kvóta", "Storage Location" : "Umístění úložiště", "Last Login" : "Poslední přihlášení", diff --git a/settings/l10n/cs_CZ.json b/settings/l10n/cs_CZ.json index b763d0efd3e..572dd26dfe3 100644 --- a/settings/l10n/cs_CZ.json +++ b/settings/l10n/cs_CZ.json @@ -1,5 +1,5 @@ { "translations": { - "Security & Setup Warnings" : "Upozornění bezpečnosti a nastavení", + "Security & Setup Warnings" : "Upozornění zabezpečení a nastavení", "Cron" : "Cron", "Sharing" : "Sdílení", "Security" : "Zabezpečení", @@ -11,17 +11,17 @@ "Group already exists" : "Skupina již existuje", "Unable to add group" : "Nelze přidat skupinu", "Files decrypted successfully" : "Soubory úspěšně dešifrovány", - "Couldn't decrypt your files, please check your owncloud.log or ask your administrator" : "Nebylo možno dešifrovat soubory, zkontroluje prosím owncloud.log nebo kontaktujte svého administrátora", + "Couldn't decrypt your files, please check your owncloud.log or ask your administrator" : "Nebylo možno dešifrovat soubory, zkontroluje prosím owncloud.log nebo kontaktujte svého správce systému", "Couldn't decrypt your files, check your password and try again" : "Nebylo možno dešifrovat soubory, zkontrolujte své heslo a zkuste znovu", "Encryption keys deleted permanently" : "Šifrovací klíče trvale smazány", - "Couldn't permanently delete your encryption keys, please check your owncloud.log or ask your administrator" : "Nebylo možno trvale smazat vaše šifrovací klíče, zkontrolujte prosím owncloud.log nebo kontaktujte svého administrátora", + "Couldn't permanently delete your encryption keys, please check your owncloud.log or ask your administrator" : "Nebylo možno trvale smazat vaše šifrovací klíče, zkontrolujte prosím owncloud.log nebo kontaktujte svého správce systému", "Couldn't remove app." : "Nepodařilo se odebrat aplikaci.", "Email saved" : "E-mail uložen", "Invalid email" : "Neplatný e-mail", "Unable to delete group" : "Nelze smazat skupinu", "Unable to delete user" : "Nelze smazat uživatele", "Backups restored successfully" : "Zálohy úspěšně obnoveny", - "Couldn't restore your encryption keys, please check your owncloud.log or ask your administrator" : "Nebylo možno obnovit vaše šifrovací klíče, zkontrolujte prosím owncloud.log nebo kontaktujte svého administrátora", + "Couldn't restore your encryption keys, please check your owncloud.log or ask your administrator" : "Nebylo možno obnovit vaše šifrovací klíče, zkontrolujte prosím owncloud.log nebo kontaktujte svého správce systému", "Language changed" : "Jazyk byl změněn", "Invalid request" : "Neplatný požadavek", "Admins can't remove themself from the admin group" : "Správci se nemohou odebrat sami ze skupiny správců", @@ -115,7 +115,7 @@ "Locale not working" : "Lokalizace nefunguje", "System locale can not be set to a one which supports UTF-8." : "Není možné nastavit znakovou sadu, která podporuje UTF-8.", "This means that there might be problems with certain characters in file names." : "To znamená, že se mohou vyskytnout problémy s určitými znaky v názvech souborů.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Důrazně doporučujeme nainstalovat do vašeho systém balíčky nutné pro podporu některé z následujících znakových sad: %s.", + "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Velmi doporučujeme nainstalovat požadované balíčky do systému, pro podporu jednoho z následujících národních prostředí: %s.", "URL generation in notification emails" : "Generování adresy URL v oznamovacích e-mailech", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Instalace mimo kořenový adresář domény a používání systémového příkazu cron může způsobit problém s generováním správné URL. Pro zabránění těmto chybám nastavte prosím správnou cestu ve svém config.php souboru v hodnotě \"overwritewebroot\" (Doporučujeme: \"%s\")", "Connectivity Checks" : "Ověřování připojení", @@ -142,6 +142,8 @@ "These groups will still be able to receive shares, but not to initiate them." : "Těmto skupinám bude stále možno sdílet, nemohou ale sami sdílet ostatním.", "Enforce HTTPS" : "Vynutit HTTPS", "Forces the clients to connect to %s via an encrypted connection." : "Vynutí připojování klientů k %s šifrovaným spojením.", + "Enforce HTTPS for subdomains" : "Vynutit HTTPS pro subdomény", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Vynutí připojování klientů k %s a subdoménám šifrovaným spojením.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Připojte se k %s přes HTTPS pro povolení nebo zakázání vynucení SSL.", "This is used for sending out notifications." : "Toto se používá pro odesílání upozornění.", "Send mode" : "Mód odesílání", @@ -214,11 +216,11 @@ "Delete Encryption Keys" : "Smazat šifrovací klíče", "Show storage location" : "Zobrazit umístění úložiště", "Show last log in" : "Zobrazit poslední přihlášení", - "Login Name" : "Přihlašovací jméno", + "Username" : "Uživatelské jméno", "Create" : "Vytvořit", "Admin Recovery Password" : "Heslo obnovy správce", "Enter the recovery password in order to recover the users files during password change" : "Zadejte heslo obnovy pro obnovení souborů uživatele při změně hesla", - "Search Users and Groups" : "Prohledat uživatele a skupiny", + "Search Users" : "Hledat uživatele", "Add Group" : "Přidat skupinu", "Group" : "Skupina", "Everyone" : "Všichni", @@ -227,8 +229,7 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Zvolte prosím kvótu pro úložiště (např. \"512 MB\" nebo \"12 GB\")", "Unlimited" : "Neomezeně", "Other" : "Jiný", - "Username" : "Uživatelské jméno", - "Group Admin for" : "Administrátor skupiny ", + "Group Admin for" : "Správce skupiny ", "Quota" : "Kvóta", "Storage Location" : "Umístění úložiště", "Last Login" : "Poslední přihlášení", diff --git a/settings/l10n/cy_GB.js b/settings/l10n/cy_GB.js index b51574b8130..41a1b01d085 100644 --- a/settings/l10n/cy_GB.js +++ b/settings/l10n/cy_GB.js @@ -18,8 +18,7 @@ OC.L10N.register( "New password" : "Cyfrinair newydd", "Email" : "E-bost", "Cancel" : "Diddymu", - "Login Name" : "Mewngofnodi", - "Other" : "Arall", - "Username" : "Enw defnyddiwr" + "Username" : "Enw defnyddiwr", + "Other" : "Arall" }, "nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;"); diff --git a/settings/l10n/cy_GB.json b/settings/l10n/cy_GB.json index 67709cc704d..5b65f09abaa 100644 --- a/settings/l10n/cy_GB.json +++ b/settings/l10n/cy_GB.json @@ -16,8 +16,7 @@ "New password" : "Cyfrinair newydd", "Email" : "E-bost", "Cancel" : "Diddymu", - "Login Name" : "Mewngofnodi", - "Other" : "Arall", - "Username" : "Enw defnyddiwr" + "Username" : "Enw defnyddiwr", + "Other" : "Arall" },"pluralForm" :"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;" }
\ No newline at end of file diff --git a/settings/l10n/da.js b/settings/l10n/da.js index efc3da5f9df..67022dd176e 100644 --- a/settings/l10n/da.js +++ b/settings/l10n/da.js @@ -117,7 +117,7 @@ OC.L10N.register( "Locale not working" : "Landestandard fungerer ikke", "System locale can not be set to a one which supports UTF-8." : "Systemets locale kan ikke sættes til et der bruger UTF-8.", "This means that there might be problems with certain characters in file names." : "Det betyder at der kan være problemer med visse tegn i filnavne.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Vi anbefaler at du installerer den krævede pakke på dit system, for at understøtte følgende locales: %s.", + "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Vi anbefaler kraftigt, at du installerer den krævede pakke på dit system, for at understøtte følgende lokaliteter: %s.", "URL generation in notification emails" : "URL-oprettelse i e-mailnotifikationer.", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Hvis din installation ikke er installeret i roden af domænet, og bruger systemets cron, så kan der være problemer med URL-oprettelsen. For at undgå disse problemer, så angiv tilvalget \"overwritewebroot\" i din fil config.php til webrodens sti for din installation (foreslået værdi: \"%s\")", "Connectivity Checks" : "Forbindelsestjek", @@ -144,6 +144,8 @@ OC.L10N.register( "These groups will still be able to receive shares, but not to initiate them." : "Disse grupper vil stadig kunne modtage delefiler, dog ikke skabe dem.", "Enforce HTTPS" : "Gennemtving HTTPS", "Forces the clients to connect to %s via an encrypted connection." : "Tving klienten til at forbinde til %s via en kryptetet forbindelse.", + "Enforce HTTPS for subdomains" : "Gennemtving HTTPS for subdomæner", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Tving klienterne til at tilslutte til %s og subdomæner via en krypteret forbindelse.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Forbind venligst til din %s via HTTPS for at aktivere eller deaktivere SSL tvang.", "This is used for sending out notifications." : "Dette anvendes til udsendelse af notifikationer.", "Send mode" : "Tilstand for afsendelse", @@ -216,11 +218,11 @@ OC.L10N.register( "Delete Encryption Keys" : "Slet Krypteringsnøgler", "Show storage location" : "Vis placering af lageret", "Show last log in" : "Vis seneste login", - "Login Name" : "Loginnavn", + "Username" : "Brugernavn", "Create" : "Ny", "Admin Recovery Password" : "Administrator gendannelse kodeord", "Enter the recovery password in order to recover the users files during password change" : "Indtast et gendannelse kodeord for, at kunne gendanne brugerens filer ved ændring af kodeord", - "Search Users and Groups" : "Søg efter brugere og grupper", + "Search Users" : "Søg efter brugere", "Add Group" : "Tilføj Gruppe", "Group" : "Gruppe", "Everyone" : "Alle", @@ -229,7 +231,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Indtast venligst lagerkvote (f.eks. \"512 MB\" eller \"12 GB\")", "Unlimited" : "Ubegrænset", "Other" : "Andet", - "Username" : "Brugernavn", "Group Admin for" : "Gruppeadministrator for", "Quota" : "Kvote", "Storage Location" : "Placering af lageret", diff --git a/settings/l10n/da.json b/settings/l10n/da.json index 1d58d5c083d..48ee293e1ec 100644 --- a/settings/l10n/da.json +++ b/settings/l10n/da.json @@ -115,7 +115,7 @@ "Locale not working" : "Landestandard fungerer ikke", "System locale can not be set to a one which supports UTF-8." : "Systemets locale kan ikke sættes til et der bruger UTF-8.", "This means that there might be problems with certain characters in file names." : "Det betyder at der kan være problemer med visse tegn i filnavne.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Vi anbefaler at du installerer den krævede pakke på dit system, for at understøtte følgende locales: %s.", + "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Vi anbefaler kraftigt, at du installerer den krævede pakke på dit system, for at understøtte følgende lokaliteter: %s.", "URL generation in notification emails" : "URL-oprettelse i e-mailnotifikationer.", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Hvis din installation ikke er installeret i roden af domænet, og bruger systemets cron, så kan der være problemer med URL-oprettelsen. For at undgå disse problemer, så angiv tilvalget \"overwritewebroot\" i din fil config.php til webrodens sti for din installation (foreslået værdi: \"%s\")", "Connectivity Checks" : "Forbindelsestjek", @@ -142,6 +142,8 @@ "These groups will still be able to receive shares, but not to initiate them." : "Disse grupper vil stadig kunne modtage delefiler, dog ikke skabe dem.", "Enforce HTTPS" : "Gennemtving HTTPS", "Forces the clients to connect to %s via an encrypted connection." : "Tving klienten til at forbinde til %s via en kryptetet forbindelse.", + "Enforce HTTPS for subdomains" : "Gennemtving HTTPS for subdomæner", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Tving klienterne til at tilslutte til %s og subdomæner via en krypteret forbindelse.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Forbind venligst til din %s via HTTPS for at aktivere eller deaktivere SSL tvang.", "This is used for sending out notifications." : "Dette anvendes til udsendelse af notifikationer.", "Send mode" : "Tilstand for afsendelse", @@ -214,11 +216,11 @@ "Delete Encryption Keys" : "Slet Krypteringsnøgler", "Show storage location" : "Vis placering af lageret", "Show last log in" : "Vis seneste login", - "Login Name" : "Loginnavn", + "Username" : "Brugernavn", "Create" : "Ny", "Admin Recovery Password" : "Administrator gendannelse kodeord", "Enter the recovery password in order to recover the users files during password change" : "Indtast et gendannelse kodeord for, at kunne gendanne brugerens filer ved ændring af kodeord", - "Search Users and Groups" : "Søg efter brugere og grupper", + "Search Users" : "Søg efter brugere", "Add Group" : "Tilføj Gruppe", "Group" : "Gruppe", "Everyone" : "Alle", @@ -227,7 +229,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Indtast venligst lagerkvote (f.eks. \"512 MB\" eller \"12 GB\")", "Unlimited" : "Ubegrænset", "Other" : "Andet", - "Username" : "Brugernavn", "Group Admin for" : "Gruppeadministrator for", "Quota" : "Kvote", "Storage Location" : "Placering af lageret", diff --git a/settings/l10n/de.js b/settings/l10n/de.js index c990e8fb86a..e11aa7c23d7 100644 --- a/settings/l10n/de.js +++ b/settings/l10n/de.js @@ -117,7 +117,7 @@ OC.L10N.register( "Locale not working" : "Ländereinstellung funktioniert nicht", "System locale can not be set to a one which supports UTF-8." : "Systemgebietsschema kann nicht auf eine UTF-8 unterstützende eingestellt werden.", "This means that there might be problems with certain characters in file names." : "Dies bedeutet, dass Probleme mit bestimmten Zeichen in den Dateinamen geben kann.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Wir empfehlen dringend, die erforderlichen Pakete auf Ihrem System zu installieren, damit eine der folgenden Gebietsschemas unterstützt wird: %s.", + "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Wir empfehlen dringend, die erforderlichen Pakete auf Ihrem System zu installieren, damit eine der folgenden Gebietsschemas unterstützt wird: %s.", "URL generation in notification emails" : "URL-Generierung in Mail-Benachrichtungen", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Wenn sich Deine Installation nicht im Wurzelverzeichnis der Domain befindet und Cron aus dem System genutzt wird, kann es zu Fehlern bei der URL-Generierung kommen. Um dies zu verhindern, setze bitte die \"overwritewebroot\"-Option in Deiner config.php auf das Web-Wurzelverzeichnis Deiner Installation (Vorschlag: \"%s\").", "Connectivity Checks" : "Verbindungsüberprüfungen", @@ -144,6 +144,8 @@ OC.L10N.register( "These groups will still be able to receive shares, but not to initiate them." : "Diese Gruppen können weiterhin Freigaben empfangen, aber selbst keine mehr initiieren.", "Enforce HTTPS" : "Erzwinge HTTPS", "Forces the clients to connect to %s via an encrypted connection." : "Zwingt die clientseitigen Anwendungen, verschlüsselte Verbindungen zu %s herzustellen.", + "Enforce HTTPS for subdomains" : "HTTPS für Subdomains erzwingen", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Zwingt die Clients, sich über eine verschlüsselte Verbindung zu %s und Subdomains zu verbinden.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Bitte verbinde dich zu deinem %s über HTTPS um die SSL-Erzwingung zu aktivieren oder zu deaktivieren.", "This is used for sending out notifications." : "Dies wird zum Senden von Benachrichtigungen verwendet.", "Send mode" : "Sende-Modus", @@ -216,11 +218,11 @@ OC.L10N.register( "Delete Encryption Keys" : "Verschlüsselungsschlüssel löschen", "Show storage location" : "Speicherort anzeigen", "Show last log in" : "Letzte Anmeldung anzeigen", - "Login Name" : "Loginname", + "Username" : "Benutzername", "Create" : "Anlegen", "Admin Recovery Password" : "Admin-Wiederherstellungspasswort", "Enter the recovery password in order to recover the users files during password change" : "Gib das Wiederherstellungspasswort ein, um die Benutzerdateien während Passwortänderung wiederherzustellen", - "Search Users and Groups" : "Nutzer und Gruppen suchen", + "Search Users" : "Nutzer suchen", "Add Group" : "Gruppe hinzufügen", "Group" : "Gruppe", "Everyone" : "Jeder", @@ -229,7 +231,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Bitte Speicherkontingent eingeben (z.B.: \"512 MB\" oder \"12 GB\")", "Unlimited" : "Unbegrenzt", "Other" : "Andere", - "Username" : "Benutzername", "Group Admin for" : "Gruppenadministrator für", "Quota" : "Quota", "Storage Location" : "Speicherort", diff --git a/settings/l10n/de.json b/settings/l10n/de.json index 92f88e307c8..74c3f7cf970 100644 --- a/settings/l10n/de.json +++ b/settings/l10n/de.json @@ -115,7 +115,7 @@ "Locale not working" : "Ländereinstellung funktioniert nicht", "System locale can not be set to a one which supports UTF-8." : "Systemgebietsschema kann nicht auf eine UTF-8 unterstützende eingestellt werden.", "This means that there might be problems with certain characters in file names." : "Dies bedeutet, dass Probleme mit bestimmten Zeichen in den Dateinamen geben kann.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Wir empfehlen dringend, die erforderlichen Pakete auf Ihrem System zu installieren, damit eine der folgenden Gebietsschemas unterstützt wird: %s.", + "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Wir empfehlen dringend, die erforderlichen Pakete auf Ihrem System zu installieren, damit eine der folgenden Gebietsschemas unterstützt wird: %s.", "URL generation in notification emails" : "URL-Generierung in Mail-Benachrichtungen", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Wenn sich Deine Installation nicht im Wurzelverzeichnis der Domain befindet und Cron aus dem System genutzt wird, kann es zu Fehlern bei der URL-Generierung kommen. Um dies zu verhindern, setze bitte die \"overwritewebroot\"-Option in Deiner config.php auf das Web-Wurzelverzeichnis Deiner Installation (Vorschlag: \"%s\").", "Connectivity Checks" : "Verbindungsüberprüfungen", @@ -142,6 +142,8 @@ "These groups will still be able to receive shares, but not to initiate them." : "Diese Gruppen können weiterhin Freigaben empfangen, aber selbst keine mehr initiieren.", "Enforce HTTPS" : "Erzwinge HTTPS", "Forces the clients to connect to %s via an encrypted connection." : "Zwingt die clientseitigen Anwendungen, verschlüsselte Verbindungen zu %s herzustellen.", + "Enforce HTTPS for subdomains" : "HTTPS für Subdomains erzwingen", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Zwingt die Clients, sich über eine verschlüsselte Verbindung zu %s und Subdomains zu verbinden.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Bitte verbinde dich zu deinem %s über HTTPS um die SSL-Erzwingung zu aktivieren oder zu deaktivieren.", "This is used for sending out notifications." : "Dies wird zum Senden von Benachrichtigungen verwendet.", "Send mode" : "Sende-Modus", @@ -214,11 +216,11 @@ "Delete Encryption Keys" : "Verschlüsselungsschlüssel löschen", "Show storage location" : "Speicherort anzeigen", "Show last log in" : "Letzte Anmeldung anzeigen", - "Login Name" : "Loginname", + "Username" : "Benutzername", "Create" : "Anlegen", "Admin Recovery Password" : "Admin-Wiederherstellungspasswort", "Enter the recovery password in order to recover the users files during password change" : "Gib das Wiederherstellungspasswort ein, um die Benutzerdateien während Passwortänderung wiederherzustellen", - "Search Users and Groups" : "Nutzer und Gruppen suchen", + "Search Users" : "Nutzer suchen", "Add Group" : "Gruppe hinzufügen", "Group" : "Gruppe", "Everyone" : "Jeder", @@ -227,7 +229,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Bitte Speicherkontingent eingeben (z.B.: \"512 MB\" oder \"12 GB\")", "Unlimited" : "Unbegrenzt", "Other" : "Andere", - "Username" : "Benutzername", "Group Admin for" : "Gruppenadministrator für", "Quota" : "Quota", "Storage Location" : "Speicherort", diff --git a/settings/l10n/de_DE.js b/settings/l10n/de_DE.js index 442dae8edce..a802c80f719 100644 --- a/settings/l10n/de_DE.js +++ b/settings/l10n/de_DE.js @@ -117,7 +117,7 @@ OC.L10N.register( "Locale not working" : "Die Lokalisierung funktioniert nicht", "System locale can not be set to a one which supports UTF-8." : "Systemgebietsschema kann nicht auf eine UTF-8 unterstützende eingestellt werden.", "This means that there might be problems with certain characters in file names." : "Dieses bedeutet, dass es Probleme mit bestimmten Zeichen in den Dateinamen geben kann.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Wir empfehlen dringend, die erforderlichen Pakete auf Ihrem System zu installieren, damit eine der folgenden Gebietsschemas unterstützt wird: %s.", + "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Wir empfehlen dringend, die erforderlichen Pakete auf Ihrem System zu installieren, damit eine der folgenden Gebietsschemas unterstützt wird: %s.", "URL generation in notification emails" : "Adresserstellung in E-Mail-Benachrichtungen", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Wenn sich Ihre Installation nicht im Wurzelverzeichnis der Domain befindet und Cron aus dem System genutzt wird, kann es zu Fehlern bei der Adresserstellung kommen. Um dieses zu verhindern, stellen Sie bitte die »overwritewebroot«-Option in Ihrer config.php auf das Internetwurzelverzeichnis Ihrer Installation (Vorschlag: »%s«).", "Connectivity Checks" : "Verbindungsüberprüfungen", @@ -144,6 +144,8 @@ OC.L10N.register( "These groups will still be able to receive shares, but not to initiate them." : "Diese Gruppen können weiterhin Freigaben empfangen, aber selbst keine mehr initiieren.", "Enforce HTTPS" : "HTTPS erzwingen", "Forces the clients to connect to %s via an encrypted connection." : "Zwingt die clientseitigen Anwendungen, verschlüsselte Verbindungen zu %s herzustellen.", + "Enforce HTTPS for subdomains" : "HTTPS für Subdomains erzwingen", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Zwingt die Clients, sich über eine verschlüsselte Verbindung zu %s und Subdomains zu verbinden.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Bitte verbinden Sie sich zu Ihrem %s über HTTPS um die SSL-Erzwingung zu aktivieren oder zu deaktivieren.", "This is used for sending out notifications." : "Dies wird für das Senden von Benachrichtigungen verwendet.", "Send mode" : "Sendemodus", @@ -216,11 +218,11 @@ OC.L10N.register( "Delete Encryption Keys" : "Verschlüsselungsschlüssel löschen", "Show storage location" : "Speicherort anzeigen", "Show last log in" : "Letzte Anmeldung anzeigen", - "Login Name" : "Loginname", + "Username" : "Benutzername", "Create" : "Erstellen", "Admin Recovery Password" : "Admin-Passwort-Wiederherstellung", "Enter the recovery password in order to recover the users files during password change" : "Geben Sie das Wiederherstellungspasswort ein, um die Benutzerdateien während Passwortänderung wiederherzustellen", - "Search Users and Groups" : "Benutzer und Gruppen suchen", + "Search Users" : "Nutzer suchen", "Add Group" : "Gruppe hinzufügen", "Group" : "Gruppe", "Everyone" : "Jeder", @@ -229,7 +231,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Bitte Speicherkontingent eingeben (z.B.: „512 MB“ oder „12 GB“)", "Unlimited" : "Unbegrenzt", "Other" : "Andere", - "Username" : "Benutzername", "Group Admin for" : "Gruppenadministrator für", "Quota" : "Kontingent", "Storage Location" : "Speicherort", diff --git a/settings/l10n/de_DE.json b/settings/l10n/de_DE.json index b9a4eee7804..0f1e8d07932 100644 --- a/settings/l10n/de_DE.json +++ b/settings/l10n/de_DE.json @@ -115,7 +115,7 @@ "Locale not working" : "Die Lokalisierung funktioniert nicht", "System locale can not be set to a one which supports UTF-8." : "Systemgebietsschema kann nicht auf eine UTF-8 unterstützende eingestellt werden.", "This means that there might be problems with certain characters in file names." : "Dieses bedeutet, dass es Probleme mit bestimmten Zeichen in den Dateinamen geben kann.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Wir empfehlen dringend, die erforderlichen Pakete auf Ihrem System zu installieren, damit eine der folgenden Gebietsschemas unterstützt wird: %s.", + "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Wir empfehlen dringend, die erforderlichen Pakete auf Ihrem System zu installieren, damit eine der folgenden Gebietsschemas unterstützt wird: %s.", "URL generation in notification emails" : "Adresserstellung in E-Mail-Benachrichtungen", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Wenn sich Ihre Installation nicht im Wurzelverzeichnis der Domain befindet und Cron aus dem System genutzt wird, kann es zu Fehlern bei der Adresserstellung kommen. Um dieses zu verhindern, stellen Sie bitte die »overwritewebroot«-Option in Ihrer config.php auf das Internetwurzelverzeichnis Ihrer Installation (Vorschlag: »%s«).", "Connectivity Checks" : "Verbindungsüberprüfungen", @@ -142,6 +142,8 @@ "These groups will still be able to receive shares, but not to initiate them." : "Diese Gruppen können weiterhin Freigaben empfangen, aber selbst keine mehr initiieren.", "Enforce HTTPS" : "HTTPS erzwingen", "Forces the clients to connect to %s via an encrypted connection." : "Zwingt die clientseitigen Anwendungen, verschlüsselte Verbindungen zu %s herzustellen.", + "Enforce HTTPS for subdomains" : "HTTPS für Subdomains erzwingen", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Zwingt die Clients, sich über eine verschlüsselte Verbindung zu %s und Subdomains zu verbinden.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Bitte verbinden Sie sich zu Ihrem %s über HTTPS um die SSL-Erzwingung zu aktivieren oder zu deaktivieren.", "This is used for sending out notifications." : "Dies wird für das Senden von Benachrichtigungen verwendet.", "Send mode" : "Sendemodus", @@ -214,11 +216,11 @@ "Delete Encryption Keys" : "Verschlüsselungsschlüssel löschen", "Show storage location" : "Speicherort anzeigen", "Show last log in" : "Letzte Anmeldung anzeigen", - "Login Name" : "Loginname", + "Username" : "Benutzername", "Create" : "Erstellen", "Admin Recovery Password" : "Admin-Passwort-Wiederherstellung", "Enter the recovery password in order to recover the users files during password change" : "Geben Sie das Wiederherstellungspasswort ein, um die Benutzerdateien während Passwortänderung wiederherzustellen", - "Search Users and Groups" : "Benutzer und Gruppen suchen", + "Search Users" : "Nutzer suchen", "Add Group" : "Gruppe hinzufügen", "Group" : "Gruppe", "Everyone" : "Jeder", @@ -227,7 +229,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Bitte Speicherkontingent eingeben (z.B.: „512 MB“ oder „12 GB“)", "Unlimited" : "Unbegrenzt", "Other" : "Andere", - "Username" : "Benutzername", "Group Admin for" : "Gruppenadministrator für", "Quota" : "Kontingent", "Storage Location" : "Speicherort", diff --git a/settings/l10n/el.js b/settings/l10n/el.js index 77f9c5fda87..149d7ffef0b 100644 --- a/settings/l10n/el.js +++ b/settings/l10n/el.js @@ -1,6 +1,7 @@ OC.L10N.register( "settings", { + "Security & Setup Warnings" : "Προειδοποιήσεις ασφάλειας & ρυθμίσεων", "Cron" : "Cron", "Sharing" : "Διαμοιρασμός", "Security" : "Ασφάλεια", @@ -116,7 +117,6 @@ OC.L10N.register( "Locale not working" : "Η μετάφραση δεν δουλεύει", "System locale can not be set to a one which supports UTF-8." : "Οι ρυθμίσεις τοποθεσίας συστήματος δεν μπορούν να οριστούν σε κάποιες που δεν υποστηρίζουν UTF-8.", "This means that there might be problems with certain characters in file names." : "Αυτό σημαίνει ότι μπορεί να υπάρχουν προβλήματα με κάποιους χαρακτήρες στα ονόματα αρχείων.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Συνιστούμε σοβαρά να εγκαταστήσετε τα απαιτούμενα πακέτα στο σύστημά σας ώστε να υποστηρίζεται μια από τις ακόλουθες ρυθμίσεις τοποθεσίας: %s.", "URL generation in notification emails" : "Δημιουργία URL στις ειδοποιήσεις ηλεκτρονικού ταχυδρομείου", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Αν η εγκατάστασή σας δεν είναι εγκατεστημένη στη ρίζα της περιοχής και χρησιμοποιεί το cron του συστήματος, μπορεί να υπάρξουν ζητήματα με τη δημιουργία URL. Για να αποφύγετε αυτά τα προβλήματα, παρακαλώ ρυθμίστε την επιλογή \"overwritewebroot\" στον config.php φάκελό σας στη διαδρομή webroot της εγκατάστασής σας (Suggested: \"%s\")", "No problems found" : "Δεν βρέθηκαν προβλήματα", @@ -213,11 +213,10 @@ OC.L10N.register( "Delete Encryption Keys" : "Διαγραφή κλειδιών κρυπτογράφησης", "Show storage location" : "Εμφάνιση τοποθεσίας αποθήκευσης", "Show last log in" : "Εμφάνιση τελευταίας εισόδου", - "Login Name" : "Όνομα Σύνδεσης", + "Username" : "Όνομα χρήστη", "Create" : "Δημιουργία", "Admin Recovery Password" : "Κωδικός Επαναφοράς Διαχειριστή ", "Enter the recovery password in order to recover the users files during password change" : "Εισάγετε το συνθηματικό ανάκτησης ώστε να ανακτήσετε τα αρχεία χρηστών κατά την αλλαγή συνθηματικού", - "Search Users and Groups" : "Αναζήτηση Χρηστών και Ομάδων", "Add Group" : "Προσθήκη Ομάδας", "Group" : "Ομάδα", "Everyone" : "Όλοι", @@ -226,7 +225,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Παρακαλώ εισάγετε επιτρεπόμενα μερίδια αποθηκευτικού χώρου (π.χ. \"512 MB\" ή \"12 GB\")", "Unlimited" : "Απεριόριστο", "Other" : "Άλλο", - "Username" : "Όνομα χρήστη", "Quota" : "Σύνολο Χώρου", "Storage Location" : "Τοποθεσία αποθηκευτικού χώρου", "Last Login" : "Τελευταία Σύνδεση", diff --git a/settings/l10n/el.json b/settings/l10n/el.json index ffd24abff2d..258846d9be3 100644 --- a/settings/l10n/el.json +++ b/settings/l10n/el.json @@ -1,4 +1,5 @@ { "translations": { + "Security & Setup Warnings" : "Προειδοποιήσεις ασφάλειας & ρυθμίσεων", "Cron" : "Cron", "Sharing" : "Διαμοιρασμός", "Security" : "Ασφάλεια", @@ -114,7 +115,6 @@ "Locale not working" : "Η μετάφραση δεν δουλεύει", "System locale can not be set to a one which supports UTF-8." : "Οι ρυθμίσεις τοποθεσίας συστήματος δεν μπορούν να οριστούν σε κάποιες που δεν υποστηρίζουν UTF-8.", "This means that there might be problems with certain characters in file names." : "Αυτό σημαίνει ότι μπορεί να υπάρχουν προβλήματα με κάποιους χαρακτήρες στα ονόματα αρχείων.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Συνιστούμε σοβαρά να εγκαταστήσετε τα απαιτούμενα πακέτα στο σύστημά σας ώστε να υποστηρίζεται μια από τις ακόλουθες ρυθμίσεις τοποθεσίας: %s.", "URL generation in notification emails" : "Δημιουργία URL στις ειδοποιήσεις ηλεκτρονικού ταχυδρομείου", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Αν η εγκατάστασή σας δεν είναι εγκατεστημένη στη ρίζα της περιοχής και χρησιμοποιεί το cron του συστήματος, μπορεί να υπάρξουν ζητήματα με τη δημιουργία URL. Για να αποφύγετε αυτά τα προβλήματα, παρακαλώ ρυθμίστε την επιλογή \"overwritewebroot\" στον config.php φάκελό σας στη διαδρομή webroot της εγκατάστασής σας (Suggested: \"%s\")", "No problems found" : "Δεν βρέθηκαν προβλήματα", @@ -211,11 +211,10 @@ "Delete Encryption Keys" : "Διαγραφή κλειδιών κρυπτογράφησης", "Show storage location" : "Εμφάνιση τοποθεσίας αποθήκευσης", "Show last log in" : "Εμφάνιση τελευταίας εισόδου", - "Login Name" : "Όνομα Σύνδεσης", + "Username" : "Όνομα χρήστη", "Create" : "Δημιουργία", "Admin Recovery Password" : "Κωδικός Επαναφοράς Διαχειριστή ", "Enter the recovery password in order to recover the users files during password change" : "Εισάγετε το συνθηματικό ανάκτησης ώστε να ανακτήσετε τα αρχεία χρηστών κατά την αλλαγή συνθηματικού", - "Search Users and Groups" : "Αναζήτηση Χρηστών και Ομάδων", "Add Group" : "Προσθήκη Ομάδας", "Group" : "Ομάδα", "Everyone" : "Όλοι", @@ -224,7 +223,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Παρακαλώ εισάγετε επιτρεπόμενα μερίδια αποθηκευτικού χώρου (π.χ. \"512 MB\" ή \"12 GB\")", "Unlimited" : "Απεριόριστο", "Other" : "Άλλο", - "Username" : "Όνομα χρήστη", "Quota" : "Σύνολο Χώρου", "Storage Location" : "Τοποθεσία αποθηκευτικού χώρου", "Last Login" : "Τελευταία Σύνδεση", diff --git a/settings/l10n/en_GB.js b/settings/l10n/en_GB.js index a4a9af22b39..f33ccbcfdce 100644 --- a/settings/l10n/en_GB.js +++ b/settings/l10n/en_GB.js @@ -117,7 +117,7 @@ OC.L10N.register( "Locale not working" : "Locale not working", "System locale can not be set to a one which supports UTF-8." : "System locale can not be set to a one which supports UTF-8.", "This means that there might be problems with certain characters in file names." : "This means that there might be problems with certain characters in file names.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "We strongly suggest installing the required packages on your system to support one of the following locales: %s.", + "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "We strongly suggest installing the required packages on your system to support one of the following locales: %s.", "URL generation in notification emails" : "URL generation in notification emails", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")", "Connectivity Checks" : "Connectivity Checks", @@ -144,6 +144,8 @@ OC.L10N.register( "These groups will still be able to receive shares, but not to initiate them." : "These groups will still be able to receive shares, but not to initiate them.", "Enforce HTTPS" : "Enforce HTTPS", "Forces the clients to connect to %s via an encrypted connection." : "Forces the clients to connect to %s via an encrypted connection.", + "Enforce HTTPS for subdomains" : "Enforce HTTPS for subdomains", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Forces the clients to connect to %s and subdomains via an encrypted connection.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Please connect to your %s via HTTPS to enable or disable the SSL enforcement.", "This is used for sending out notifications." : "This is used for sending out notifications.", "Send mode" : "Send mode", @@ -216,11 +218,11 @@ OC.L10N.register( "Delete Encryption Keys" : "Delete Encryption Keys", "Show storage location" : "Show storage location", "Show last log in" : "Show last log in", - "Login Name" : "Login Name", + "Username" : "Username", "Create" : "Create", "Admin Recovery Password" : "Admin Recovery Password", "Enter the recovery password in order to recover the users files during password change" : "Enter the recovery password in order to recover the user's files during password change", - "Search Users and Groups" : "Search Users and Groups", + "Search Users" : "Search Users", "Add Group" : "Add Group", "Group" : "Group", "Everyone" : "Everyone", @@ -229,7 +231,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Please enter storage quota (e.g. \"512 MB\" or \"12 GB\")", "Unlimited" : "Unlimited", "Other" : "Other", - "Username" : "Username", "Group Admin for" : "Group Admin for", "Quota" : "Quota", "Storage Location" : "Storage Location", diff --git a/settings/l10n/en_GB.json b/settings/l10n/en_GB.json index b7dca2c7b0f..5ad52ed5b56 100644 --- a/settings/l10n/en_GB.json +++ b/settings/l10n/en_GB.json @@ -115,7 +115,7 @@ "Locale not working" : "Locale not working", "System locale can not be set to a one which supports UTF-8." : "System locale can not be set to a one which supports UTF-8.", "This means that there might be problems with certain characters in file names." : "This means that there might be problems with certain characters in file names.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "We strongly suggest installing the required packages on your system to support one of the following locales: %s.", + "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "We strongly suggest installing the required packages on your system to support one of the following locales: %s.", "URL generation in notification emails" : "URL generation in notification emails", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")", "Connectivity Checks" : "Connectivity Checks", @@ -142,6 +142,8 @@ "These groups will still be able to receive shares, but not to initiate them." : "These groups will still be able to receive shares, but not to initiate them.", "Enforce HTTPS" : "Enforce HTTPS", "Forces the clients to connect to %s via an encrypted connection." : "Forces the clients to connect to %s via an encrypted connection.", + "Enforce HTTPS for subdomains" : "Enforce HTTPS for subdomains", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Forces the clients to connect to %s and subdomains via an encrypted connection.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Please connect to your %s via HTTPS to enable or disable the SSL enforcement.", "This is used for sending out notifications." : "This is used for sending out notifications.", "Send mode" : "Send mode", @@ -214,11 +216,11 @@ "Delete Encryption Keys" : "Delete Encryption Keys", "Show storage location" : "Show storage location", "Show last log in" : "Show last log in", - "Login Name" : "Login Name", + "Username" : "Username", "Create" : "Create", "Admin Recovery Password" : "Admin Recovery Password", "Enter the recovery password in order to recover the users files during password change" : "Enter the recovery password in order to recover the user's files during password change", - "Search Users and Groups" : "Search Users and Groups", + "Search Users" : "Search Users", "Add Group" : "Add Group", "Group" : "Group", "Everyone" : "Everyone", @@ -227,7 +229,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Please enter storage quota (e.g. \"512 MB\" or \"12 GB\")", "Unlimited" : "Unlimited", "Other" : "Other", - "Username" : "Username", "Group Admin for" : "Group Admin for", "Quota" : "Quota", "Storage Location" : "Storage Location", diff --git a/settings/l10n/eo.js b/settings/l10n/eo.js index 5e6f2168e22..ff757ce143c 100644 --- a/settings/l10n/eo.js +++ b/settings/l10n/eo.js @@ -135,9 +135,8 @@ OC.L10N.register( "Your encryption keys are moved to a backup location. If something went wrong you can restore the keys. Only delete them permanently if you are sure that all files are decrypted correctly." : "Viaj ĉifroklavoj moviĝis al savokopia loko. Se io malsukcesas, vi povas restaŭri la klavojn. Nur forigu ilin porĉiame se vi certas, ke ĉiuj dosieroj malĉifriĝis korekte.", "Restore Encryption Keys" : "Restaŭri ĉifroklavojn", "Delete Encryption Keys" : "Forigi ĉifroklavojn", - "Login Name" : "Ensaluti", + "Username" : "Uzantonomo", "Create" : "Krei", - "Search Users and Groups" : "Serĉi uzantojn kaj grupojn", "Add Group" : "Aldoni grupon", "Group" : "Grupo", "Everyone" : "Ĉiuj", @@ -145,7 +144,6 @@ OC.L10N.register( "Default Quota" : "Defaŭlta kvoto", "Unlimited" : "Senlima", "Other" : "Alia", - "Username" : "Uzantonomo", "Quota" : "Kvoto", "Last Login" : "Lasta ensaluto", "change full name" : "ŝanĝi plenan nomon", diff --git a/settings/l10n/eo.json b/settings/l10n/eo.json index 06872e6d1d0..35af2f7f22f 100644 --- a/settings/l10n/eo.json +++ b/settings/l10n/eo.json @@ -133,9 +133,8 @@ "Your encryption keys are moved to a backup location. If something went wrong you can restore the keys. Only delete them permanently if you are sure that all files are decrypted correctly." : "Viaj ĉifroklavoj moviĝis al savokopia loko. Se io malsukcesas, vi povas restaŭri la klavojn. Nur forigu ilin porĉiame se vi certas, ke ĉiuj dosieroj malĉifriĝis korekte.", "Restore Encryption Keys" : "Restaŭri ĉifroklavojn", "Delete Encryption Keys" : "Forigi ĉifroklavojn", - "Login Name" : "Ensaluti", + "Username" : "Uzantonomo", "Create" : "Krei", - "Search Users and Groups" : "Serĉi uzantojn kaj grupojn", "Add Group" : "Aldoni grupon", "Group" : "Grupo", "Everyone" : "Ĉiuj", @@ -143,7 +142,6 @@ "Default Quota" : "Defaŭlta kvoto", "Unlimited" : "Senlima", "Other" : "Alia", - "Username" : "Uzantonomo", "Quota" : "Kvoto", "Last Login" : "Lasta ensaluto", "change full name" : "ŝanĝi plenan nomon", diff --git a/settings/l10n/es.js b/settings/l10n/es.js index 2a0a03a398d..d49f8116bb7 100644 --- a/settings/l10n/es.js +++ b/settings/l10n/es.js @@ -117,9 +117,10 @@ OC.L10N.register( "Locale not working" : "La configuración regional no está funcionando", "System locale can not be set to a one which supports UTF-8." : "No se puede escoger una configuración regional que soporte UTF-8.", "This means that there might be problems with certain characters in file names." : "Esto significa que puede haber problemas con ciertos caracteres en los nombres de los archivos.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Es muy recomendable instalar los paquetes necesarios para poder soportar una de las siguientes configuraciones regionales: %s. ", + "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Es muy recomendable instalar los paquetes necesarios para poder soportar una de las siguientes configuraciones regionales: %s. ", "URL generation in notification emails" : "Generación de URL en mensajes de notificación", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Si su instalación no está ubicada en la raíz del dominio y usa el cron del sistema, puede haber problemas al generarse los URL. Para evitarlos, configure la opción \"overwritewebroot\" en su archivo config.php para que use la ruta de la raíz del sitio web de su instalación (sugerencia: \"%s\")", + "Connectivity Checks" : "Probar la Conectividad", "No problems found" : "No se han encontrado problemas", "Please double check the <a href='%s'>installation guides</a>." : "Por favor, vuelva a comprobar las <a href='%s'>guías de instalación</a>.", "Last cron was executed at %s." : "Cron fue ejecutado por última vez a las %s.", @@ -143,6 +144,8 @@ OC.L10N.register( "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir contenidos compartidos, pero no podrán, pero no podrán iniciarlos.", "Enforce HTTPS" : "Forzar HTTPS", "Forces the clients to connect to %s via an encrypted connection." : "Forzar a los clientes a conectarse a %s por medio de una conexión cifrada.", + "Enforce HTTPS for subdomains" : "Forzar HTTPS para subdominios", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Obliga a los clientes a conectara %s y subdominios mediante una conexión cifrada.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Por favor, conéctese a su %s a través de HTTPS para habilitar o deshabilitar la aplicación de SSL.", "This is used for sending out notifications." : "Esto se usa para enviar notificaciones.", "Send mode" : "Modo de envío", @@ -215,11 +218,11 @@ OC.L10N.register( "Delete Encryption Keys" : "Eliminar claves de cifrado", "Show storage location" : "Mostrar la ubicación del almacenamiento", "Show last log in" : "Mostrar el último inicio de sesión", - "Login Name" : "Nombre de usuario", + "Username" : "Nombre de usuario", "Create" : "Crear", "Admin Recovery Password" : "Recuperación de la contraseña de administración", "Enter the recovery password in order to recover the users files during password change" : "Introduzca la contraseña de recuperación a fin de recuperar los archivos de los usuarios durante el cambio de contraseña.", - "Search Users and Groups" : "Buscar usuarios y grupos", + "Search Users" : "Buscar usuarios", "Add Group" : "Agregar grupo", "Group" : "Grupo", "Everyone" : "Todos", @@ -228,7 +231,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Por favor indique la cúota de almacenamiento (ej: \"512 MB\" o \"12 GB\")", "Unlimited" : "Ilimitado", "Other" : "Otro", - "Username" : "Nombre de usuario", "Group Admin for" : "Grupo administrador para", "Quota" : "Cuota", "Storage Location" : "Ubicación de almacenamiento", diff --git a/settings/l10n/es.json b/settings/l10n/es.json index 892bb7ab0ba..256e9fa7beb 100644 --- a/settings/l10n/es.json +++ b/settings/l10n/es.json @@ -115,9 +115,10 @@ "Locale not working" : "La configuración regional no está funcionando", "System locale can not be set to a one which supports UTF-8." : "No se puede escoger una configuración regional que soporte UTF-8.", "This means that there might be problems with certain characters in file names." : "Esto significa que puede haber problemas con ciertos caracteres en los nombres de los archivos.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Es muy recomendable instalar los paquetes necesarios para poder soportar una de las siguientes configuraciones regionales: %s. ", + "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Es muy recomendable instalar los paquetes necesarios para poder soportar una de las siguientes configuraciones regionales: %s. ", "URL generation in notification emails" : "Generación de URL en mensajes de notificación", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Si su instalación no está ubicada en la raíz del dominio y usa el cron del sistema, puede haber problemas al generarse los URL. Para evitarlos, configure la opción \"overwritewebroot\" en su archivo config.php para que use la ruta de la raíz del sitio web de su instalación (sugerencia: \"%s\")", + "Connectivity Checks" : "Probar la Conectividad", "No problems found" : "No se han encontrado problemas", "Please double check the <a href='%s'>installation guides</a>." : "Por favor, vuelva a comprobar las <a href='%s'>guías de instalación</a>.", "Last cron was executed at %s." : "Cron fue ejecutado por última vez a las %s.", @@ -141,6 +142,8 @@ "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir contenidos compartidos, pero no podrán, pero no podrán iniciarlos.", "Enforce HTTPS" : "Forzar HTTPS", "Forces the clients to connect to %s via an encrypted connection." : "Forzar a los clientes a conectarse a %s por medio de una conexión cifrada.", + "Enforce HTTPS for subdomains" : "Forzar HTTPS para subdominios", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Obliga a los clientes a conectara %s y subdominios mediante una conexión cifrada.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Por favor, conéctese a su %s a través de HTTPS para habilitar o deshabilitar la aplicación de SSL.", "This is used for sending out notifications." : "Esto se usa para enviar notificaciones.", "Send mode" : "Modo de envío", @@ -213,11 +216,11 @@ "Delete Encryption Keys" : "Eliminar claves de cifrado", "Show storage location" : "Mostrar la ubicación del almacenamiento", "Show last log in" : "Mostrar el último inicio de sesión", - "Login Name" : "Nombre de usuario", + "Username" : "Nombre de usuario", "Create" : "Crear", "Admin Recovery Password" : "Recuperación de la contraseña de administración", "Enter the recovery password in order to recover the users files during password change" : "Introduzca la contraseña de recuperación a fin de recuperar los archivos de los usuarios durante el cambio de contraseña.", - "Search Users and Groups" : "Buscar usuarios y grupos", + "Search Users" : "Buscar usuarios", "Add Group" : "Agregar grupo", "Group" : "Grupo", "Everyone" : "Todos", @@ -226,7 +229,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Por favor indique la cúota de almacenamiento (ej: \"512 MB\" o \"12 GB\")", "Unlimited" : "Ilimitado", "Other" : "Otro", - "Username" : "Nombre de usuario", "Group Admin for" : "Grupo administrador para", "Quota" : "Cuota", "Storage Location" : "Ubicación de almacenamiento", diff --git a/settings/l10n/es_AR.js b/settings/l10n/es_AR.js index 40b019f5c64..058acf4e9ad 100644 --- a/settings/l10n/es_AR.js +++ b/settings/l10n/es_AR.js @@ -85,7 +85,6 @@ OC.L10N.register( "Locale not working" : "\"Locale\" no está funcionando", "System locale can not be set to a one which supports UTF-8." : "La localización del sistema no puede cambiarse a una que soporta UTF-8", "This means that there might be problems with certain characters in file names." : "Esto significa que puede haber problemas con ciertos caracteres en los nombres de archivos.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Se sugiere fuertemente instalar los paquetes requeridos en su sistema para soportar uno de las siguientes localizaciones: %s.", "Please double check the <a href='%s'>installation guides</a>." : "Por favor, comprobá nuevamente la <a href='%s'>guía de instalación</a>.", "Execute one task with each page loaded" : "Ejecutá una tarea con cada pagina cargada.", "cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php está registrado en el servicio webcron para llamarlo cada 15 minutos usando http.", @@ -149,7 +148,7 @@ OC.L10N.register( "The encryption app is no longer enabled, please decrypt all your files" : "La aplicación de encriptación ya no está habilidata, por favor desencripte todos sus archivos.", "Log-in password" : "Clave de acceso", "Decrypt all Files" : "Desencriptar todos los archivos", - "Login Name" : "Nombre de Usuario", + "Username" : "Nombre de usuario", "Create" : "Crear", "Admin Recovery Password" : "Recuperación de contraseña de administrador", "Enter the recovery password in order to recover the users files during password change" : "Ingresá la contraseña de recuperación para recuperar los archivos de usuario al cambiar contraseña", @@ -158,7 +157,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Por favor ingrese la cuota de almacenamiento (ej.: \"512 MB\" o \"12 GB\")", "Unlimited" : "Ilimitado", "Other" : "Otros", - "Username" : "Nombre de usuario", "Quota" : "Cuota", "change full name" : "Cambiar nombre completo", "set new password" : "Configurar nueva contraseña", diff --git a/settings/l10n/es_AR.json b/settings/l10n/es_AR.json index a175d140958..3ac7316db00 100644 --- a/settings/l10n/es_AR.json +++ b/settings/l10n/es_AR.json @@ -83,7 +83,6 @@ "Locale not working" : "\"Locale\" no está funcionando", "System locale can not be set to a one which supports UTF-8." : "La localización del sistema no puede cambiarse a una que soporta UTF-8", "This means that there might be problems with certain characters in file names." : "Esto significa que puede haber problemas con ciertos caracteres en los nombres de archivos.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Se sugiere fuertemente instalar los paquetes requeridos en su sistema para soportar uno de las siguientes localizaciones: %s.", "Please double check the <a href='%s'>installation guides</a>." : "Por favor, comprobá nuevamente la <a href='%s'>guía de instalación</a>.", "Execute one task with each page loaded" : "Ejecutá una tarea con cada pagina cargada.", "cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php está registrado en el servicio webcron para llamarlo cada 15 minutos usando http.", @@ -147,7 +146,7 @@ "The encryption app is no longer enabled, please decrypt all your files" : "La aplicación de encriptación ya no está habilidata, por favor desencripte todos sus archivos.", "Log-in password" : "Clave de acceso", "Decrypt all Files" : "Desencriptar todos los archivos", - "Login Name" : "Nombre de Usuario", + "Username" : "Nombre de usuario", "Create" : "Crear", "Admin Recovery Password" : "Recuperación de contraseña de administrador", "Enter the recovery password in order to recover the users files during password change" : "Ingresá la contraseña de recuperación para recuperar los archivos de usuario al cambiar contraseña", @@ -156,7 +155,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Por favor ingrese la cuota de almacenamiento (ej.: \"512 MB\" o \"12 GB\")", "Unlimited" : "Ilimitado", "Other" : "Otros", - "Username" : "Nombre de usuario", "Quota" : "Cuota", "change full name" : "Cambiar nombre completo", "set new password" : "Configurar nueva contraseña", diff --git a/settings/l10n/es_MX.js b/settings/l10n/es_MX.js index 3d117c76eef..c91d1cf742e 100644 --- a/settings/l10n/es_MX.js +++ b/settings/l10n/es_MX.js @@ -68,7 +68,6 @@ OC.L10N.register( "Locale not working" : "La configuración regional no está funcionando", "System locale can not be set to a one which supports UTF-8." : "No se puede escoger una configuración regional que soporte UTF-8.", "This means that there might be problems with certain characters in file names." : "Esto significa que puede haber problemas con ciertos caracteres en los nombres de los archivos.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Es muy recomendable instalar los paquetes necesarios para poder soportar una de las siguientes configuraciones regionales: %s. ", "Please double check the <a href='%s'>installation guides</a>." : "Por favor, vuelva a comprobar las <a href='%s'>guías de instalación</a>.", "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", "cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php se registra en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP.", @@ -118,14 +117,13 @@ OC.L10N.register( "The encryption app is no longer enabled, please decrypt all your files" : "La aplicación de cifrado ya no está activada, descifre todos sus archivos", "Log-in password" : "Contraseña de acceso", "Decrypt all Files" : "Descifrar archivos", - "Login Name" : "Nombre de usuario", + "Username" : "Nombre de usuario", "Create" : "Crear", "Admin Recovery Password" : "Recuperación de la contraseña de administración", "Enter the recovery password in order to recover the users files during password change" : "Introduzca la contraseña de recuperación a fin de recuperar los archivos de los usuarios durante el cambio de contraseña.", "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Por favor indique la cúota de almacenamiento (ej: \"512 MB\" o \"12 GB\")", "Unlimited" : "Ilimitado", "Other" : "Otro", - "Username" : "Nombre de usuario", "change full name" : "cambiar el nombre completo", "set new password" : "establecer nueva contraseña", "Default" : "Predeterminado" diff --git a/settings/l10n/es_MX.json b/settings/l10n/es_MX.json index 6f8de71f433..0d7969e3a5a 100644 --- a/settings/l10n/es_MX.json +++ b/settings/l10n/es_MX.json @@ -66,7 +66,6 @@ "Locale not working" : "La configuración regional no está funcionando", "System locale can not be set to a one which supports UTF-8." : "No se puede escoger una configuración regional que soporte UTF-8.", "This means that there might be problems with certain characters in file names." : "Esto significa que puede haber problemas con ciertos caracteres en los nombres de los archivos.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Es muy recomendable instalar los paquetes necesarios para poder soportar una de las siguientes configuraciones regionales: %s. ", "Please double check the <a href='%s'>installation guides</a>." : "Por favor, vuelva a comprobar las <a href='%s'>guías de instalación</a>.", "Execute one task with each page loaded" : "Ejecutar una tarea con cada página cargada", "cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php se registra en un servicio webcron para llamar a cron.php cada 15 minutos a través de HTTP.", @@ -116,14 +115,13 @@ "The encryption app is no longer enabled, please decrypt all your files" : "La aplicación de cifrado ya no está activada, descifre todos sus archivos", "Log-in password" : "Contraseña de acceso", "Decrypt all Files" : "Descifrar archivos", - "Login Name" : "Nombre de usuario", + "Username" : "Nombre de usuario", "Create" : "Crear", "Admin Recovery Password" : "Recuperación de la contraseña de administración", "Enter the recovery password in order to recover the users files during password change" : "Introduzca la contraseña de recuperación a fin de recuperar los archivos de los usuarios durante el cambio de contraseña.", "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Por favor indique la cúota de almacenamiento (ej: \"512 MB\" o \"12 GB\")", "Unlimited" : "Ilimitado", "Other" : "Otro", - "Username" : "Nombre de usuario", "change full name" : "cambiar el nombre completo", "set new password" : "establecer nueva contraseña", "Default" : "Predeterminado" diff --git a/settings/l10n/et_EE.js b/settings/l10n/et_EE.js index f19283c5736..a294c7c5ab5 100644 --- a/settings/l10n/et_EE.js +++ b/settings/l10n/et_EE.js @@ -117,7 +117,6 @@ OC.L10N.register( "Locale not working" : "Lokalisatsioon ei toimi", "System locale can not be set to a one which supports UTF-8." : "Süsteemi lokaliseeringuks ei saa panna sellist, mis toetab UTF-8-t.", "This means that there might be problems with certain characters in file names." : "See tähendab, et võib esineda probleeme failide nimedes mõnede sümbolitega.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Soovitame tungivalt paigaldada vajalikud paketid oma süsteemi tagamaks tuge järgmistele lokaliseeringutele: %s.", "URL generation in notification emails" : "URL-ide loomine teavituskirjades", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Kui sinu sait pole paigaldatud domeeni juurkausta ja see kasutab ajastatud tegevusi, siis võib tekkide probleeme URL-ide loomisega. Nende probleemide vältimiseks sisesta palun failis config.php valikusse \"overwritewebroot\" oma veebiserveri juurkaust (Soovituslik: \"%s\")", "Connectivity Checks" : "Ühenduse kontrollid", @@ -144,6 +143,8 @@ OC.L10N.register( "These groups will still be able to receive shares, but not to initiate them." : "Need grupid saavad vastu võtta jagamisi, kuid ise jagamisi algatada ei saa.", "Enforce HTTPS" : "Sunni peale HTTPS-i kasutamine", "Forces the clients to connect to %s via an encrypted connection." : "Sunnib kliente %s ühenduma krüpteeritult.", + "Enforce HTTPS for subdomains" : "Sunni peale HTTPS-i kasutamine", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Sunnib kliente ühenduma domeeniga %s ja selle alamdomeenidega krüpteeritult.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Palun ühendu oma %s üle HTTPS või keela SSL kasutamine.", "This is used for sending out notifications." : "Seda kasutatakse teadete välja saatmiseks.", "Send mode" : "Saatmise viis", @@ -216,11 +217,10 @@ OC.L10N.register( "Delete Encryption Keys" : "Kustuta krüpteerimisvõtmed", "Show storage location" : "Näita salvestusruumi asukohta", "Show last log in" : "Viimane sisselogimine", - "Login Name" : "Kasutajanimi", + "Username" : "Kasutajanimi", "Create" : "Lisa", "Admin Recovery Password" : "Admini parooli taastamine", "Enter the recovery password in order to recover the users files during password change" : "Sisesta taasteparool kasutaja failide taastamiseks paroolivahetuse käigus", - "Search Users and Groups" : "Otsi kasutajaid ja gruppe", "Add Group" : "Lisa grupp", "Group" : "Grupp", "Everyone" : "Igaüks", @@ -229,7 +229,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Palun sisesta mahupiir (nt: \"512 MB\" või \"12 GB\")", "Unlimited" : "Piiramatult", "Other" : "Muu", - "Username" : "Kasutajanimi", "Group Admin for" : "Grupi admin", "Quota" : "Mahupiir", "Storage Location" : "Mahu asukoht", diff --git a/settings/l10n/et_EE.json b/settings/l10n/et_EE.json index b8390b7eac2..8582084d420 100644 --- a/settings/l10n/et_EE.json +++ b/settings/l10n/et_EE.json @@ -115,7 +115,6 @@ "Locale not working" : "Lokalisatsioon ei toimi", "System locale can not be set to a one which supports UTF-8." : "Süsteemi lokaliseeringuks ei saa panna sellist, mis toetab UTF-8-t.", "This means that there might be problems with certain characters in file names." : "See tähendab, et võib esineda probleeme failide nimedes mõnede sümbolitega.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Soovitame tungivalt paigaldada vajalikud paketid oma süsteemi tagamaks tuge järgmistele lokaliseeringutele: %s.", "URL generation in notification emails" : "URL-ide loomine teavituskirjades", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Kui sinu sait pole paigaldatud domeeni juurkausta ja see kasutab ajastatud tegevusi, siis võib tekkide probleeme URL-ide loomisega. Nende probleemide vältimiseks sisesta palun failis config.php valikusse \"overwritewebroot\" oma veebiserveri juurkaust (Soovituslik: \"%s\")", "Connectivity Checks" : "Ühenduse kontrollid", @@ -142,6 +141,8 @@ "These groups will still be able to receive shares, but not to initiate them." : "Need grupid saavad vastu võtta jagamisi, kuid ise jagamisi algatada ei saa.", "Enforce HTTPS" : "Sunni peale HTTPS-i kasutamine", "Forces the clients to connect to %s via an encrypted connection." : "Sunnib kliente %s ühenduma krüpteeritult.", + "Enforce HTTPS for subdomains" : "Sunni peale HTTPS-i kasutamine", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Sunnib kliente ühenduma domeeniga %s ja selle alamdomeenidega krüpteeritult.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Palun ühendu oma %s üle HTTPS või keela SSL kasutamine.", "This is used for sending out notifications." : "Seda kasutatakse teadete välja saatmiseks.", "Send mode" : "Saatmise viis", @@ -214,11 +215,10 @@ "Delete Encryption Keys" : "Kustuta krüpteerimisvõtmed", "Show storage location" : "Näita salvestusruumi asukohta", "Show last log in" : "Viimane sisselogimine", - "Login Name" : "Kasutajanimi", + "Username" : "Kasutajanimi", "Create" : "Lisa", "Admin Recovery Password" : "Admini parooli taastamine", "Enter the recovery password in order to recover the users files during password change" : "Sisesta taasteparool kasutaja failide taastamiseks paroolivahetuse käigus", - "Search Users and Groups" : "Otsi kasutajaid ja gruppe", "Add Group" : "Lisa grupp", "Group" : "Grupp", "Everyone" : "Igaüks", @@ -227,7 +227,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Palun sisesta mahupiir (nt: \"512 MB\" või \"12 GB\")", "Unlimited" : "Piiramatult", "Other" : "Muu", - "Username" : "Kasutajanimi", "Group Admin for" : "Grupi admin", "Quota" : "Mahupiir", "Storage Location" : "Mahu asukoht", diff --git a/settings/l10n/eu.js b/settings/l10n/eu.js index bbf11f15ac8..b56cdeaef72 100644 --- a/settings/l10n/eu.js +++ b/settings/l10n/eu.js @@ -115,7 +115,6 @@ OC.L10N.register( "Locale not working" : "Lokala ez dabil", "System locale can not be set to a one which supports UTF-8." : "Eskualdeko ezarpena ezin da UTF-8 onartzen duen batera ezarri.", "This means that there might be problems with certain characters in file names." : "Honek esan nahi du fitxategien izenetako karaktere batzuekin arazoak egon daitezkeela.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Biziki gomendatzen dizugu beharrezkoak diren paketea zure sisteman instalatzea honi euskarria eman ahal izateko: %s.", "URL generation in notification emails" : "URL sorrera jakinarazpen mezuetan", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Zure instalazioa ez badago domeinuaren sustraian egina eta erabiltzen badu sistemaren cron-a, arazoak izan daitezke URL sorreran. Arazo horiek saihesteko ezarri \"overwritewebroot\" opzioa zure config.php fitxategian zure instalazioaren webroot bidera (Proposatua: \"%s\")", "No problems found" : "Ez da problemarik aurkitu", @@ -209,11 +208,10 @@ OC.L10N.register( "Delete Encryption Keys" : "Ezabatu enkriptatze gakoak", "Show storage location" : "Erakutsi biltegiaren kokapena", "Show last log in" : "Erakutsi azkeneko saio hasiera", - "Login Name" : "Sarrera Izena", + "Username" : "Erabiltzaile izena", "Create" : "Sortu", "Admin Recovery Password" : "Administratzailearen pasahitza berreskuratzea", "Enter the recovery password in order to recover the users files during password change" : "Berreskuratze pasahitza idatzi pasahitz aldaketan erabiltzaileen fitxategiak berreskuratzeko", - "Search Users and Groups" : "Bilatu erabiltzaileak eta taldeak", "Add Group" : "Gehitu taldea", "Group" : "Taldea", "Everyone" : "Edonor", @@ -222,7 +220,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Mesedez sartu biltegiratze kouta (adb: \"512 MB\" edo \"12 GB\")", "Unlimited" : "Mugarik gabe", "Other" : "Bestelakoa", - "Username" : "Erabiltzaile izena", "Quota" : "Kuota", "Storage Location" : "Biltegiaren kokapena", "Last Login" : "Azken saio hasiera", diff --git a/settings/l10n/eu.json b/settings/l10n/eu.json index 5728074bbe4..8d27d47188b 100644 --- a/settings/l10n/eu.json +++ b/settings/l10n/eu.json @@ -113,7 +113,6 @@ "Locale not working" : "Lokala ez dabil", "System locale can not be set to a one which supports UTF-8." : "Eskualdeko ezarpena ezin da UTF-8 onartzen duen batera ezarri.", "This means that there might be problems with certain characters in file names." : "Honek esan nahi du fitxategien izenetako karaktere batzuekin arazoak egon daitezkeela.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Biziki gomendatzen dizugu beharrezkoak diren paketea zure sisteman instalatzea honi euskarria eman ahal izateko: %s.", "URL generation in notification emails" : "URL sorrera jakinarazpen mezuetan", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Zure instalazioa ez badago domeinuaren sustraian egina eta erabiltzen badu sistemaren cron-a, arazoak izan daitezke URL sorreran. Arazo horiek saihesteko ezarri \"overwritewebroot\" opzioa zure config.php fitxategian zure instalazioaren webroot bidera (Proposatua: \"%s\")", "No problems found" : "Ez da problemarik aurkitu", @@ -207,11 +206,10 @@ "Delete Encryption Keys" : "Ezabatu enkriptatze gakoak", "Show storage location" : "Erakutsi biltegiaren kokapena", "Show last log in" : "Erakutsi azkeneko saio hasiera", - "Login Name" : "Sarrera Izena", + "Username" : "Erabiltzaile izena", "Create" : "Sortu", "Admin Recovery Password" : "Administratzailearen pasahitza berreskuratzea", "Enter the recovery password in order to recover the users files during password change" : "Berreskuratze pasahitza idatzi pasahitz aldaketan erabiltzaileen fitxategiak berreskuratzeko", - "Search Users and Groups" : "Bilatu erabiltzaileak eta taldeak", "Add Group" : "Gehitu taldea", "Group" : "Taldea", "Everyone" : "Edonor", @@ -220,7 +218,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Mesedez sartu biltegiratze kouta (adb: \"512 MB\" edo \"12 GB\")", "Unlimited" : "Mugarik gabe", "Other" : "Bestelakoa", - "Username" : "Erabiltzaile izena", "Quota" : "Kuota", "Storage Location" : "Biltegiaren kokapena", "Last Login" : "Azken saio hasiera", diff --git a/settings/l10n/fa.js b/settings/l10n/fa.js index b74bb77e221..624c124888b 100644 --- a/settings/l10n/fa.js +++ b/settings/l10n/fa.js @@ -166,11 +166,10 @@ OC.L10N.register( "Decrypt all Files" : "تمام فایلها رمزگشایی شود", "Restore Encryption Keys" : "بازیابی کلید های رمزگذاری", "Delete Encryption Keys" : "حذف کلید های رمزگذاری", - "Login Name" : "نام کاربری", + "Username" : "نام کاربری", "Create" : "ایجاد کردن", "Admin Recovery Password" : "مدیریت بازیابی رمز عبور", "Enter the recovery password in order to recover the users files during password change" : "در حین تغییر رمز عبور به منظور بازیابی فایل های کاربران، رمز عبور بازیابی را وارد کنید", - "Search Users and Groups" : "جستجوی کاربران و گروه ها", "Add Group" : "افزودن گروه", "Group" : "گروه", "Everyone" : "همه", @@ -179,7 +178,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "لطفا سهمیه ذخیره سازی را وارد کنید (به عنوان مثال: \" 512MB\" یا \"12GB\")", "Unlimited" : "نامحدود", "Other" : "دیگر", - "Username" : "نام کاربری", "Quota" : "سهم", "Storage Location" : "محل فضای ذخیره سازی", "Last Login" : "اخرین ورود", diff --git a/settings/l10n/fa.json b/settings/l10n/fa.json index 134d72baaf7..793551cfe56 100644 --- a/settings/l10n/fa.json +++ b/settings/l10n/fa.json @@ -164,11 +164,10 @@ "Decrypt all Files" : "تمام فایلها رمزگشایی شود", "Restore Encryption Keys" : "بازیابی کلید های رمزگذاری", "Delete Encryption Keys" : "حذف کلید های رمزگذاری", - "Login Name" : "نام کاربری", + "Username" : "نام کاربری", "Create" : "ایجاد کردن", "Admin Recovery Password" : "مدیریت بازیابی رمز عبور", "Enter the recovery password in order to recover the users files during password change" : "در حین تغییر رمز عبور به منظور بازیابی فایل های کاربران، رمز عبور بازیابی را وارد کنید", - "Search Users and Groups" : "جستجوی کاربران و گروه ها", "Add Group" : "افزودن گروه", "Group" : "گروه", "Everyone" : "همه", @@ -177,7 +176,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "لطفا سهمیه ذخیره سازی را وارد کنید (به عنوان مثال: \" 512MB\" یا \"12GB\")", "Unlimited" : "نامحدود", "Other" : "دیگر", - "Username" : "نام کاربری", "Quota" : "سهم", "Storage Location" : "محل فضای ذخیره سازی", "Last Login" : "اخرین ورود", diff --git a/settings/l10n/fi_FI.js b/settings/l10n/fi_FI.js index b0cb951265e..3965f7e9159 100644 --- a/settings/l10n/fi_FI.js +++ b/settings/l10n/fi_FI.js @@ -114,7 +114,7 @@ OC.L10N.register( "Locale not working" : "Maa-asetus ei toimi", "System locale can not be set to a one which supports UTF-8." : "Järjestelmän maa-asetusta ei voi asettaa UTF-8:aa tukevaksi.", "This means that there might be problems with certain characters in file names." : "Tämä tarkoittaa, että tiettyjen merkkien kanssa tiedostojen nimissä saattaa olla ongelmia.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Suosittelemme vahvasti asentamaan vaaditut paketit järjestelmään, jotta jotain seuraavista maa-asetuksista on mahdollista tukea: %s.", + "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Suosittelemme asentamaan vaaditut paketit järjestelmään, jotta järjestelmässä on tuki yhdelle seuraavista maa-asetuksista: %s.", "URL generation in notification emails" : "Verkko-osoitteiden luominen sähköposti-ilmoituksissa", "No problems found" : "Ongelmia ei löytynyt", "Please double check the <a href='%s'>installation guides</a>." : "Lue tarkasti <a href='%s'>asennusohjeet</a>.", @@ -126,6 +126,7 @@ OC.L10N.register( "Use system's cron service to call the cron.php file every 15 minutes." : "Käytä järjestelmän cron-palvelua cron.php-tiedoston kutsumista varten 15 minuutin välein.", "Allow apps to use the Share API" : "Salli sovellusten käyttää jakamisen ohjelmointirajapintaa", "Allow users to share via link" : "Salli käyttäjien jakaa linkkien kautta", + "Enforce password protection" : "Pakota salasanasuojaus", "Allow public uploads" : "Salli julkiset lähetykset", "Set default expiration date" : "Aseta oletusvanhenemispäivä", "Expire after " : "Vanhenna", @@ -138,6 +139,8 @@ OC.L10N.register( "These groups will still be able to receive shares, but not to initiate them." : "Nämä ryhmät kykenevät vastaanottamaan jakoja, mutta eivät kuitenkaan itse pysty luoda jakoja.", "Enforce HTTPS" : "Pakota HTTPS", "Forces the clients to connect to %s via an encrypted connection." : "Pakottaa asiakasohjelmistot ottamaan yhteyden %siin salatun yhteyden kautta.", + "Enforce HTTPS for subdomains" : "Pakota HTTPS-suojaus alidomaineille", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Pakottaa asiakkaat yhdistämään kohteeseen %s ja sen alidomaineihin salattua yhteyttä käyttäen.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Yhdistä %siin HTTPS-yhteydellä ottaaksesi käyttöön tai poistaaksesi käytöstä SSL-pakotteen.", "This is used for sending out notifications." : "Tätä käytetään ilmoitusten lähettämiseen.", "Send mode" : "Lähetystila", @@ -208,10 +211,10 @@ OC.L10N.register( "Delete Encryption Keys" : "Poista salausavaimet", "Show storage location" : "Näytä tallennustilan sijainti", "Show last log in" : "Näytä viimeisin sisäänkirjautuminen", - "Login Name" : "Kirjautumisnimi", + "Username" : "Käyttäjätunnus", "Create" : "Luo", "Admin Recovery Password" : "Ylläpitäjän palautussalasana", - "Search Users and Groups" : "Etsi käyttäjiä ja ryhmiä", + "Search Users" : "Etsi käyttäjiä", "Add Group" : "Lisää ryhmä", "Group" : "Ryhmä", "Everyone" : "Kaikki", @@ -220,7 +223,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Määritä tallennustilan kiintiö (esim. \"512 MB\" tai \"12 GB\")", "Unlimited" : "Rajoittamaton", "Other" : "Muu", - "Username" : "Käyttäjätunnus", "Group Admin for" : "Ryhmäylläpitäjä kohteille", "Quota" : "Kiintiö", "Storage Location" : "Tallennustilan sijainti", diff --git a/settings/l10n/fi_FI.json b/settings/l10n/fi_FI.json index 727e70de42a..4fc99b5fdf3 100644 --- a/settings/l10n/fi_FI.json +++ b/settings/l10n/fi_FI.json @@ -112,7 +112,7 @@ "Locale not working" : "Maa-asetus ei toimi", "System locale can not be set to a one which supports UTF-8." : "Järjestelmän maa-asetusta ei voi asettaa UTF-8:aa tukevaksi.", "This means that there might be problems with certain characters in file names." : "Tämä tarkoittaa, että tiettyjen merkkien kanssa tiedostojen nimissä saattaa olla ongelmia.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Suosittelemme vahvasti asentamaan vaaditut paketit järjestelmään, jotta jotain seuraavista maa-asetuksista on mahdollista tukea: %s.", + "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Suosittelemme asentamaan vaaditut paketit järjestelmään, jotta järjestelmässä on tuki yhdelle seuraavista maa-asetuksista: %s.", "URL generation in notification emails" : "Verkko-osoitteiden luominen sähköposti-ilmoituksissa", "No problems found" : "Ongelmia ei löytynyt", "Please double check the <a href='%s'>installation guides</a>." : "Lue tarkasti <a href='%s'>asennusohjeet</a>.", @@ -124,6 +124,7 @@ "Use system's cron service to call the cron.php file every 15 minutes." : "Käytä järjestelmän cron-palvelua cron.php-tiedoston kutsumista varten 15 minuutin välein.", "Allow apps to use the Share API" : "Salli sovellusten käyttää jakamisen ohjelmointirajapintaa", "Allow users to share via link" : "Salli käyttäjien jakaa linkkien kautta", + "Enforce password protection" : "Pakota salasanasuojaus", "Allow public uploads" : "Salli julkiset lähetykset", "Set default expiration date" : "Aseta oletusvanhenemispäivä", "Expire after " : "Vanhenna", @@ -136,6 +137,8 @@ "These groups will still be able to receive shares, but not to initiate them." : "Nämä ryhmät kykenevät vastaanottamaan jakoja, mutta eivät kuitenkaan itse pysty luoda jakoja.", "Enforce HTTPS" : "Pakota HTTPS", "Forces the clients to connect to %s via an encrypted connection." : "Pakottaa asiakasohjelmistot ottamaan yhteyden %siin salatun yhteyden kautta.", + "Enforce HTTPS for subdomains" : "Pakota HTTPS-suojaus alidomaineille", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Pakottaa asiakkaat yhdistämään kohteeseen %s ja sen alidomaineihin salattua yhteyttä käyttäen.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Yhdistä %siin HTTPS-yhteydellä ottaaksesi käyttöön tai poistaaksesi käytöstä SSL-pakotteen.", "This is used for sending out notifications." : "Tätä käytetään ilmoitusten lähettämiseen.", "Send mode" : "Lähetystila", @@ -206,10 +209,10 @@ "Delete Encryption Keys" : "Poista salausavaimet", "Show storage location" : "Näytä tallennustilan sijainti", "Show last log in" : "Näytä viimeisin sisäänkirjautuminen", - "Login Name" : "Kirjautumisnimi", + "Username" : "Käyttäjätunnus", "Create" : "Luo", "Admin Recovery Password" : "Ylläpitäjän palautussalasana", - "Search Users and Groups" : "Etsi käyttäjiä ja ryhmiä", + "Search Users" : "Etsi käyttäjiä", "Add Group" : "Lisää ryhmä", "Group" : "Ryhmä", "Everyone" : "Kaikki", @@ -218,7 +221,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Määritä tallennustilan kiintiö (esim. \"512 MB\" tai \"12 GB\")", "Unlimited" : "Rajoittamaton", "Other" : "Muu", - "Username" : "Käyttäjätunnus", "Group Admin for" : "Ryhmäylläpitäjä kohteille", "Quota" : "Kiintiö", "Storage Location" : "Tallennustilan sijainti", diff --git a/settings/l10n/fr.js b/settings/l10n/fr.js index dee21d78e0f..816b9e88565 100644 --- a/settings/l10n/fr.js +++ b/settings/l10n/fr.js @@ -34,7 +34,7 @@ OC.L10N.register( "No user supplied" : "Aucun utilisateur fourni", "Please provide an admin recovery password, otherwise all user data will be lost" : "Veuillez fournir un mot de passe administrateur de récupération de données, sinon toutes les données de l'utilisateur seront perdues", "Wrong admin recovery password. Please check the password and try again." : "Mot de passe administrateur de récupération de données non valable. Veuillez vérifier le mot de passe et essayer à nouveau.", - "Back-end doesn't support password change, but the users encryption key was successfully updated." : "L'infrastructure d'arrière-plan ne supporte pas la modification de mot de passe, mais la clef de chiffrement des utilisateurs a été mise à jour avec succès.", + "Back-end doesn't support password change, but the users encryption key was successfully updated." : "L'infrastructure d'arrière-plan ne permet pas la modification de mot de passe, mais la clef de chiffrement des utilisateurs a été mise à jour avec succès.", "Unable to change password" : "Impossible de modifier le mot de passe", "Enabled" : "Activées", "Not enabled" : "Désactivées", @@ -115,16 +115,16 @@ OC.L10N.register( "PHP charset is not set to UTF-8" : "Le jeu de caractères PHP n'est pas réglé sur UTF-8", "PHP charset is not set to UTF-8. This can cause major issues with non-ASCII characters in file names. We highly recommend to change the value of 'default_charset' php.ini to 'UTF-8'." : "Le jeu de caractères PHP n'est pas réglé sur UTF-8. Ceci peut entraîner des problèmes majeurs avec les noms de fichiers contenant des caractère non-ASCII. Nous recommandons fortement de changer la valeur de 'default_charset' dans php.ini par 'UTF-8'.", "Locale not working" : "Localisation non fonctionnelle", - "System locale can not be set to a one which supports UTF-8." : "Les paramètres régionaux ne peuvent pas être configurés avec un qui supporte UTF-8.", + "System locale can not be set to a one which supports UTF-8." : "Les paramètres régionaux ne peuvent pas être configurés avec prise en charge d'UTF-8.", "This means that there might be problems with certain characters in file names." : "Cela signifie qu'il pourrait y avoir des problèmes avec certains caractères dans les noms de fichier.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Nous conseillons vivement d'installer les paquets requis sur votre système pour supporter l'un des paramètres régionaux suivants : %s.", + "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Nous vous recommandons d'installer sur votre système les paquets requis à la prise en charge de l'un des paramètres régionaux suivants : %s", "URL generation in notification emails" : "Génération d'URL dans les mails de notification", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Si votre installation n'a pas été effectuée à la racine du domaine et qu'elle utilise le cron du système, il peut y avoir des problèmes avec la génération d'URL. Pour les éviter, veuillez configurer l'option \"overwritewebroot\" de votre fichier config.php avec le chemin de la racine de votre installation (suggéré : \"%s\")", "Connectivity Checks" : "Vérification de la connectivité", "No problems found" : "Aucun problème trouvé", "Please double check the <a href='%s'>installation guides</a>." : "Veuillez vous référer au <a href='%s'>guide d'installation</a>.", - "Last cron was executed at %s." : "Le dernier cron s'est exécuté à %s.", - "Last cron was executed at %s. This is more than an hour ago, something seems wrong." : "Le dernier cron s'est exécuté à %s. Cela fait plus d'une heure, quelque chose a du mal se passer.", + "Last cron was executed at %s." : "Le dernier cron s'est exécuté à la date suivante : %s.", + "Last cron was executed at %s. This is more than an hour ago, something seems wrong." : "Le dernier cron s'est exécuté à la date suivante : %s. Cela fait plus d'une heure, quelque chose a du mal se passer.", "Cron was not executed yet!" : "Le cron n'a pas encore été exécuté !", "Execute one task with each page loaded" : "Exécute une tâche à chaque chargement de page", "cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php est enregistré en tant que service webcron pour appeler cron.php toutes les 15 minutes via http.", @@ -144,6 +144,8 @@ OC.L10N.register( "These groups will still be able to receive shares, but not to initiate them." : "Ces groupes ne pourront plus initier de partage, mais ils pourront toujours rejoindre les partages faits par d'autres. ", "Enforce HTTPS" : "Forcer HTTPS", "Forces the clients to connect to %s via an encrypted connection." : "Forcer les clients à se connecter à %s via une connexion chiffrée.", + "Enforce HTTPS for subdomains" : "Forcer HTTPS pour les sous domaines", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Force les clients à se connecter à %s et aux sous domaines via une connexion chiffrée.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Veuillez vous connecter à cette instance %s via HTTPS pour activer ou désactiver SSL.", "This is used for sending out notifications." : "Ceci est utilisé pour l'envoi des notifications.", "Send mode" : "Mode d'envoi", @@ -216,11 +218,11 @@ OC.L10N.register( "Delete Encryption Keys" : "Supprimer les clés de chiffrement", "Show storage location" : "Afficher l'emplacement du stockage", "Show last log in" : "Montrer la dernière identification", - "Login Name" : "Nom d'utilisateur", + "Username" : "Nom d'utilisateur", "Create" : "Créer", "Admin Recovery Password" : "Récupération du mot de passe administrateur", - "Enter the recovery password in order to recover the users files during password change" : "Entrer le mot de passe de récupération dans le but de récupérer les fichiers utilisateurs pendant le changement de mot de passe", - "Search Users and Groups" : "Chercher parmi les utilisateurs et groupes", + "Enter the recovery password in order to recover the users files during password change" : "Entrez le mot de passe de récupération pour récupérer les fichiers utilisateurs pendant le changement de mot de passe", + "Search Users" : "Recherche des utilisateurs", "Add Group" : "Ajouter un groupe", "Group" : "Groupe", "Everyone" : "Tout le monde", @@ -229,7 +231,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Veuillez entrer le quota de stockage (ex. \"512 MB\" ou \"12 GB\")", "Unlimited" : "Illimité", "Other" : "Autre", - "Username" : "Nom d'utilisateur", "Group Admin for" : "Administrateur de groupe pour", "Quota" : "Quota", "Storage Location" : "Emplacement du Stockage", diff --git a/settings/l10n/fr.json b/settings/l10n/fr.json index 40bc023ea1b..1bc80fc4d01 100644 --- a/settings/l10n/fr.json +++ b/settings/l10n/fr.json @@ -32,7 +32,7 @@ "No user supplied" : "Aucun utilisateur fourni", "Please provide an admin recovery password, otherwise all user data will be lost" : "Veuillez fournir un mot de passe administrateur de récupération de données, sinon toutes les données de l'utilisateur seront perdues", "Wrong admin recovery password. Please check the password and try again." : "Mot de passe administrateur de récupération de données non valable. Veuillez vérifier le mot de passe et essayer à nouveau.", - "Back-end doesn't support password change, but the users encryption key was successfully updated." : "L'infrastructure d'arrière-plan ne supporte pas la modification de mot de passe, mais la clef de chiffrement des utilisateurs a été mise à jour avec succès.", + "Back-end doesn't support password change, but the users encryption key was successfully updated." : "L'infrastructure d'arrière-plan ne permet pas la modification de mot de passe, mais la clef de chiffrement des utilisateurs a été mise à jour avec succès.", "Unable to change password" : "Impossible de modifier le mot de passe", "Enabled" : "Activées", "Not enabled" : "Désactivées", @@ -113,16 +113,16 @@ "PHP charset is not set to UTF-8" : "Le jeu de caractères PHP n'est pas réglé sur UTF-8", "PHP charset is not set to UTF-8. This can cause major issues with non-ASCII characters in file names. We highly recommend to change the value of 'default_charset' php.ini to 'UTF-8'." : "Le jeu de caractères PHP n'est pas réglé sur UTF-8. Ceci peut entraîner des problèmes majeurs avec les noms de fichiers contenant des caractère non-ASCII. Nous recommandons fortement de changer la valeur de 'default_charset' dans php.ini par 'UTF-8'.", "Locale not working" : "Localisation non fonctionnelle", - "System locale can not be set to a one which supports UTF-8." : "Les paramètres régionaux ne peuvent pas être configurés avec un qui supporte UTF-8.", + "System locale can not be set to a one which supports UTF-8." : "Les paramètres régionaux ne peuvent pas être configurés avec prise en charge d'UTF-8.", "This means that there might be problems with certain characters in file names." : "Cela signifie qu'il pourrait y avoir des problèmes avec certains caractères dans les noms de fichier.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Nous conseillons vivement d'installer les paquets requis sur votre système pour supporter l'un des paramètres régionaux suivants : %s.", + "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Nous vous recommandons d'installer sur votre système les paquets requis à la prise en charge de l'un des paramètres régionaux suivants : %s", "URL generation in notification emails" : "Génération d'URL dans les mails de notification", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Si votre installation n'a pas été effectuée à la racine du domaine et qu'elle utilise le cron du système, il peut y avoir des problèmes avec la génération d'URL. Pour les éviter, veuillez configurer l'option \"overwritewebroot\" de votre fichier config.php avec le chemin de la racine de votre installation (suggéré : \"%s\")", "Connectivity Checks" : "Vérification de la connectivité", "No problems found" : "Aucun problème trouvé", "Please double check the <a href='%s'>installation guides</a>." : "Veuillez vous référer au <a href='%s'>guide d'installation</a>.", - "Last cron was executed at %s." : "Le dernier cron s'est exécuté à %s.", - "Last cron was executed at %s. This is more than an hour ago, something seems wrong." : "Le dernier cron s'est exécuté à %s. Cela fait plus d'une heure, quelque chose a du mal se passer.", + "Last cron was executed at %s." : "Le dernier cron s'est exécuté à la date suivante : %s.", + "Last cron was executed at %s. This is more than an hour ago, something seems wrong." : "Le dernier cron s'est exécuté à la date suivante : %s. Cela fait plus d'une heure, quelque chose a du mal se passer.", "Cron was not executed yet!" : "Le cron n'a pas encore été exécuté !", "Execute one task with each page loaded" : "Exécute une tâche à chaque chargement de page", "cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php est enregistré en tant que service webcron pour appeler cron.php toutes les 15 minutes via http.", @@ -142,6 +142,8 @@ "These groups will still be able to receive shares, but not to initiate them." : "Ces groupes ne pourront plus initier de partage, mais ils pourront toujours rejoindre les partages faits par d'autres. ", "Enforce HTTPS" : "Forcer HTTPS", "Forces the clients to connect to %s via an encrypted connection." : "Forcer les clients à se connecter à %s via une connexion chiffrée.", + "Enforce HTTPS for subdomains" : "Forcer HTTPS pour les sous domaines", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Force les clients à se connecter à %s et aux sous domaines via une connexion chiffrée.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Veuillez vous connecter à cette instance %s via HTTPS pour activer ou désactiver SSL.", "This is used for sending out notifications." : "Ceci est utilisé pour l'envoi des notifications.", "Send mode" : "Mode d'envoi", @@ -214,11 +216,11 @@ "Delete Encryption Keys" : "Supprimer les clés de chiffrement", "Show storage location" : "Afficher l'emplacement du stockage", "Show last log in" : "Montrer la dernière identification", - "Login Name" : "Nom d'utilisateur", + "Username" : "Nom d'utilisateur", "Create" : "Créer", "Admin Recovery Password" : "Récupération du mot de passe administrateur", - "Enter the recovery password in order to recover the users files during password change" : "Entrer le mot de passe de récupération dans le but de récupérer les fichiers utilisateurs pendant le changement de mot de passe", - "Search Users and Groups" : "Chercher parmi les utilisateurs et groupes", + "Enter the recovery password in order to recover the users files during password change" : "Entrez le mot de passe de récupération pour récupérer les fichiers utilisateurs pendant le changement de mot de passe", + "Search Users" : "Recherche des utilisateurs", "Add Group" : "Ajouter un groupe", "Group" : "Groupe", "Everyone" : "Tout le monde", @@ -227,7 +229,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Veuillez entrer le quota de stockage (ex. \"512 MB\" ou \"12 GB\")", "Unlimited" : "Illimité", "Other" : "Autre", - "Username" : "Nom d'utilisateur", "Group Admin for" : "Administrateur de groupe pour", "Quota" : "Quota", "Storage Location" : "Emplacement du Stockage", diff --git a/settings/l10n/gl.js b/settings/l10n/gl.js index 6baea02501f..9aa4d527e77 100644 --- a/settings/l10n/gl.js +++ b/settings/l10n/gl.js @@ -1,6 +1,7 @@ OC.L10N.register( "settings", { + "Security & Setup Warnings" : "Seguridade & Avisos de configuración", "Cron" : "Cron", "Sharing" : "Compartindo", "Security" : "Seguranza", @@ -36,11 +37,16 @@ OC.L10N.register( "Back-end doesn't support password change, but the users encryption key was successfully updated." : "A infraestrutura non admite o cambio de contrasinal, mais a chave de cifrado dos usuarios foi actualizada correctamente.", "Unable to change password" : "Non é posíbel cambiar o contrasinal", "Enabled" : "Activado", + "Not enabled" : "Non habilitado", + "Recommended" : "Recomendado", "Saved" : "Gardado", "test email settings" : "correo de proba dos axustes", "If you received this email, the settings seem to be correct." : "Se recibiu este correo, semella que a configuración é correcta.", + "A problem occurred while sending the email. Please revise your settings." : "Produciuse un erro mentras enviaba o correo. Por favor revise a súa configuración.", "Email sent" : "Correo enviado", "You need to set your user email before being able to send test emails." : "É necesario configurar o correo do usuario antes de poder enviar mensaxes de correo de proba.", + "Are you really sure you want add \"{domain}\" as trusted domain?" : "Ten certeza de querer engadir \"{domain}\" como dominio de confianza?", + "Add trusted domain" : "Engadir dominio de confianza", "Sending..." : "Enviando...", "All" : "Todo", "Please wait...." : "Agarde...", @@ -60,6 +66,7 @@ OC.L10N.register( "So-so password" : "Contrasinal non moi aló", "Good password" : "Bo contrasinal", "Strong password" : "Contrasinal forte", + "Valid until {date}" : "Válido ate {date}", "Delete" : "Eliminar", "Decrypting files... Please wait, this can take some time." : "Descifrando ficheiros... isto pode levar un anaco.", "Delete encryption keys permanently." : "Eliminar permanentemente as chaves de cifrado.", @@ -70,6 +77,7 @@ OC.L10N.register( "A valid group name must be provided" : "Debe fornecer un nome de grupo", "deleted {groupName}" : "{groupName} foi eliminado", "undo" : "desfacer", + "no group" : "sen grupo", "never" : "nunca", "deleted {userName}" : "{userName} foi eliminado", "add group" : "engadir un grupo", @@ -78,6 +86,7 @@ OC.L10N.register( "A valid password must be provided" : "Debe fornecer un contrasinal", "Warning: Home directory for user \"{user}\" already exists" : "Aviso: O directorio persoal para o usuario «{user}» xa existe", "__language_name__" : "Galego", + "Personal Info" : "Información personal", "SSL root certificates" : "Certificados raíz SSL", "Encryption" : "Cifrado", "Everything (fatal issues, errors, warnings, info, debug)" : "Todo (problemas críticos, erros, avisos, información, depuración)", @@ -108,9 +117,10 @@ OC.L10N.register( "Locale not working" : "A configuración rexional non funciona", "System locale can not be set to a one which supports UTF-8." : "Non é posíbel estabelecer a configuración rexional do sistema a unha que admita UTF-8.", "This means that there might be problems with certain characters in file names." : "Isto significa que pode haber problemas con certos caracteres en nomes de ficheiro.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Recomendamoslle que instale no sistema os paquetes necesarios para admitir unha das seguintes configuracións rexionais: %s.", "URL generation in notification emails" : "Xeración dos URL nos correos de notificación", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Se a instalación non foi feita na raíz do dominio e usa o sistema de cron, poden xurdir problemas coa xeración dos URL. Para evitar estes problemas, axuste a opción «overwritewebroot» no ficheiro config.php ás ruta de webroot da súa instalación (suxírese: «%s»)", + "Connectivity Checks" : "Comprobacións de conectividade", + "No problems found" : "Non se atoparon problemas", "Please double check the <a href='%s'>installation guides</a>." : "Volva comprobar as <a href='%s'>guías de instalación</a>", "Last cron was executed at %s." : "O último «cron» executouse ás %s.", "Last cron was executed at %s. This is more than an hour ago, something seems wrong." : "O último «cron» executouse ás %s. Isto supón que pasou máis dunha hora. polo que semella que algo vai mal.", @@ -145,6 +155,7 @@ OC.L10N.register( "Credentials" : "Credenciais", "SMTP Username" : "Nome de usuario SMTP", "SMTP Password" : "Contrasinal SMTP", + "Store credentials" : "Gardar credenciais", "Test email settings" : "Correo de proba dos axustes", "Send email" : "Enviar o correo", "Log level" : "Nivel de rexistro", @@ -153,10 +164,13 @@ OC.L10N.register( "Version" : "Versión", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." : "Desenvolvido pola <a href=\"http://ownCloud.org/contact\" target=\"_blank\">comunidade ownCloud</a>, o <a href=\"https://github.com/owncloud\" target=\"_blank\">código fonte</a> está baixo a licenza <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", "More apps" : "Máis aplicativos", + "Add your app" : "Engada o seu aplicativo", "by" : "por", + "licensed" : "licencidado", "Documentation:" : "Documentación:", "User Documentation" : "Documentación do usuario", "Admin Documentation" : "Documentación do administrador", + "Update to %s" : "Actualizar a %s", "Enable only for specific groups" : "Activar só para grupos específicos", "Uninstall App" : "Desinstalar unha aplicación", "Administrator Documentation" : "Documentación do administrador", @@ -188,6 +202,10 @@ OC.L10N.register( "Choose as profile image" : "Escolla unha imaxe para o perfil", "Language" : "Idioma", "Help translate" : "Axude na tradución", + "Common Name" : "Nome común", + "Valid until" : "Válido ate", + "Issued By" : "Proporcionado por", + "Valid until %s" : "Válido ate %s", "Import Root Certificate" : "Importar o certificado raíz", "The encryption app is no longer enabled, please decrypt all your files" : "A aplicación de cifrado non está activada, descifre todos os ficheiros", "Log-in password" : "Contrasinal de acceso", @@ -195,11 +213,12 @@ OC.L10N.register( "Your encryption keys are moved to a backup location. If something went wrong you can restore the keys. Only delete them permanently if you are sure that all files are decrypted correctly." : "As chaves de cifrado foron movidas á copia de seguranza. Se ten algún problema pode restaurar as chaves. Elimineas permanentemente só se está seguro de que é posíbel descifrar correctamente todos os ficheiros.", "Restore Encryption Keys" : "Restaurar as chaves de cifrado", "Delete Encryption Keys" : "Eliminar as chaves de cifrado", - "Login Name" : "Nome de acceso", + "Show storage location" : "Mostrar localización de almacenamento", + "Show last log in" : "Mostrar última conexión", + "Username" : "Nome de usuario", "Create" : "Crear", "Admin Recovery Password" : "Contrasinal de recuperación do administrador", "Enter the recovery password in order to recover the users files during password change" : "Introduza o contrasinal de recuperación para recuperar os ficheiros dos usuarios durante o cambio de contrasinal", - "Search Users and Groups" : "Buscar usuarios e grupos", "Add Group" : "Engadir un grupo", "Group" : "Grupo", "Everyone" : "Todos", @@ -208,7 +227,7 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Introduza a cota de almacenamento (p.ex. «512 MB» ou «12 GB»)", "Unlimited" : "Sen límites", "Other" : "Outro", - "Username" : "Nome de usuario", + "Group Admin for" : "Grupo de Admin para", "Quota" : "Cota", "Storage Location" : "Localización do almacenamento", "Last Login" : "Último acceso", diff --git a/settings/l10n/gl.json b/settings/l10n/gl.json index dfc7c123dce..d1d3265b170 100644 --- a/settings/l10n/gl.json +++ b/settings/l10n/gl.json @@ -1,4 +1,5 @@ { "translations": { + "Security & Setup Warnings" : "Seguridade & Avisos de configuración", "Cron" : "Cron", "Sharing" : "Compartindo", "Security" : "Seguranza", @@ -34,11 +35,16 @@ "Back-end doesn't support password change, but the users encryption key was successfully updated." : "A infraestrutura non admite o cambio de contrasinal, mais a chave de cifrado dos usuarios foi actualizada correctamente.", "Unable to change password" : "Non é posíbel cambiar o contrasinal", "Enabled" : "Activado", + "Not enabled" : "Non habilitado", + "Recommended" : "Recomendado", "Saved" : "Gardado", "test email settings" : "correo de proba dos axustes", "If you received this email, the settings seem to be correct." : "Se recibiu este correo, semella que a configuración é correcta.", + "A problem occurred while sending the email. Please revise your settings." : "Produciuse un erro mentras enviaba o correo. Por favor revise a súa configuración.", "Email sent" : "Correo enviado", "You need to set your user email before being able to send test emails." : "É necesario configurar o correo do usuario antes de poder enviar mensaxes de correo de proba.", + "Are you really sure you want add \"{domain}\" as trusted domain?" : "Ten certeza de querer engadir \"{domain}\" como dominio de confianza?", + "Add trusted domain" : "Engadir dominio de confianza", "Sending..." : "Enviando...", "All" : "Todo", "Please wait...." : "Agarde...", @@ -58,6 +64,7 @@ "So-so password" : "Contrasinal non moi aló", "Good password" : "Bo contrasinal", "Strong password" : "Contrasinal forte", + "Valid until {date}" : "Válido ate {date}", "Delete" : "Eliminar", "Decrypting files... Please wait, this can take some time." : "Descifrando ficheiros... isto pode levar un anaco.", "Delete encryption keys permanently." : "Eliminar permanentemente as chaves de cifrado.", @@ -68,6 +75,7 @@ "A valid group name must be provided" : "Debe fornecer un nome de grupo", "deleted {groupName}" : "{groupName} foi eliminado", "undo" : "desfacer", + "no group" : "sen grupo", "never" : "nunca", "deleted {userName}" : "{userName} foi eliminado", "add group" : "engadir un grupo", @@ -76,6 +84,7 @@ "A valid password must be provided" : "Debe fornecer un contrasinal", "Warning: Home directory for user \"{user}\" already exists" : "Aviso: O directorio persoal para o usuario «{user}» xa existe", "__language_name__" : "Galego", + "Personal Info" : "Información personal", "SSL root certificates" : "Certificados raíz SSL", "Encryption" : "Cifrado", "Everything (fatal issues, errors, warnings, info, debug)" : "Todo (problemas críticos, erros, avisos, información, depuración)", @@ -106,9 +115,10 @@ "Locale not working" : "A configuración rexional non funciona", "System locale can not be set to a one which supports UTF-8." : "Non é posíbel estabelecer a configuración rexional do sistema a unha que admita UTF-8.", "This means that there might be problems with certain characters in file names." : "Isto significa que pode haber problemas con certos caracteres en nomes de ficheiro.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Recomendamoslle que instale no sistema os paquetes necesarios para admitir unha das seguintes configuracións rexionais: %s.", "URL generation in notification emails" : "Xeración dos URL nos correos de notificación", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Se a instalación non foi feita na raíz do dominio e usa o sistema de cron, poden xurdir problemas coa xeración dos URL. Para evitar estes problemas, axuste a opción «overwritewebroot» no ficheiro config.php ás ruta de webroot da súa instalación (suxírese: «%s»)", + "Connectivity Checks" : "Comprobacións de conectividade", + "No problems found" : "Non se atoparon problemas", "Please double check the <a href='%s'>installation guides</a>." : "Volva comprobar as <a href='%s'>guías de instalación</a>", "Last cron was executed at %s." : "O último «cron» executouse ás %s.", "Last cron was executed at %s. This is more than an hour ago, something seems wrong." : "O último «cron» executouse ás %s. Isto supón que pasou máis dunha hora. polo que semella que algo vai mal.", @@ -143,6 +153,7 @@ "Credentials" : "Credenciais", "SMTP Username" : "Nome de usuario SMTP", "SMTP Password" : "Contrasinal SMTP", + "Store credentials" : "Gardar credenciais", "Test email settings" : "Correo de proba dos axustes", "Send email" : "Enviar o correo", "Log level" : "Nivel de rexistro", @@ -151,10 +162,13 @@ "Version" : "Versión", "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." : "Desenvolvido pola <a href=\"http://ownCloud.org/contact\" target=\"_blank\">comunidade ownCloud</a>, o <a href=\"https://github.com/owncloud\" target=\"_blank\">código fonte</a> está baixo a licenza <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", "More apps" : "Máis aplicativos", + "Add your app" : "Engada o seu aplicativo", "by" : "por", + "licensed" : "licencidado", "Documentation:" : "Documentación:", "User Documentation" : "Documentación do usuario", "Admin Documentation" : "Documentación do administrador", + "Update to %s" : "Actualizar a %s", "Enable only for specific groups" : "Activar só para grupos específicos", "Uninstall App" : "Desinstalar unha aplicación", "Administrator Documentation" : "Documentación do administrador", @@ -186,6 +200,10 @@ "Choose as profile image" : "Escolla unha imaxe para o perfil", "Language" : "Idioma", "Help translate" : "Axude na tradución", + "Common Name" : "Nome común", + "Valid until" : "Válido ate", + "Issued By" : "Proporcionado por", + "Valid until %s" : "Válido ate %s", "Import Root Certificate" : "Importar o certificado raíz", "The encryption app is no longer enabled, please decrypt all your files" : "A aplicación de cifrado non está activada, descifre todos os ficheiros", "Log-in password" : "Contrasinal de acceso", @@ -193,11 +211,12 @@ "Your encryption keys are moved to a backup location. If something went wrong you can restore the keys. Only delete them permanently if you are sure that all files are decrypted correctly." : "As chaves de cifrado foron movidas á copia de seguranza. Se ten algún problema pode restaurar as chaves. Elimineas permanentemente só se está seguro de que é posíbel descifrar correctamente todos os ficheiros.", "Restore Encryption Keys" : "Restaurar as chaves de cifrado", "Delete Encryption Keys" : "Eliminar as chaves de cifrado", - "Login Name" : "Nome de acceso", + "Show storage location" : "Mostrar localización de almacenamento", + "Show last log in" : "Mostrar última conexión", + "Username" : "Nome de usuario", "Create" : "Crear", "Admin Recovery Password" : "Contrasinal de recuperación do administrador", "Enter the recovery password in order to recover the users files during password change" : "Introduza o contrasinal de recuperación para recuperar os ficheiros dos usuarios durante o cambio de contrasinal", - "Search Users and Groups" : "Buscar usuarios e grupos", "Add Group" : "Engadir un grupo", "Group" : "Grupo", "Everyone" : "Todos", @@ -206,7 +225,7 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Introduza a cota de almacenamento (p.ex. «512 MB» ou «12 GB»)", "Unlimited" : "Sen límites", "Other" : "Outro", - "Username" : "Nome de usuario", + "Group Admin for" : "Grupo de Admin para", "Quota" : "Cota", "Storage Location" : "Localización do almacenamento", "Last Login" : "Último acceso", diff --git a/settings/l10n/he.js b/settings/l10n/he.js index 23c2d6f9d15..72fe1591b13 100644 --- a/settings/l10n/he.js +++ b/settings/l10n/he.js @@ -80,14 +80,13 @@ OC.L10N.register( "Language" : "פה", "Help translate" : "עזרה בתרגום", "Import Root Certificate" : "ייבוא אישור אבטחת שורש", - "Login Name" : "שם כניסה", + "Username" : "שם משתמש", "Create" : "יצירה", "Admin Recovery Password" : "ססמת השחזור של המנהל", "Group" : "קבוצה", "Default Quota" : "מכסת בררת המחדל", "Unlimited" : "ללא הגבלה", "Other" : "אחר", - "Username" : "שם משתמש", "Quota" : "מכסה", "set new password" : "הגדרת ססמה חדשה", "Default" : "בררת מחדל" diff --git a/settings/l10n/he.json b/settings/l10n/he.json index 3acf0e04f67..7f3ac6506e0 100644 --- a/settings/l10n/he.json +++ b/settings/l10n/he.json @@ -78,14 +78,13 @@ "Language" : "פה", "Help translate" : "עזרה בתרגום", "Import Root Certificate" : "ייבוא אישור אבטחת שורש", - "Login Name" : "שם כניסה", + "Username" : "שם משתמש", "Create" : "יצירה", "Admin Recovery Password" : "ססמת השחזור של המנהל", "Group" : "קבוצה", "Default Quota" : "מכסת בררת המחדל", "Unlimited" : "ללא הגבלה", "Other" : "אחר", - "Username" : "שם משתמש", "Quota" : "מכסה", "set new password" : "הגדרת ססמה חדשה", "Default" : "בררת מחדל" diff --git a/settings/l10n/hr.js b/settings/l10n/hr.js index 6ccc12a97c0..e0f07974723 100644 --- a/settings/l10n/hr.js +++ b/settings/l10n/hr.js @@ -111,7 +111,6 @@ OC.L10N.register( "Locale not working" : "Regionalna shema ne radi", "System locale can not be set to a one which supports UTF-8." : "Regionalnu shemu sustava nemoguće je postaviti na neku koja podržava UTF-8.", "This means that there might be problems with certain characters in file names." : "To znači da se mogu javiti problemi s određenim znakovima u datoteci.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Toplo preporučpujemo da u svoj sustav instalirate potrebne pakete koji će podržatijednu od sljedećih regionalnih shema: %s.", "URL generation in notification emails" : "Generiranje URL-a u notifikacijskoj e-pošti", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Ako vaša instalacija nije instalirana u korijenu domene i koristi sustav cron,mogu se javiti problemi s generiranjem URL. Da biste takve probleme izbjegli,molimo postavite opciju \"overwritewebroot\" u vašoj datoteci config.php.na webroot path vaše instalacije (Predlažemo: \"%s\").", "Please double check the <a href='%s'>installation guides</a>." : "Molimo provjerite <a href='%s'> instalacijske vodiče </a>.", @@ -203,11 +202,10 @@ OC.L10N.register( "Delete Encryption Keys" : "Izbrišite ključeve za šifriranje", "Show storage location" : "Prikaži mjesto pohrane", "Show last log in" : "Prikaži zadnje spajanje", - "Login Name" : "Ime za prijavu", + "Username" : "Korisničko ime", "Create" : "Kreirajte", "Admin Recovery Password" : "Admin lozinka za oporavak", "Enter the recovery password in order to recover the users files during password change" : "Unesite lozinku za oporavak da biste oporavili korisničke datoteke tijekom promjene lozinke", - "Search Users and Groups" : "Pretražite korisnike i grupe", "Add Group" : "Dodajte grupu", "Group" : "Grupa", "Everyone" : "Svi", @@ -216,7 +214,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Molimo unesite kvotu za spremanje (npr: \"512 MB\" ili \"12 GB\")", "Unlimited" : "Neograničeno", "Other" : "Ostalo", - "Username" : "Korisničko ime", "Quota" : "Kvota", "Storage Location" : "Mjesto za spremanje", "Last Login" : "Zadnja prijava", diff --git a/settings/l10n/hr.json b/settings/l10n/hr.json index 57075ab7984..78af9502520 100644 --- a/settings/l10n/hr.json +++ b/settings/l10n/hr.json @@ -109,7 +109,6 @@ "Locale not working" : "Regionalna shema ne radi", "System locale can not be set to a one which supports UTF-8." : "Regionalnu shemu sustava nemoguće je postaviti na neku koja podržava UTF-8.", "This means that there might be problems with certain characters in file names." : "To znači da se mogu javiti problemi s određenim znakovima u datoteci.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Toplo preporučpujemo da u svoj sustav instalirate potrebne pakete koji će podržatijednu od sljedećih regionalnih shema: %s.", "URL generation in notification emails" : "Generiranje URL-a u notifikacijskoj e-pošti", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Ako vaša instalacija nije instalirana u korijenu domene i koristi sustav cron,mogu se javiti problemi s generiranjem URL. Da biste takve probleme izbjegli,molimo postavite opciju \"overwritewebroot\" u vašoj datoteci config.php.na webroot path vaše instalacije (Predlažemo: \"%s\").", "Please double check the <a href='%s'>installation guides</a>." : "Molimo provjerite <a href='%s'> instalacijske vodiče </a>.", @@ -201,11 +200,10 @@ "Delete Encryption Keys" : "Izbrišite ključeve za šifriranje", "Show storage location" : "Prikaži mjesto pohrane", "Show last log in" : "Prikaži zadnje spajanje", - "Login Name" : "Ime za prijavu", + "Username" : "Korisničko ime", "Create" : "Kreirajte", "Admin Recovery Password" : "Admin lozinka za oporavak", "Enter the recovery password in order to recover the users files during password change" : "Unesite lozinku za oporavak da biste oporavili korisničke datoteke tijekom promjene lozinke", - "Search Users and Groups" : "Pretražite korisnike i grupe", "Add Group" : "Dodajte grupu", "Group" : "Grupa", "Everyone" : "Svi", @@ -214,7 +212,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Molimo unesite kvotu za spremanje (npr: \"512 MB\" ili \"12 GB\")", "Unlimited" : "Neograničeno", "Other" : "Ostalo", - "Username" : "Korisničko ime", "Quota" : "Kvota", "Storage Location" : "Mjesto za spremanje", "Last Login" : "Zadnja prijava", diff --git a/settings/l10n/hu_HU.js b/settings/l10n/hu_HU.js index d347ac8846a..e7cd62bf80f 100644 --- a/settings/l10n/hu_HU.js +++ b/settings/l10n/hu_HU.js @@ -111,7 +111,6 @@ OC.L10N.register( "Locale not working" : "A nyelvi lokalizáció nem működik", "System locale can not be set to a one which supports UTF-8." : "A rendszer lokalizációs állományai között nem sikerült olyat beállítani, ami támogatja az UTF-8-at.", "This means that there might be problems with certain characters in file names." : "Ez azt jelenti, hogy probléma lehet bizonyos karakterekkel a fájlnevekben.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Feltétlenül javasoljuk, hogy telepítse a szükséges csomagokat ahhoz, hogy a rendszere támogassa a következő lokalizációk valamelyikét: %s", "URL generation in notification emails" : "URL-képzés az értesítő e-mailekben", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Ha a telepítése nem a webkiszolgáló gyökerében van, és a rendszer cron szolgáltatását használja, akkor problémák lehetnek az URL-ek képzésével. Ezek elkerülése érdekében állítsa be a config.php-ban az \"overwritewebroot\" paramétert a telepítés által használt webútvonalra. (Javasolt beállítás: \"%s\")", "Please double check the <a href='%s'>installation guides</a>." : "Kérjük tüzetesen tanulmányozza át a <a href='%s'>telepítési útmutatót</a>.", @@ -197,11 +196,10 @@ OC.L10N.register( "Your encryption keys are moved to a backup location. If something went wrong you can restore the keys. Only delete them permanently if you are sure that all files are decrypted correctly." : "A titkosító kulcsai egy mentési területre kerültek. Ha valami hiba történik, még vissza tudja állítani a titkosító kulcsait. Csak akkor törölje őket véglegesen, ha biztos benne, hogy minden állományt sikerült a visszaállítani a titkosított állapotából.", "Restore Encryption Keys" : "A titkosító kulcsok visszaállítása", "Delete Encryption Keys" : "A titkosító kulcsok törlése", - "Login Name" : "Bejelentkezési név", + "Username" : "Felhasználónév", "Create" : "Létrehozás", "Admin Recovery Password" : "Adminisztrátori jelszó az állományok visszanyerésére", "Enter the recovery password in order to recover the users files during password change" : "Adja meg az adatok visszanyeréséhez szükséges jelszót arra az esetre, ha a felhasználók megváltoztatják a jelszavukat", - "Search Users and Groups" : "Keresés a felhasználók és a csoportok között", "Add Group" : "Csoport létrehozása", "Group" : "Csoport", "Everyone" : "Mindenki", @@ -210,7 +208,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Kérjük adja meg a tárolási kvótát (pl. \"512 MB\" vagy \"12 GB\")", "Unlimited" : "Korlátlan", "Other" : "Más", - "Username" : "Felhasználónév", "Quota" : "Kvóta", "Storage Location" : "A háttértár helye", "Last Login" : "Utolsó bejelentkezés", diff --git a/settings/l10n/hu_HU.json b/settings/l10n/hu_HU.json index 0c8cffbd89a..6e209dc8f81 100644 --- a/settings/l10n/hu_HU.json +++ b/settings/l10n/hu_HU.json @@ -109,7 +109,6 @@ "Locale not working" : "A nyelvi lokalizáció nem működik", "System locale can not be set to a one which supports UTF-8." : "A rendszer lokalizációs állományai között nem sikerült olyat beállítani, ami támogatja az UTF-8-at.", "This means that there might be problems with certain characters in file names." : "Ez azt jelenti, hogy probléma lehet bizonyos karakterekkel a fájlnevekben.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Feltétlenül javasoljuk, hogy telepítse a szükséges csomagokat ahhoz, hogy a rendszere támogassa a következő lokalizációk valamelyikét: %s", "URL generation in notification emails" : "URL-képzés az értesítő e-mailekben", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Ha a telepítése nem a webkiszolgáló gyökerében van, és a rendszer cron szolgáltatását használja, akkor problémák lehetnek az URL-ek képzésével. Ezek elkerülése érdekében állítsa be a config.php-ban az \"overwritewebroot\" paramétert a telepítés által használt webútvonalra. (Javasolt beállítás: \"%s\")", "Please double check the <a href='%s'>installation guides</a>." : "Kérjük tüzetesen tanulmányozza át a <a href='%s'>telepítési útmutatót</a>.", @@ -195,11 +194,10 @@ "Your encryption keys are moved to a backup location. If something went wrong you can restore the keys. Only delete them permanently if you are sure that all files are decrypted correctly." : "A titkosító kulcsai egy mentési területre kerültek. Ha valami hiba történik, még vissza tudja állítani a titkosító kulcsait. Csak akkor törölje őket véglegesen, ha biztos benne, hogy minden állományt sikerült a visszaállítani a titkosított állapotából.", "Restore Encryption Keys" : "A titkosító kulcsok visszaállítása", "Delete Encryption Keys" : "A titkosító kulcsok törlése", - "Login Name" : "Bejelentkezési név", + "Username" : "Felhasználónév", "Create" : "Létrehozás", "Admin Recovery Password" : "Adminisztrátori jelszó az állományok visszanyerésére", "Enter the recovery password in order to recover the users files during password change" : "Adja meg az adatok visszanyeréséhez szükséges jelszót arra az esetre, ha a felhasználók megváltoztatják a jelszavukat", - "Search Users and Groups" : "Keresés a felhasználók és a csoportok között", "Add Group" : "Csoport létrehozása", "Group" : "Csoport", "Everyone" : "Mindenki", @@ -208,7 +206,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Kérjük adja meg a tárolási kvótát (pl. \"512 MB\" vagy \"12 GB\")", "Unlimited" : "Korlátlan", "Other" : "Más", - "Username" : "Felhasználónév", "Quota" : "Kvóta", "Storage Location" : "A háttértár helye", "Last Login" : "Utolsó bejelentkezés", diff --git a/settings/l10n/ia.js b/settings/l10n/ia.js index e48d44c9335..79c58303c80 100644 --- a/settings/l10n/ia.js +++ b/settings/l10n/ia.js @@ -30,11 +30,11 @@ OC.L10N.register( "Cancel" : "Cancellar", "Language" : "Linguage", "Help translate" : "Adjuta a traducer", + "Username" : "Nomine de usator", "Create" : "Crear", "Group" : "Gruppo", "Default Quota" : "Quota predeterminate", "Other" : "Altere", - "Username" : "Nomine de usator", "Quota" : "Quota" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/ia.json b/settings/l10n/ia.json index c1acf295b4a..4978aa977f6 100644 --- a/settings/l10n/ia.json +++ b/settings/l10n/ia.json @@ -28,11 +28,11 @@ "Cancel" : "Cancellar", "Language" : "Linguage", "Help translate" : "Adjuta a traducer", + "Username" : "Nomine de usator", "Create" : "Crear", "Group" : "Gruppo", "Default Quota" : "Quota predeterminate", "Other" : "Altere", - "Username" : "Nomine de usator", "Quota" : "Quota" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/id.js b/settings/l10n/id.js index 0db6558b0fd..3240c893669 100644 --- a/settings/l10n/id.js +++ b/settings/l10n/id.js @@ -116,7 +116,6 @@ OC.L10N.register( "Locale not working" : "Kode pelokalan tidak berfungsi", "System locale can not be set to a one which supports UTF-8." : "Sistem lokal tidak dapat diatur untuk satu yang mendukung UTF-8.", "This means that there might be problems with certain characters in file names." : "Ini artinya mungkin ada masalah dengan karakter tertentu pada nama berkas.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Kami sangat menyarankan untuk menginstal paket yang dibutuhkan pada sistem agar mendukung salah satu bahasa berikut: %s.", "URL generation in notification emails" : "URL dibuat dalam email pemberitahuan", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Jika instalasi Anda tidak terinstal didalam root domain dan menggunakan cron sistem, ini dapat menyebabkan masalah dengan pembuatan URL. Untuk mencegah masalah ini, mohon atur opsi \"overwritewebroot\" didalam berkas config.php ke jalur lokasi webroot instalasi Anda (Disarankan: \"%s\")", "No problems found" : "Masalah tidak ditemukan", @@ -214,11 +213,10 @@ OC.L10N.register( "Delete Encryption Keys" : "Hapus Kuncu Enkripsi", "Show storage location" : "Tampilkan kolasi penyimpanan", "Show last log in" : "Tampilkan masuk terakhir", - "Login Name" : "Nama Masuk", + "Username" : "Nama pengguna", "Create" : "Buat", "Admin Recovery Password" : "Sandi pemulihan Admin", "Enter the recovery password in order to recover the users files during password change" : "Masukkan sandi pemulihan untuk memulihkan berkas pengguna saat penggantian sandi", - "Search Users and Groups" : "Telusuri Pengguna dan Grup", "Add Group" : "Tambah Grup", "Group" : "Grup", "Everyone" : "Semua orang", @@ -227,7 +225,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Silakan masukkan jumlah penyimpanan (contoh: \"512 MB\" atau \"12 GB\")", "Unlimited" : "Tak terbatas", "Other" : "Lainnya", - "Username" : "Nama pengguna", "Group Admin for" : "Grup Admin untuk", "Quota" : "Quota", "Storage Location" : "Lokasi Penyimpanan", diff --git a/settings/l10n/id.json b/settings/l10n/id.json index a5aeb52afd0..eadfcf6c2db 100644 --- a/settings/l10n/id.json +++ b/settings/l10n/id.json @@ -114,7 +114,6 @@ "Locale not working" : "Kode pelokalan tidak berfungsi", "System locale can not be set to a one which supports UTF-8." : "Sistem lokal tidak dapat diatur untuk satu yang mendukung UTF-8.", "This means that there might be problems with certain characters in file names." : "Ini artinya mungkin ada masalah dengan karakter tertentu pada nama berkas.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Kami sangat menyarankan untuk menginstal paket yang dibutuhkan pada sistem agar mendukung salah satu bahasa berikut: %s.", "URL generation in notification emails" : "URL dibuat dalam email pemberitahuan", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Jika instalasi Anda tidak terinstal didalam root domain dan menggunakan cron sistem, ini dapat menyebabkan masalah dengan pembuatan URL. Untuk mencegah masalah ini, mohon atur opsi \"overwritewebroot\" didalam berkas config.php ke jalur lokasi webroot instalasi Anda (Disarankan: \"%s\")", "No problems found" : "Masalah tidak ditemukan", @@ -212,11 +211,10 @@ "Delete Encryption Keys" : "Hapus Kuncu Enkripsi", "Show storage location" : "Tampilkan kolasi penyimpanan", "Show last log in" : "Tampilkan masuk terakhir", - "Login Name" : "Nama Masuk", + "Username" : "Nama pengguna", "Create" : "Buat", "Admin Recovery Password" : "Sandi pemulihan Admin", "Enter the recovery password in order to recover the users files during password change" : "Masukkan sandi pemulihan untuk memulihkan berkas pengguna saat penggantian sandi", - "Search Users and Groups" : "Telusuri Pengguna dan Grup", "Add Group" : "Tambah Grup", "Group" : "Grup", "Everyone" : "Semua orang", @@ -225,7 +223,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Silakan masukkan jumlah penyimpanan (contoh: \"512 MB\" atau \"12 GB\")", "Unlimited" : "Tak terbatas", "Other" : "Lainnya", - "Username" : "Nama pengguna", "Group Admin for" : "Grup Admin untuk", "Quota" : "Quota", "Storage Location" : "Lokasi Penyimpanan", diff --git a/settings/l10n/is.js b/settings/l10n/is.js index b73009b405f..d6d42ad0536 100644 --- a/settings/l10n/is.js +++ b/settings/l10n/is.js @@ -53,10 +53,10 @@ OC.L10N.register( "Language" : "Tungumál", "Help translate" : "Hjálpa við þýðingu", "Import Root Certificate" : "Flytja inn rótar skilríki", + "Username" : "Notendanafn", "Create" : "Búa til", "Unlimited" : "Ótakmarkað", "Other" : "Annað", - "Username" : "Notendanafn", "Default" : "Sjálfgefið" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/is.json b/settings/l10n/is.json index 5a70c190216..d61b3ccfd1c 100644 --- a/settings/l10n/is.json +++ b/settings/l10n/is.json @@ -51,10 +51,10 @@ "Language" : "Tungumál", "Help translate" : "Hjálpa við þýðingu", "Import Root Certificate" : "Flytja inn rótar skilríki", + "Username" : "Notendanafn", "Create" : "Búa til", "Unlimited" : "Ótakmarkað", "Other" : "Annað", - "Username" : "Notendanafn", "Default" : "Sjálfgefið" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/it.js b/settings/l10n/it.js index 713ed4e686f..2748c43298d 100644 --- a/settings/l10n/it.js +++ b/settings/l10n/it.js @@ -117,9 +117,10 @@ OC.L10N.register( "Locale not working" : "Locale non funzionante", "System locale can not be set to a one which supports UTF-8." : "La localizzazione di sistema non può essere impostata a una che supporta UTF-8.", "This means that there might be problems with certain characters in file names." : "Ciò significa che potrebbero esserci problemi con alcuni caratteri nei nomi dei file.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Consigliamo vivamente di installare i pacchetti richiesti sul tuo sistema per supportare una delle\nlocalizzazioni seguenti: %s.", + "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Consigliamo vivamente di installare i pacchetti richiesti sul tuo sistema per supportare una delle localizzazioni seguenti: %s.", "URL generation in notification emails" : "Generazione di URL nelle email di notifica", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Se la tua installazione non si trova nella radice del dominio e utilizza il cron di sistema, potrebbero esserci problemi con la generazione degli URL. Per evitare questi problemi, imposta l'opzione \"overwritewebroot\" nel file config.php al percorso della radice del sito della tua installazione (Suggerito: \"%s\")", + "Connectivity Checks" : "Controlli di connettività", "No problems found" : "Nessun problema trovato", "Please double check the <a href='%s'>installation guides</a>." : "Leggi attentamente le <a href='%s'>guide d'installazione</a>.", "Last cron was executed at %s." : "L'ultimo cron è stato eseguito alle %s.", @@ -143,6 +144,8 @@ OC.L10N.register( "These groups will still be able to receive shares, but not to initiate them." : "Questi gruppi saranno in grado di ricevere condivisioni, ma non iniziarle.", "Enforce HTTPS" : "Forza HTTPS", "Forces the clients to connect to %s via an encrypted connection." : "Forza i client a connettersi a %s tramite una connessione cifrata.", + "Enforce HTTPS for subdomains" : "Forza HTTPS per i sottodomini", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Forza i client a connettersi a %s e ai sottodomini tramite una connessione cifrata.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Connettiti al tuo %s tramite HTTPS per abilitare o disabilitare l'applicazione di SSL.", "This is used for sending out notifications." : "Viene utilizzato per inviare le notifiche.", "Send mode" : "Modalità di invio", @@ -215,11 +218,11 @@ OC.L10N.register( "Delete Encryption Keys" : "Elimina chiavi di cifratura", "Show storage location" : "Mostra posizione di archiviazione", "Show last log in" : "Mostra ultimo accesso", - "Login Name" : "Nome utente", + "Username" : "Nome utente", "Create" : "Crea", "Admin Recovery Password" : "Password di ripristino amministrativa", "Enter the recovery password in order to recover the users files during password change" : "Digita la password di ripristino per recuperare i file degli utenti durante la modifica della password.", - "Search Users and Groups" : "Cerca utenti e gruppi", + "Search Users" : "Cerca utenti", "Add Group" : "Aggiungi gruppo", "Group" : "Gruppo", "Everyone" : "Chiunque", @@ -228,7 +231,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Digita la quota di archiviazione (ad es.: \"512 MB\" or \"12 GB\")", "Unlimited" : "Illimitata", "Other" : "Altro", - "Username" : "Nome utente", "Group Admin for" : "Gruppo di amministrazione per", "Quota" : "Quote", "Storage Location" : "Posizione di archiviazione", diff --git a/settings/l10n/it.json b/settings/l10n/it.json index 2e88a90b551..f8e94b7288e 100644 --- a/settings/l10n/it.json +++ b/settings/l10n/it.json @@ -115,9 +115,10 @@ "Locale not working" : "Locale non funzionante", "System locale can not be set to a one which supports UTF-8." : "La localizzazione di sistema non può essere impostata a una che supporta UTF-8.", "This means that there might be problems with certain characters in file names." : "Ciò significa che potrebbero esserci problemi con alcuni caratteri nei nomi dei file.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Consigliamo vivamente di installare i pacchetti richiesti sul tuo sistema per supportare una delle\nlocalizzazioni seguenti: %s.", + "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Consigliamo vivamente di installare i pacchetti richiesti sul tuo sistema per supportare una delle localizzazioni seguenti: %s.", "URL generation in notification emails" : "Generazione di URL nelle email di notifica", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Se la tua installazione non si trova nella radice del dominio e utilizza il cron di sistema, potrebbero esserci problemi con la generazione degli URL. Per evitare questi problemi, imposta l'opzione \"overwritewebroot\" nel file config.php al percorso della radice del sito della tua installazione (Suggerito: \"%s\")", + "Connectivity Checks" : "Controlli di connettività", "No problems found" : "Nessun problema trovato", "Please double check the <a href='%s'>installation guides</a>." : "Leggi attentamente le <a href='%s'>guide d'installazione</a>.", "Last cron was executed at %s." : "L'ultimo cron è stato eseguito alle %s.", @@ -141,6 +142,8 @@ "These groups will still be able to receive shares, but not to initiate them." : "Questi gruppi saranno in grado di ricevere condivisioni, ma non iniziarle.", "Enforce HTTPS" : "Forza HTTPS", "Forces the clients to connect to %s via an encrypted connection." : "Forza i client a connettersi a %s tramite una connessione cifrata.", + "Enforce HTTPS for subdomains" : "Forza HTTPS per i sottodomini", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Forza i client a connettersi a %s e ai sottodomini tramite una connessione cifrata.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Connettiti al tuo %s tramite HTTPS per abilitare o disabilitare l'applicazione di SSL.", "This is used for sending out notifications." : "Viene utilizzato per inviare le notifiche.", "Send mode" : "Modalità di invio", @@ -213,11 +216,11 @@ "Delete Encryption Keys" : "Elimina chiavi di cifratura", "Show storage location" : "Mostra posizione di archiviazione", "Show last log in" : "Mostra ultimo accesso", - "Login Name" : "Nome utente", + "Username" : "Nome utente", "Create" : "Crea", "Admin Recovery Password" : "Password di ripristino amministrativa", "Enter the recovery password in order to recover the users files during password change" : "Digita la password di ripristino per recuperare i file degli utenti durante la modifica della password.", - "Search Users and Groups" : "Cerca utenti e gruppi", + "Search Users" : "Cerca utenti", "Add Group" : "Aggiungi gruppo", "Group" : "Gruppo", "Everyone" : "Chiunque", @@ -226,7 +229,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Digita la quota di archiviazione (ad es.: \"512 MB\" or \"12 GB\")", "Unlimited" : "Illimitata", "Other" : "Altro", - "Username" : "Nome utente", "Group Admin for" : "Gruppo di amministrazione per", "Quota" : "Quote", "Storage Location" : "Posizione di archiviazione", diff --git a/settings/l10n/ja.js b/settings/l10n/ja.js index 1e8e5b35233..a6328f23586 100644 --- a/settings/l10n/ja.js +++ b/settings/l10n/ja.js @@ -117,9 +117,9 @@ OC.L10N.register( "Locale not working" : "ロケールが動作していません", "System locale can not be set to a one which supports UTF-8." : "システムロケールを UTF-8 をサポートするロケールに設定できません。", "This means that there might be problems with certain characters in file names." : "これは、ファイル名の特定の文字に問題があることを意味しています。", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "次のロケールをサポートするために、システムに必要なパッケージをインストールすることを強くおすすめします: %s。", "URL generation in notification emails" : "通知メールにURLを生成", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "もし、URLがドメインのルート(/)で終わっていない場合で、システムのcronを利用している場合、URLの生成に問題が発生します。その場合は、config.php ファイルの中の \"overwritewebroot\" オプションをインストールしたパスに設定してください。(推奨: \"%s\")", + "Connectivity Checks" : "接続の確認", "No problems found" : "問題は見つかりませんでした", "Please double check the <a href='%s'>installation guides</a>." : "<a href='%s'>インストールガイド</a>をよく確認してください。", "Last cron was executed at %s." : "直近では%sにcronが実行されました。", @@ -143,6 +143,8 @@ OC.L10N.register( "These groups will still be able to receive shares, but not to initiate them." : "このグループでは、フォルダー共有を開始することはできませんが、共有されたフォルダーを参照することはできます。", "Enforce HTTPS" : "常にHTTPSを使用する", "Forces the clients to connect to %s via an encrypted connection." : "クライアントから %sへの接続を常に暗号化します。", + "Enforce HTTPS for subdomains" : "サブドメインのHTTPSを強制する", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "%s とサブドメインへの暗号化接続をクライアントに強制する。", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "強制的なSSL接続を有効/無効にするには、HTTPS経由で %s へ接続してください。", "This is used for sending out notifications." : "通知を送信する際に使用します。", "Send mode" : "送信モード", @@ -215,11 +217,10 @@ OC.L10N.register( "Delete Encryption Keys" : "暗号化キーを削除する", "Show storage location" : "データの保存場所を表示", "Show last log in" : "最終ログインを表示", - "Login Name" : "ログイン名", + "Username" : "ユーザーID", "Create" : "作成", "Admin Recovery Password" : "管理者リカバリパスワード", "Enter the recovery password in order to recover the users files during password change" : "パスワード変更時のユーザーのファイルを回復するため、リカバリパスワードを入力してください", - "Search Users and Groups" : "ユーザーとグループを検索", "Add Group" : "グループを追加", "Group" : "グループ", "Everyone" : "すべてのユーザー", @@ -228,7 +229,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "ストレージのクォータを入力してください (例: \"512MB\" や \"12 GB\")", "Unlimited" : "無制限", "Other" : "その他", - "Username" : "ユーザーID", "Group Admin for" : "グループ管理者", "Quota" : "クオータ", "Storage Location" : "データの保存場所", diff --git a/settings/l10n/ja.json b/settings/l10n/ja.json index e601e3963d0..c628fdc6ff4 100644 --- a/settings/l10n/ja.json +++ b/settings/l10n/ja.json @@ -115,9 +115,9 @@ "Locale not working" : "ロケールが動作していません", "System locale can not be set to a one which supports UTF-8." : "システムロケールを UTF-8 をサポートするロケールに設定できません。", "This means that there might be problems with certain characters in file names." : "これは、ファイル名の特定の文字に問題があることを意味しています。", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "次のロケールをサポートするために、システムに必要なパッケージをインストールすることを強くおすすめします: %s。", "URL generation in notification emails" : "通知メールにURLを生成", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "もし、URLがドメインのルート(/)で終わっていない場合で、システムのcronを利用している場合、URLの生成に問題が発生します。その場合は、config.php ファイルの中の \"overwritewebroot\" オプションをインストールしたパスに設定してください。(推奨: \"%s\")", + "Connectivity Checks" : "接続の確認", "No problems found" : "問題は見つかりませんでした", "Please double check the <a href='%s'>installation guides</a>." : "<a href='%s'>インストールガイド</a>をよく確認してください。", "Last cron was executed at %s." : "直近では%sにcronが実行されました。", @@ -141,6 +141,8 @@ "These groups will still be able to receive shares, but not to initiate them." : "このグループでは、フォルダー共有を開始することはできませんが、共有されたフォルダーを参照することはできます。", "Enforce HTTPS" : "常にHTTPSを使用する", "Forces the clients to connect to %s via an encrypted connection." : "クライアントから %sへの接続を常に暗号化します。", + "Enforce HTTPS for subdomains" : "サブドメインのHTTPSを強制する", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "%s とサブドメインへの暗号化接続をクライアントに強制する。", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "強制的なSSL接続を有効/無効にするには、HTTPS経由で %s へ接続してください。", "This is used for sending out notifications." : "通知を送信する際に使用します。", "Send mode" : "送信モード", @@ -213,11 +215,10 @@ "Delete Encryption Keys" : "暗号化キーを削除する", "Show storage location" : "データの保存場所を表示", "Show last log in" : "最終ログインを表示", - "Login Name" : "ログイン名", + "Username" : "ユーザーID", "Create" : "作成", "Admin Recovery Password" : "管理者リカバリパスワード", "Enter the recovery password in order to recover the users files during password change" : "パスワード変更時のユーザーのファイルを回復するため、リカバリパスワードを入力してください", - "Search Users and Groups" : "ユーザーとグループを検索", "Add Group" : "グループを追加", "Group" : "グループ", "Everyone" : "すべてのユーザー", @@ -226,7 +227,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "ストレージのクォータを入力してください (例: \"512MB\" や \"12 GB\")", "Unlimited" : "無制限", "Other" : "その他", - "Username" : "ユーザーID", "Group Admin for" : "グループ管理者", "Quota" : "クオータ", "Storage Location" : "データの保存場所", diff --git a/settings/l10n/ka_GE.js b/settings/l10n/ka_GE.js index 09d8c25290b..8851b231382 100644 --- a/settings/l10n/ka_GE.js +++ b/settings/l10n/ka_GE.js @@ -79,12 +79,11 @@ OC.L10N.register( "Language" : "ენა", "Help translate" : "თარგმნის დახმარება", "Import Root Certificate" : "Root სერთიფიკატის იმპორტირება", - "Login Name" : "მომხმარებლის სახელი", + "Username" : "მომხმარებლის სახელი", "Create" : "შექმნა", "Default Quota" : "საწყისი ქვოტა", "Unlimited" : "ულიმიტო", "Other" : "სხვა", - "Username" : "მომხმარებლის სახელი", "Quota" : "ქვოტა", "set new password" : "დააყენეთ ახალი პაროლი", "Default" : "საწყისი პარამეტრები" diff --git a/settings/l10n/ka_GE.json b/settings/l10n/ka_GE.json index e3a1f410e67..0072516dfd8 100644 --- a/settings/l10n/ka_GE.json +++ b/settings/l10n/ka_GE.json @@ -77,12 +77,11 @@ "Language" : "ენა", "Help translate" : "თარგმნის დახმარება", "Import Root Certificate" : "Root სერთიფიკატის იმპორტირება", - "Login Name" : "მომხმარებლის სახელი", + "Username" : "მომხმარებლის სახელი", "Create" : "შექმნა", "Default Quota" : "საწყისი ქვოტა", "Unlimited" : "ულიმიტო", "Other" : "სხვა", - "Username" : "მომხმარებლის სახელი", "Quota" : "ქვოტა", "set new password" : "დააყენეთ ახალი პაროლი", "Default" : "საწყისი პარამეტრები" diff --git a/settings/l10n/km.js b/settings/l10n/km.js index 9814b26f128..f19faf4d11b 100644 --- a/settings/l10n/km.js +++ b/settings/l10n/km.js @@ -101,12 +101,11 @@ OC.L10N.register( "Help translate" : "ជួយបកប្រែ", "Log-in password" : "ពាក្យសម្ងាត់ចូលគណនី", "Decrypt all Files" : "Decrypt ឯកសារទាំងអស់", - "Login Name" : "ចូល", + "Username" : "ឈ្មោះអ្នកប្រើ", "Create" : "បង្កើត", "Admin Recovery Password" : "ការស្វែងរកពាក្យសម្ងាត់របស់ប្រធានវេបសាយ", "Unlimited" : "មិនកំណត់", "Other" : "ផ្សេងៗ", - "Username" : "ឈ្មោះអ្នកប្រើ", "set new password" : "កំណត់ពាក្យសម្ងាត់ថ្មី", "Default" : "លំនាំដើម" }, diff --git a/settings/l10n/km.json b/settings/l10n/km.json index 91e65cac226..b0d0d2a56e4 100644 --- a/settings/l10n/km.json +++ b/settings/l10n/km.json @@ -99,12 +99,11 @@ "Help translate" : "ជួយបកប្រែ", "Log-in password" : "ពាក្យសម្ងាត់ចូលគណនី", "Decrypt all Files" : "Decrypt ឯកសារទាំងអស់", - "Login Name" : "ចូល", + "Username" : "ឈ្មោះអ្នកប្រើ", "Create" : "បង្កើត", "Admin Recovery Password" : "ការស្វែងរកពាក្យសម្ងាត់របស់ប្រធានវេបសាយ", "Unlimited" : "មិនកំណត់", "Other" : "ផ្សេងៗ", - "Username" : "ឈ្មោះអ្នកប្រើ", "set new password" : "កំណត់ពាក្យសម្ងាត់ថ្មី", "Default" : "លំនាំដើម" },"pluralForm" :"nplurals=1; plural=0;" diff --git a/settings/l10n/ko.js b/settings/l10n/ko.js index 4d8ccf751e2..6d828ee47ec 100644 --- a/settings/l10n/ko.js +++ b/settings/l10n/ko.js @@ -89,7 +89,6 @@ OC.L10N.register( "Locale not working" : "로캘이 작동하지 않음", "System locale can not be set to a one which supports UTF-8." : "UTF-8을 지원하는 시스템 로캘을 사용할 수 없습니다.", "This means that there might be problems with certain characters in file names." : "파일 이름의 일부 문자에 문제가 생길 수도 있습니다.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "다음 로캘을 지원하도록 시스템 설정을 변경하는 것을 추천합니다: %s", "Please double check the <a href='%s'>installation guides</a>." : "<a href='%s'>설치 가이드</a>를 다시 한 번 확인하십시오.", "Execute one task with each page loaded" : "개별 페이지를 불러올 때마다 실행", "cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php는 webcron 서비스에 등록되어 HTTP로 15분마다 cron.php에 접근합니다.", @@ -153,11 +152,10 @@ OC.L10N.register( "Decrypt all Files" : "모든 파일 복호화", "Restore Encryption Keys" : "암호화 키 복원", "Delete Encryption Keys" : "암호화 키 삭제", - "Login Name" : "로그인 이름", + "Username" : "사용자 이름", "Create" : "만들기", "Admin Recovery Password" : "관리자 복구 암호", "Enter the recovery password in order to recover the users files during password change" : "암호 변경 시 변경된 사용자 파일을 복구하려면 복구 암호를 입력하십시오", - "Search Users and Groups" : "사용자와 그룹 검색", "Add Group" : "그룹 추가", "Group" : "그룹", "Admins" : "관리자", @@ -165,7 +163,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "저장소 할당량을 입력하십시오 (예: \"512 MB\", \"12 GB\")", "Unlimited" : "무제한", "Other" : "기타", - "Username" : "사용자 이름", "Quota" : "할당량", "Last Login" : "마지막 로그인", "change full name" : "전체 이름 변경", diff --git a/settings/l10n/ko.json b/settings/l10n/ko.json index 882b9ef8c83..121627253e2 100644 --- a/settings/l10n/ko.json +++ b/settings/l10n/ko.json @@ -87,7 +87,6 @@ "Locale not working" : "로캘이 작동하지 않음", "System locale can not be set to a one which supports UTF-8." : "UTF-8을 지원하는 시스템 로캘을 사용할 수 없습니다.", "This means that there might be problems with certain characters in file names." : "파일 이름의 일부 문자에 문제가 생길 수도 있습니다.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "다음 로캘을 지원하도록 시스템 설정을 변경하는 것을 추천합니다: %s", "Please double check the <a href='%s'>installation guides</a>." : "<a href='%s'>설치 가이드</a>를 다시 한 번 확인하십시오.", "Execute one task with each page loaded" : "개별 페이지를 불러올 때마다 실행", "cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php는 webcron 서비스에 등록되어 HTTP로 15분마다 cron.php에 접근합니다.", @@ -151,11 +150,10 @@ "Decrypt all Files" : "모든 파일 복호화", "Restore Encryption Keys" : "암호화 키 복원", "Delete Encryption Keys" : "암호화 키 삭제", - "Login Name" : "로그인 이름", + "Username" : "사용자 이름", "Create" : "만들기", "Admin Recovery Password" : "관리자 복구 암호", "Enter the recovery password in order to recover the users files during password change" : "암호 변경 시 변경된 사용자 파일을 복구하려면 복구 암호를 입력하십시오", - "Search Users and Groups" : "사용자와 그룹 검색", "Add Group" : "그룹 추가", "Group" : "그룹", "Admins" : "관리자", @@ -163,7 +161,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "저장소 할당량을 입력하십시오 (예: \"512 MB\", \"12 GB\")", "Unlimited" : "무제한", "Other" : "기타", - "Username" : "사용자 이름", "Quota" : "할당량", "Last Login" : "마지막 로그인", "change full name" : "전체 이름 변경", diff --git a/settings/l10n/ku_IQ.js b/settings/l10n/ku_IQ.js index 15cd8c68225..e78805c8cae 100644 --- a/settings/l10n/ku_IQ.js +++ b/settings/l10n/ku_IQ.js @@ -12,7 +12,6 @@ OC.L10N.register( "New password" : "وشەی نهێنی نوێ", "Email" : "ئیمهیل", "Cancel" : "لابردن", - "Login Name" : "چوونەژوورەوە", "Username" : "ناوی بهکارهێنهر" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/ku_IQ.json b/settings/l10n/ku_IQ.json index 1e6fe7a51e9..c3bcd408956 100644 --- a/settings/l10n/ku_IQ.json +++ b/settings/l10n/ku_IQ.json @@ -10,7 +10,6 @@ "New password" : "وشەی نهێنی نوێ", "Email" : "ئیمهیل", "Cancel" : "لابردن", - "Login Name" : "چوونەژوورەوە", "Username" : "ناوی بهکارهێنهر" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/lb.js b/settings/l10n/lb.js index 2a49739460f..9cb363460b3 100644 --- a/settings/l10n/lb.js +++ b/settings/l10n/lb.js @@ -41,12 +41,11 @@ OC.L10N.register( "Cancel" : "Ofbriechen", "Language" : "Sprooch", "Help translate" : "Hëllef iwwersetzen", - "Login Name" : "Login", + "Username" : "Benotzernumm", "Create" : "Erstellen", "Group" : "Grupp", "Default Quota" : "Standard Quota", "Other" : "Aner", - "Username" : "Benotzernumm", "Quota" : "Quota" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/lb.json b/settings/l10n/lb.json index 6f18a4362e1..0fecc04be68 100644 --- a/settings/l10n/lb.json +++ b/settings/l10n/lb.json @@ -39,12 +39,11 @@ "Cancel" : "Ofbriechen", "Language" : "Sprooch", "Help translate" : "Hëllef iwwersetzen", - "Login Name" : "Login", + "Username" : "Benotzernumm", "Create" : "Erstellen", "Group" : "Grupp", "Default Quota" : "Standard Quota", "Other" : "Aner", - "Username" : "Benotzernumm", "Quota" : "Quota" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/lt_LT.js b/settings/l10n/lt_LT.js index da3c2eb229e..4211d857b86 100644 --- a/settings/l10n/lt_LT.js +++ b/settings/l10n/lt_LT.js @@ -106,7 +106,7 @@ OC.L10N.register( "Import Root Certificate" : "Įkelti pagrindinį sertifikatą", "Log-in password" : "Prisijungimo slaptažodis", "Decrypt all Files" : "Iššifruoti visus failus", - "Login Name" : "Vartotojo vardas", + "Username" : "Prisijungimo vardas", "Create" : "Sukurti", "Admin Recovery Password" : "Administracinis atkūrimo slaptažodis", "Enter the recovery password in order to recover the users files during password change" : "Įveskite atkūrimo slaptažodį, kad atkurti naudotojo failus keičiant slaptažodį", @@ -114,7 +114,6 @@ OC.L10N.register( "Default Quota" : "Numatytoji kvota", "Unlimited" : "Neribota", "Other" : "Kita", - "Username" : "Prisijungimo vardas", "Quota" : "Limitas", "change full name" : "keisti pilną vardą", "set new password" : "nustatyti naują slaptažodį", diff --git a/settings/l10n/lt_LT.json b/settings/l10n/lt_LT.json index 0118eede4a5..98d570d9420 100644 --- a/settings/l10n/lt_LT.json +++ b/settings/l10n/lt_LT.json @@ -104,7 +104,7 @@ "Import Root Certificate" : "Įkelti pagrindinį sertifikatą", "Log-in password" : "Prisijungimo slaptažodis", "Decrypt all Files" : "Iššifruoti visus failus", - "Login Name" : "Vartotojo vardas", + "Username" : "Prisijungimo vardas", "Create" : "Sukurti", "Admin Recovery Password" : "Administracinis atkūrimo slaptažodis", "Enter the recovery password in order to recover the users files during password change" : "Įveskite atkūrimo slaptažodį, kad atkurti naudotojo failus keičiant slaptažodį", @@ -112,7 +112,6 @@ "Default Quota" : "Numatytoji kvota", "Unlimited" : "Neribota", "Other" : "Kita", - "Username" : "Prisijungimo vardas", "Quota" : "Limitas", "change full name" : "keisti pilną vardą", "set new password" : "nustatyti naują slaptažodį", diff --git a/settings/l10n/lv.js b/settings/l10n/lv.js index 899d29a32c9..e1190cb7953 100644 --- a/settings/l10n/lv.js +++ b/settings/l10n/lv.js @@ -87,7 +87,7 @@ OC.L10N.register( "Import Root Certificate" : "Importēt saknes sertifikātus", "Log-in password" : "Pieslēgšanās parole", "Decrypt all Files" : "Atšifrēt visus failus", - "Login Name" : "Ierakstīšanās vārds", + "Username" : "Lietotājvārds", "Create" : "Izveidot", "Admin Recovery Password" : "Administratora atgūšanas parole", "Enter the recovery password in order to recover the users files during password change" : "Ievadiet atgūšanas paroli, lai varētu atgūt lietotāja failus paroles maiņas laikā.", @@ -95,7 +95,6 @@ OC.L10N.register( "Default Quota" : "Apjoms pēc noklusējuma", "Unlimited" : "Neierobežota", "Other" : "Cits", - "Username" : "Lietotājvārds", "Quota" : "Apjoms", "set new password" : "iestatīt jaunu paroli", "Default" : "Noklusējuma" diff --git a/settings/l10n/lv.json b/settings/l10n/lv.json index 2cc167d78ae..35da6955cc1 100644 --- a/settings/l10n/lv.json +++ b/settings/l10n/lv.json @@ -85,7 +85,7 @@ "Import Root Certificate" : "Importēt saknes sertifikātus", "Log-in password" : "Pieslēgšanās parole", "Decrypt all Files" : "Atšifrēt visus failus", - "Login Name" : "Ierakstīšanās vārds", + "Username" : "Lietotājvārds", "Create" : "Izveidot", "Admin Recovery Password" : "Administratora atgūšanas parole", "Enter the recovery password in order to recover the users files during password change" : "Ievadiet atgūšanas paroli, lai varētu atgūt lietotāja failus paroles maiņas laikā.", @@ -93,7 +93,6 @@ "Default Quota" : "Apjoms pēc noklusējuma", "Unlimited" : "Neierobežota", "Other" : "Cits", - "Username" : "Lietotājvārds", "Quota" : "Apjoms", "set new password" : "iestatīt jaunu paroli", "Default" : "Noklusējuma" diff --git a/settings/l10n/mk.js b/settings/l10n/mk.js index 32438b0651b..57245605ae0 100644 --- a/settings/l10n/mk.js +++ b/settings/l10n/mk.js @@ -145,10 +145,9 @@ OC.L10N.register( "Decrypt all Files" : "Дешифрирај ги сите датотеки", "Restore Encryption Keys" : "Обнови ги енкрипциските клучеви", "Delete Encryption Keys" : "Избриши ги енкрипцисиките клучеви", - "Login Name" : "Име за најава", + "Username" : "Корисничко име", "Create" : "Создај", "Admin Recovery Password" : "Обновување на Admin лозинката", - "Search Users and Groups" : "Барај корисници и групи", "Add Group" : "Додади група", "Group" : "Група", "Everyone" : "Секој", @@ -157,7 +156,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Ве молам внесете квота за просторот (нпр: \"512 MB\" или \"12 GB\")", "Unlimited" : "Неограничено", "Other" : "Останато", - "Username" : "Корисничко име", "Quota" : "Квота", "Storage Location" : "Локација на сториџот", "Last Login" : "Последна најава", diff --git a/settings/l10n/mk.json b/settings/l10n/mk.json index 93cbf16b885..4445c65d6ec 100644 --- a/settings/l10n/mk.json +++ b/settings/l10n/mk.json @@ -143,10 +143,9 @@ "Decrypt all Files" : "Дешифрирај ги сите датотеки", "Restore Encryption Keys" : "Обнови ги енкрипциските клучеви", "Delete Encryption Keys" : "Избриши ги енкрипцисиките клучеви", - "Login Name" : "Име за најава", + "Username" : "Корисничко име", "Create" : "Создај", "Admin Recovery Password" : "Обновување на Admin лозинката", - "Search Users and Groups" : "Барај корисници и групи", "Add Group" : "Додади група", "Group" : "Група", "Everyone" : "Секој", @@ -155,7 +154,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Ве молам внесете квота за просторот (нпр: \"512 MB\" или \"12 GB\")", "Unlimited" : "Неограничено", "Other" : "Останато", - "Username" : "Корисничко име", "Quota" : "Квота", "Storage Location" : "Локација на сториџот", "Last Login" : "Последна најава", diff --git a/settings/l10n/ms_MY.js b/settings/l10n/ms_MY.js index 99c41bf6a81..fcd8da46ee6 100644 --- a/settings/l10n/ms_MY.js +++ b/settings/l10n/ms_MY.js @@ -30,11 +30,10 @@ OC.L10N.register( "Cancel" : "Batal", "Language" : "Bahasa", "Help translate" : "Bantu terjemah", - "Login Name" : "Log masuk", + "Username" : "Nama pengguna", "Create" : "Buat", "Default Quota" : "Kuota Lalai", "Other" : "Lain", - "Username" : "Nama pengguna", "Quota" : "Kuota" }, "nplurals=1; plural=0;"); diff --git a/settings/l10n/ms_MY.json b/settings/l10n/ms_MY.json index 506590d06f9..d84e2c575aa 100644 --- a/settings/l10n/ms_MY.json +++ b/settings/l10n/ms_MY.json @@ -28,11 +28,10 @@ "Cancel" : "Batal", "Language" : "Bahasa", "Help translate" : "Bantu terjemah", - "Login Name" : "Log masuk", + "Username" : "Nama pengguna", "Create" : "Buat", "Default Quota" : "Kuota Lalai", "Other" : "Lain", - "Username" : "Nama pengguna", "Quota" : "Kuota" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/settings/l10n/nb_NO.js b/settings/l10n/nb_NO.js index 1e68033f940..1f27d37d7f9 100644 --- a/settings/l10n/nb_NO.js +++ b/settings/l10n/nb_NO.js @@ -111,7 +111,6 @@ OC.L10N.register( "Locale not working" : "Nasjonale innstillinger virker ikke", "System locale can not be set to a one which supports UTF-8." : "Kan ikke sette systemets nasjonale innstillinger til en som støtter UTF-8.", "This means that there might be problems with certain characters in file names." : "Dette betyr at det kan forekomme problemer med visse tegn i filnavn.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Vi anbefaler på det sterkeste å installere pakkene som er nødvendig for at systemet skal støtte en av følgende nasjonale innstillinger: %s.", "URL generation in notification emails" : "URL-generering i varsel-eposter", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Hvis installasjonen din ikke er installert i roten av domenet og bruker system cron, kan det bli problemer med URL-generering. For å forhindre disse problemene, sett \"overwritewebroot\" i filen config.php til webroot-stien for installasjonen din (Forslag: \"%s\")", "No problems found" : "Ingen problemer funnet", @@ -204,11 +203,10 @@ OC.L10N.register( "Delete Encryption Keys" : "Slett krypteringsnøkler", "Show storage location" : "Vis lagringssted", "Show last log in" : "Vis site innlogging", - "Login Name" : "Brukernavn", + "Username" : "Brukernavn", "Create" : "Opprett", "Admin Recovery Password" : "Administrativt gjenopprettingspassord", "Enter the recovery password in order to recover the users files during password change" : "Legg inn gjenopprettingspassordet for å gjenopprette brukerfilene når passordet endres", - "Search Users and Groups" : "Søk i brukere og grupper", "Add Group" : "Legg til gruppe", "Group" : "Gruppe", "Everyone" : "Alle", @@ -217,7 +215,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Legg inn lagringskvote (f.eks. \"512 MB\" eller \"12 GB\")", "Unlimited" : "Ubegrenset", "Other" : "Annet", - "Username" : "Brukernavn", "Quota" : "Kvote", "Storage Location" : "Lagringsplassering", "Last Login" : "Siste innlogging", diff --git a/settings/l10n/nb_NO.json b/settings/l10n/nb_NO.json index c6ec81f064c..bd43183da4a 100644 --- a/settings/l10n/nb_NO.json +++ b/settings/l10n/nb_NO.json @@ -109,7 +109,6 @@ "Locale not working" : "Nasjonale innstillinger virker ikke", "System locale can not be set to a one which supports UTF-8." : "Kan ikke sette systemets nasjonale innstillinger til en som støtter UTF-8.", "This means that there might be problems with certain characters in file names." : "Dette betyr at det kan forekomme problemer med visse tegn i filnavn.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Vi anbefaler på det sterkeste å installere pakkene som er nødvendig for at systemet skal støtte en av følgende nasjonale innstillinger: %s.", "URL generation in notification emails" : "URL-generering i varsel-eposter", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Hvis installasjonen din ikke er installert i roten av domenet og bruker system cron, kan det bli problemer med URL-generering. For å forhindre disse problemene, sett \"overwritewebroot\" i filen config.php til webroot-stien for installasjonen din (Forslag: \"%s\")", "No problems found" : "Ingen problemer funnet", @@ -202,11 +201,10 @@ "Delete Encryption Keys" : "Slett krypteringsnøkler", "Show storage location" : "Vis lagringssted", "Show last log in" : "Vis site innlogging", - "Login Name" : "Brukernavn", + "Username" : "Brukernavn", "Create" : "Opprett", "Admin Recovery Password" : "Administrativt gjenopprettingspassord", "Enter the recovery password in order to recover the users files during password change" : "Legg inn gjenopprettingspassordet for å gjenopprette brukerfilene når passordet endres", - "Search Users and Groups" : "Søk i brukere og grupper", "Add Group" : "Legg til gruppe", "Group" : "Gruppe", "Everyone" : "Alle", @@ -215,7 +213,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Legg inn lagringskvote (f.eks. \"512 MB\" eller \"12 GB\")", "Unlimited" : "Ubegrenset", "Other" : "Annet", - "Username" : "Brukernavn", "Quota" : "Kvote", "Storage Location" : "Lagringsplassering", "Last Login" : "Siste innlogging", diff --git a/settings/l10n/nl.js b/settings/l10n/nl.js index c282e31a975..8e38125bb43 100644 --- a/settings/l10n/nl.js +++ b/settings/l10n/nl.js @@ -117,7 +117,7 @@ OC.L10N.register( "Locale not working" : "Taalbestand werkt niet", "System locale can not be set to a one which supports UTF-8." : "De systeemtaal kan niet worden ingesteld op een taal die UTF-8 ondersteunt.", "This means that there might be problems with certain characters in file names." : "Dat betekent dat er problemen kunnen optreden met bepaalde tekens in bestandsnamen.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "We adviseren met klem om de noodzakelijke pakketten op uw systeem te installeren om een van de volgende talen te ondersteunen: %s.", + "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "We adviseren met klem om de noodzakelijke pakketten op uw systeem te installeren om een van de volgende talen te ondersteunen: %s.", "URL generation in notification emails" : "URL genereren in notificatie e-mails", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Als uw installatie niet in de hoofddirectory van het domein staat, maar wel cron gebruikt, dan kunnen er problemen ontstaan bij het genereren van URL's. Om deze problemen te voorkomen zou u de \"overwritewebroot\" optie in config.php moeten instellen op het webroot pad van uw ownCloud (aanbevolen: \"%s\") ", "Connectivity Checks" : "Verbindingscontroles", @@ -144,6 +144,8 @@ OC.L10N.register( "These groups will still be able to receive shares, but not to initiate them." : "Deze groepen kunnen gedeelde mappen bestanden ontvangen, maar kunnen ze niet starten.", "Enforce HTTPS" : "Afdwingen HTTPS", "Forces the clients to connect to %s via an encrypted connection." : "Dwingt de clients om een versleutelde verbinding te maken met %s", + "Enforce HTTPS for subdomains" : "HTTPS afdwingen voor subdomeinen", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Dwingt de clients om een versleutelde verbinding te maken met %s en de subdomeinen.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Maak verbinding naar uw %s via HTTPS om een geforceerde versleutelde verbinding in- of uit te schakelen.", "This is used for sending out notifications." : "Dit wordt gestuurd voor het verzenden van meldingen.", "Send mode" : "Verstuurmodus", @@ -216,11 +218,11 @@ OC.L10N.register( "Delete Encryption Keys" : "Verwijder cryptosleutels", "Show storage location" : "Toon opslaglocatie", "Show last log in" : "Toon laatste inlog", - "Login Name" : "Inlognaam", + "Username" : "Gebruikersnaam", "Create" : "Aanmaken", "Admin Recovery Password" : "Beheer herstel wachtwoord", "Enter the recovery password in order to recover the users files during password change" : "Voer het herstel wachtwoord in om de gebruikersbestanden terug te halen bij wachtwoordwijziging", - "Search Users and Groups" : "Zoeken naar gebruikers en groepen", + "Search Users" : "Zoek gebruikers", "Add Group" : "Toevoegen groep", "Group" : "Groep", "Everyone" : "Iedereen", @@ -229,7 +231,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Geef de opslagquotering op (bijv. \"512 MB\" of \"12 GB\")", "Unlimited" : "Ongelimiteerd", "Other" : "Anders", - "Username" : "Gebruikersnaam", "Group Admin for" : "Groepsbeheerder voor", "Quota" : "Limieten", "Storage Location" : "Opslaglocatie", diff --git a/settings/l10n/nl.json b/settings/l10n/nl.json index e4cd7312510..8d5ef3d25e3 100644 --- a/settings/l10n/nl.json +++ b/settings/l10n/nl.json @@ -115,7 +115,7 @@ "Locale not working" : "Taalbestand werkt niet", "System locale can not be set to a one which supports UTF-8." : "De systeemtaal kan niet worden ingesteld op een taal die UTF-8 ondersteunt.", "This means that there might be problems with certain characters in file names." : "Dat betekent dat er problemen kunnen optreden met bepaalde tekens in bestandsnamen.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "We adviseren met klem om de noodzakelijke pakketten op uw systeem te installeren om een van de volgende talen te ondersteunen: %s.", + "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "We adviseren met klem om de noodzakelijke pakketten op uw systeem te installeren om een van de volgende talen te ondersteunen: %s.", "URL generation in notification emails" : "URL genereren in notificatie e-mails", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Als uw installatie niet in de hoofddirectory van het domein staat, maar wel cron gebruikt, dan kunnen er problemen ontstaan bij het genereren van URL's. Om deze problemen te voorkomen zou u de \"overwritewebroot\" optie in config.php moeten instellen op het webroot pad van uw ownCloud (aanbevolen: \"%s\") ", "Connectivity Checks" : "Verbindingscontroles", @@ -142,6 +142,8 @@ "These groups will still be able to receive shares, but not to initiate them." : "Deze groepen kunnen gedeelde mappen bestanden ontvangen, maar kunnen ze niet starten.", "Enforce HTTPS" : "Afdwingen HTTPS", "Forces the clients to connect to %s via an encrypted connection." : "Dwingt de clients om een versleutelde verbinding te maken met %s", + "Enforce HTTPS for subdomains" : "HTTPS afdwingen voor subdomeinen", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Dwingt de clients om een versleutelde verbinding te maken met %s en de subdomeinen.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Maak verbinding naar uw %s via HTTPS om een geforceerde versleutelde verbinding in- of uit te schakelen.", "This is used for sending out notifications." : "Dit wordt gestuurd voor het verzenden van meldingen.", "Send mode" : "Verstuurmodus", @@ -214,11 +216,11 @@ "Delete Encryption Keys" : "Verwijder cryptosleutels", "Show storage location" : "Toon opslaglocatie", "Show last log in" : "Toon laatste inlog", - "Login Name" : "Inlognaam", + "Username" : "Gebruikersnaam", "Create" : "Aanmaken", "Admin Recovery Password" : "Beheer herstel wachtwoord", "Enter the recovery password in order to recover the users files during password change" : "Voer het herstel wachtwoord in om de gebruikersbestanden terug te halen bij wachtwoordwijziging", - "Search Users and Groups" : "Zoeken naar gebruikers en groepen", + "Search Users" : "Zoek gebruikers", "Add Group" : "Toevoegen groep", "Group" : "Groep", "Everyone" : "Iedereen", @@ -227,7 +229,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Geef de opslagquotering op (bijv. \"512 MB\" of \"12 GB\")", "Unlimited" : "Ongelimiteerd", "Other" : "Anders", - "Username" : "Gebruikersnaam", "Group Admin for" : "Groepsbeheerder voor", "Quota" : "Limieten", "Storage Location" : "Opslaglocatie", diff --git a/settings/l10n/nn_NO.js b/settings/l10n/nn_NO.js index ec89452b020..74380c67fdd 100644 --- a/settings/l10n/nn_NO.js +++ b/settings/l10n/nn_NO.js @@ -98,14 +98,13 @@ OC.L10N.register( "Help translate" : "Hjelp oss å omsetja", "Log-in password" : "Innloggingspassord", "Decrypt all Files" : "Dekrypter alle filene", - "Login Name" : "Innloggingsnamn", + "Username" : "Brukarnamn", "Create" : "Lag", "Admin Recovery Password" : "Gjenopprettingspassord for administrator", "Enter the recovery password in order to recover the users files during password change" : "Skriv inn gjenopprettingspassordet brukt for å gjenoppretta brukarfilene ved passordendring", "Group" : "Gruppe", "Unlimited" : "Ubegrensa", "Other" : "Anna", - "Username" : "Brukarnamn", "Quota" : "Kvote", "set new password" : "lag nytt passord", "Default" : "Standard" diff --git a/settings/l10n/nn_NO.json b/settings/l10n/nn_NO.json index d0ad4d92356..c4a3844829c 100644 --- a/settings/l10n/nn_NO.json +++ b/settings/l10n/nn_NO.json @@ -96,14 +96,13 @@ "Help translate" : "Hjelp oss å omsetja", "Log-in password" : "Innloggingspassord", "Decrypt all Files" : "Dekrypter alle filene", - "Login Name" : "Innloggingsnamn", + "Username" : "Brukarnamn", "Create" : "Lag", "Admin Recovery Password" : "Gjenopprettingspassord for administrator", "Enter the recovery password in order to recover the users files during password change" : "Skriv inn gjenopprettingspassordet brukt for å gjenoppretta brukarfilene ved passordendring", "Group" : "Gruppe", "Unlimited" : "Ubegrensa", "Other" : "Anna", - "Username" : "Brukarnamn", "Quota" : "Kvote", "set new password" : "lag nytt passord", "Default" : "Standard" diff --git a/settings/l10n/oc.js b/settings/l10n/oc.js index 1764b2dbf9f..734e0de7551 100644 --- a/settings/l10n/oc.js +++ b/settings/l10n/oc.js @@ -38,11 +38,10 @@ OC.L10N.register( "Cancel" : "Annula", "Language" : "Lenga", "Help translate" : "Ajuda a la revirada", - "Login Name" : "Login", + "Username" : "Non d'usancièr", "Create" : "Crea", "Default Quota" : "Quota per defaut", "Other" : "Autres", - "Username" : "Non d'usancièr", "Quota" : "Quota" }, "nplurals=2; plural=(n > 1);"); diff --git a/settings/l10n/oc.json b/settings/l10n/oc.json index a01af9dea16..dc1827381dc 100644 --- a/settings/l10n/oc.json +++ b/settings/l10n/oc.json @@ -36,11 +36,10 @@ "Cancel" : "Annula", "Language" : "Lenga", "Help translate" : "Ajuda a la revirada", - "Login Name" : "Login", + "Username" : "Non d'usancièr", "Create" : "Crea", "Default Quota" : "Quota per defaut", "Other" : "Autres", - "Username" : "Non d'usancièr", "Quota" : "Quota" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/settings/l10n/pa.js b/settings/l10n/pa.js index ef0c5083b06..e5e000082f3 100644 --- a/settings/l10n/pa.js +++ b/settings/l10n/pa.js @@ -19,7 +19,6 @@ OC.L10N.register( "Password" : "ਪਾਸਵਰ", "Change password" : "ਪਾਸਵਰਡ ਬਦਲੋ", "Cancel" : "ਰੱਦ ਕਰੋ", - "Login Name" : "ਲਾਗਇਨ", "Username" : "ਯੂਜ਼ਰ-ਨਾਂ" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/pa.json b/settings/l10n/pa.json index 4f836b1b384..4bea8e234ea 100644 --- a/settings/l10n/pa.json +++ b/settings/l10n/pa.json @@ -17,7 +17,6 @@ "Password" : "ਪਾਸਵਰ", "Change password" : "ਪਾਸਵਰਡ ਬਦਲੋ", "Cancel" : "ਰੱਦ ਕਰੋ", - "Login Name" : "ਲਾਗਇਨ", "Username" : "ਯੂਜ਼ਰ-ਨਾਂ" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/pl.js b/settings/l10n/pl.js index 1e72d2c2239..4206c0eb587 100644 --- a/settings/l10n/pl.js +++ b/settings/l10n/pl.js @@ -116,7 +116,6 @@ OC.L10N.register( "Locale not working" : "Lokalizacja nie działa", "System locale can not be set to a one which supports UTF-8." : "Ustawienia regionalne systemu nie można ustawić na jeden, który obsługuje UTF-8.", "This means that there might be problems with certain characters in file names." : "Oznacza to, że mogą być problemy z niektórymi znakami w nazwach plików.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Zalecamy, aby zainstalować wymagane pakiety w systemie, jeden z następujących języków: %s.", "URL generation in notification emails" : "Generowanie URL w powiadomieniach email", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Jeśli Twoja instalacja nie jest zainstalowana w katalogu głównym serwera www, a system używa cron-a, mogą występować problemy z generowaniem URL-i. Aby uniknąć tych problemów, proszę ustawić opcję \"overwritewebroot\" w pliku config.php na ścieżkę z adresu www Twojej instalacji (Sugerowane: \"%s\")", "No problems found" : "Nie ma żadnych problemów", @@ -213,11 +212,10 @@ OC.L10N.register( "Delete Encryption Keys" : "Usuń klucze szyfrujące", "Show storage location" : "Pokaż miejsce przechowywania", "Show last log in" : "Pokaż ostatni login", - "Login Name" : "Login", + "Username" : "Nazwa użytkownika", "Create" : "Utwórz", "Admin Recovery Password" : "Odzyskiwanie hasła administratora", "Enter the recovery password in order to recover the users files during password change" : "Wpisz hasło odzyskiwania, aby odzyskać pliki użytkowników podczas zmiany hasła", - "Search Users and Groups" : "Przeszukuj użytkowników i grupy", "Add Group" : "Dodaj grupę", "Group" : "Grupa", "Everyone" : "Wszyscy", @@ -226,7 +224,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Proszę ustawić ograniczenie zasobów (np. \"512 MB\" albo \"12 GB)", "Unlimited" : "Bez limitu", "Other" : "Inne", - "Username" : "Nazwa użytkownika", "Group Admin for" : "Grupa Admin dla", "Quota" : "Udział", "Storage Location" : "Lokalizacja magazynu", diff --git a/settings/l10n/pl.json b/settings/l10n/pl.json index 6ea3b9aaddc..e4761e4ba47 100644 --- a/settings/l10n/pl.json +++ b/settings/l10n/pl.json @@ -114,7 +114,6 @@ "Locale not working" : "Lokalizacja nie działa", "System locale can not be set to a one which supports UTF-8." : "Ustawienia regionalne systemu nie można ustawić na jeden, który obsługuje UTF-8.", "This means that there might be problems with certain characters in file names." : "Oznacza to, że mogą być problemy z niektórymi znakami w nazwach plików.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Zalecamy, aby zainstalować wymagane pakiety w systemie, jeden z następujących języków: %s.", "URL generation in notification emails" : "Generowanie URL w powiadomieniach email", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Jeśli Twoja instalacja nie jest zainstalowana w katalogu głównym serwera www, a system używa cron-a, mogą występować problemy z generowaniem URL-i. Aby uniknąć tych problemów, proszę ustawić opcję \"overwritewebroot\" w pliku config.php na ścieżkę z adresu www Twojej instalacji (Sugerowane: \"%s\")", "No problems found" : "Nie ma żadnych problemów", @@ -211,11 +210,10 @@ "Delete Encryption Keys" : "Usuń klucze szyfrujące", "Show storage location" : "Pokaż miejsce przechowywania", "Show last log in" : "Pokaż ostatni login", - "Login Name" : "Login", + "Username" : "Nazwa użytkownika", "Create" : "Utwórz", "Admin Recovery Password" : "Odzyskiwanie hasła administratora", "Enter the recovery password in order to recover the users files during password change" : "Wpisz hasło odzyskiwania, aby odzyskać pliki użytkowników podczas zmiany hasła", - "Search Users and Groups" : "Przeszukuj użytkowników i grupy", "Add Group" : "Dodaj grupę", "Group" : "Grupa", "Everyone" : "Wszyscy", @@ -224,7 +222,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Proszę ustawić ograniczenie zasobów (np. \"512 MB\" albo \"12 GB)", "Unlimited" : "Bez limitu", "Other" : "Inne", - "Username" : "Nazwa użytkownika", "Group Admin for" : "Grupa Admin dla", "Quota" : "Udział", "Storage Location" : "Lokalizacja magazynu", diff --git a/settings/l10n/pt_BR.js b/settings/l10n/pt_BR.js index 6103cf7deb1..1d280fa1439 100644 --- a/settings/l10n/pt_BR.js +++ b/settings/l10n/pt_BR.js @@ -117,7 +117,7 @@ OC.L10N.register( "Locale not working" : "Localização não funcionando", "System locale can not be set to a one which supports UTF-8." : "Localidade do sistema não pode ser definido como um que suporta UTF-8.", "This means that there might be problems with certain characters in file names." : "Isso significa que pode haver problemas com certos caracteres nos nomes de arquivo.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Nós fortemente sugerimos instalar os pacotes necessários no seu sistema para suportar uma das seguintes localidades: %s.", + "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Nós sugerimos a instalação dos pacotes necessários em seu sistema para suportar um dos seguintes locais: %s.", "URL generation in notification emails" : "Geração de URL em e-mails de notificação", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Se a sua instalação não estiver instalada na raiz do domínio e usa cron do sistema, pode haver problemas com a geração de URL. Para evitar esses problemas, por favor, defina a opção \"overwritewebroot\" em seu arquivo config.php para o caminho webroot de sua instalação (Sugestão: \"%s\")", "Connectivity Checks" : "Verificações de Conectividade", @@ -144,6 +144,8 @@ OC.L10N.register( "These groups will still be able to receive shares, but not to initiate them." : "Esses grupos ainda serão capazes de receber compartilhamentos, mas não para iniciá-los.", "Enforce HTTPS" : "Forçar HTTPS", "Forces the clients to connect to %s via an encrypted connection." : "Obrigar os clientes que se conectem a %s através de uma conexão criptografada.", + "Enforce HTTPS for subdomains" : "Forçar HTTPS para subdomínios", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Força os clientes se conectem a %s e subdomínios através de uma conexão criptografada.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Por favor, se conectar ao seu %s via HTTPS para forçar ativar ou desativar SSL.", "This is used for sending out notifications." : "Isto é usado para o envio de notificações.", "Send mode" : "Modo enviar", @@ -216,11 +218,11 @@ OC.L10N.register( "Delete Encryption Keys" : "Eliminar Chaves de Criptografia", "Show storage location" : "Mostrar localização de armazenamento", "Show last log in" : "Mostrar o último acesso", - "Login Name" : "Nome de Login", + "Username" : "Nome de Usuário", "Create" : "Criar", "Admin Recovery Password" : "Recuperação da Senha do Administrador", "Enter the recovery password in order to recover the users files during password change" : "Digite a senha de recuperação para recuperar os arquivos dos usuários durante a mudança de senha.", - "Search Users and Groups" : "Pesquisar Usuários e Grupos", + "Search Users" : "Pesquisar Usuários", "Add Group" : "Adicionar Grupo", "Group" : "Grupo", "Everyone" : "Para todos", @@ -229,7 +231,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Por favor insira cota de armazenamento (ex: \"512\" ou \"12 GB\")", "Unlimited" : "Ilimitado", "Other" : "Outro", - "Username" : "Nome de Usuário", "Group Admin for" : "Grupo Admin para", "Quota" : "Cota", "Storage Location" : "Local de Armazenamento", diff --git a/settings/l10n/pt_BR.json b/settings/l10n/pt_BR.json index 60eb59db740..3746bb162dc 100644 --- a/settings/l10n/pt_BR.json +++ b/settings/l10n/pt_BR.json @@ -115,7 +115,7 @@ "Locale not working" : "Localização não funcionando", "System locale can not be set to a one which supports UTF-8." : "Localidade do sistema não pode ser definido como um que suporta UTF-8.", "This means that there might be problems with certain characters in file names." : "Isso significa que pode haver problemas com certos caracteres nos nomes de arquivo.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Nós fortemente sugerimos instalar os pacotes necessários no seu sistema para suportar uma das seguintes localidades: %s.", + "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Nós sugerimos a instalação dos pacotes necessários em seu sistema para suportar um dos seguintes locais: %s.", "URL generation in notification emails" : "Geração de URL em e-mails de notificação", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Se a sua instalação não estiver instalada na raiz do domínio e usa cron do sistema, pode haver problemas com a geração de URL. Para evitar esses problemas, por favor, defina a opção \"overwritewebroot\" em seu arquivo config.php para o caminho webroot de sua instalação (Sugestão: \"%s\")", "Connectivity Checks" : "Verificações de Conectividade", @@ -142,6 +142,8 @@ "These groups will still be able to receive shares, but not to initiate them." : "Esses grupos ainda serão capazes de receber compartilhamentos, mas não para iniciá-los.", "Enforce HTTPS" : "Forçar HTTPS", "Forces the clients to connect to %s via an encrypted connection." : "Obrigar os clientes que se conectem a %s através de uma conexão criptografada.", + "Enforce HTTPS for subdomains" : "Forçar HTTPS para subdomínios", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Força os clientes se conectem a %s e subdomínios através de uma conexão criptografada.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Por favor, se conectar ao seu %s via HTTPS para forçar ativar ou desativar SSL.", "This is used for sending out notifications." : "Isto é usado para o envio de notificações.", "Send mode" : "Modo enviar", @@ -214,11 +216,11 @@ "Delete Encryption Keys" : "Eliminar Chaves de Criptografia", "Show storage location" : "Mostrar localização de armazenamento", "Show last log in" : "Mostrar o último acesso", - "Login Name" : "Nome de Login", + "Username" : "Nome de Usuário", "Create" : "Criar", "Admin Recovery Password" : "Recuperação da Senha do Administrador", "Enter the recovery password in order to recover the users files during password change" : "Digite a senha de recuperação para recuperar os arquivos dos usuários durante a mudança de senha.", - "Search Users and Groups" : "Pesquisar Usuários e Grupos", + "Search Users" : "Pesquisar Usuários", "Add Group" : "Adicionar Grupo", "Group" : "Grupo", "Everyone" : "Para todos", @@ -227,7 +229,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Por favor insira cota de armazenamento (ex: \"512\" ou \"12 GB\")", "Unlimited" : "Ilimitado", "Other" : "Outro", - "Username" : "Nome de Usuário", "Group Admin for" : "Grupo Admin para", "Quota" : "Cota", "Storage Location" : "Local de Armazenamento", diff --git a/settings/l10n/pt_PT.js b/settings/l10n/pt_PT.js index 6847eb46393..cf82312e466 100644 --- a/settings/l10n/pt_PT.js +++ b/settings/l10n/pt_PT.js @@ -1,73 +1,73 @@ OC.L10N.register( "settings", { - "Security & Setup Warnings" : "Avisos de Segurança e Configuração", + "Security & Setup Warnings" : "Avisos de Configuração e Segurança", "Cron" : "Cron", "Sharing" : "Partilha", "Security" : "Segurança", - "Email Server" : "Servidor de email", + "Email Server" : "Servidor de e-mail", "Log" : "Registo", "Authentication error" : "Erro na autenticação", "Your full name has been changed." : "O seu nome completo foi alterado.", "Unable to change full name" : "Não foi possível alterar o seu nome completo", "Group already exists" : "O grupo já existe", - "Unable to add group" : "Impossível acrescentar o grupo", + "Unable to add group" : "Não é possível acrescentar o grupo", "Files decrypted successfully" : "Ficheiros desencriptados com sucesso", - "Couldn't decrypt your files, please check your owncloud.log or ask your administrator" : "Não foi possível desencriptar os seus arquivos. Verifique a sua owncloud.log ou pergunte ao seu administrador", - "Couldn't decrypt your files, check your password and try again" : "Não foi possível desencriptar os seus arquivos. Verifique a sua senha e tente novamente", + "Couldn't decrypt your files, please check your owncloud.log or ask your administrator" : "Não foi possível descodificar os seus ficheiros. Por favor, verifique a sua owncloud.log ou pergunte ao seu administrador", + "Couldn't decrypt your files, check your password and try again" : "Não foi possível descodificar os seus ficheiros. Por favor, verifique a sua palavra-passe e tente novamente", "Encryption keys deleted permanently" : "A chave de encriptação foi eliminada permanentemente", "Couldn't permanently delete your encryption keys, please check your owncloud.log or ask your administrator" : "Não foi possível excluir permanentemente a sua chave de encriptação. Verifique a sua owncloud.log ou pergunte ao seu administrador", - "Couldn't remove app." : "Impossível remover aplicação.", - "Email saved" : "Email guardado", - "Invalid email" : "Email inválido", - "Unable to delete group" : "Impossível apagar grupo", - "Unable to delete user" : "Impossível apagar utilizador", + "Couldn't remove app." : "Não foi possível remover a aplicação.", + "Email saved" : "E-mail guardado", + "Invalid email" : "e-mail inválido", + "Unable to delete group" : "Não é possível apagar o grupo", + "Unable to delete user" : "Não é possível apagar o utilizador", "Backups restored successfully" : "Cópias de segurança foram restauradas com sucesso", "Couldn't restore your encryption keys, please check your owncloud.log or ask your administrator" : "Nao foi possivel restaurar as suas chaves de encriptacao. Verifique a sua owncloud.log ou pergunte ao seu administrador", "Language changed" : "Idioma alterado", "Invalid request" : "Pedido Inválido", - "Admins can't remove themself from the admin group" : "Os administradores não se podem remover a eles mesmos do grupo admin.", + "Admins can't remove themself from the admin group" : "Os administradores não se podem remover a eles próprios do grupo 'admin'.", "Unable to add user to group %s" : "Impossível acrescentar utilizador ao grupo %s", "Unable to remove user from group %s" : "Impossível apagar utilizador do grupo %s", "Couldn't update app." : "Não foi possível actualizar a aplicação.", - "Wrong password" : "Password errada", + "Wrong password" : "Palavra-passe errada", "No user supplied" : "Nenhum utilizador especificado.", - "Please provide an admin recovery password, otherwise all user data will be lost" : "Por favor forneça uma palavra chave de recuperação de administrador, caso contrário todos os dados de utilizador serão perdidos", - "Wrong admin recovery password. Please check the password and try again." : "Palavra chave de recuperação de administrador errada. Por favor verifique a palavra chave e tente de novo.", - "Back-end doesn't support password change, but the users encryption key was successfully updated." : "Não foi possível alterar a sua palavra-passe, mas a chave de encriptação foi atualizada.", - "Unable to change password" : "Não foi possível alterar a sua password", + "Please provide an admin recovery password, otherwise all user data will be lost" : "Por favor, forneça uma palavra-passe de recuperação de administrador, caso contrário seráo perdidos todos os dados", + "Wrong admin recovery password. Please check the password and try again." : "Palavra-passe de recuperação de administrador errada. Por favor, verifique a palavra-passe e tente novamente.", + "Back-end doesn't support password change, but the users encryption key was successfully updated." : "Não foi possível alterar a sua palavra-passe, mas a chave de codificação foi atualizada com sucesso.", + "Unable to change password" : "Não foi possível alterar a sua palavra-passe ", "Enabled" : "Ativada", "Not enabled" : "Desactivado", "Recommended" : "Recomendado", "Saved" : "Guardado", - "test email settings" : "testar configurações de email", + "test email settings" : "testar as definições de e-mail", "If you received this email, the settings seem to be correct." : "Se você recebeu este e-mail as configurações parecem estar correctas", "A problem occurred while sending the email. Please revise your settings." : "Um problema ocorreu ao enviar o email. Por favor verifique as suas definições.", "Email sent" : "E-mail enviado", "You need to set your user email before being able to send test emails." : "Você precisa de configurar o seu e-mail de usuário antes de ser capaz de enviar e-mails de teste", "Are you really sure you want add \"{domain}\" as trusted domain?" : "Você tem certeza que quer adicionar \"{domain}\" como domínio confiável?", "Add trusted domain" : "Adicionar domínio confiável ", - "Sending..." : "A enviar...", + "Sending..." : "A enviar ...", "All" : "Todos", "Please wait...." : "Por favor aguarde...", - "Error while disabling app" : "Erro enquanto desactivava a aplicação", - "Disable" : "Desactivar", - "Enable" : "Activar", - "Error while enabling app" : "Erro enquanto activava a aplicação", + "Error while disabling app" : "Ocorreu um erro enquanto desativava a aplicação", + "Disable" : "Desativar", + "Enable" : "Ativar", + "Error while enabling app" : "Ocorreu um erro enquanto ativava a aplicação", "Updating...." : "A Actualizar...", - "Error while updating app" : "Erro enquanto actualizava a aplicação", + "Error while updating app" : "Ocorreu um erro enquanto atualizava a aplicação", "Updated" : "Actualizado", - "Uninstalling ...." : "Desinstalando ....", + "Uninstalling ...." : "A desinstalar ....", "Error while uninstalling app" : "Erro durante a desinstalação da aplicação", "Uninstall" : "Desinstalar", "Select a profile picture" : "Seleccione uma fotografia de perfil", - "Very weak password" : "Password muito fraca", - "Weak password" : "Password fraca", - "So-so password" : "Password aceitável", - "Good password" : "Password Forte", - "Strong password" : "Password muito forte", + "Very weak password" : "Palavra-passe muito fraca", + "Weak password" : "Palavra-passe fraca", + "So-so password" : "Palavra-passe aceitável", + "Good password" : "Palavra-passe boa", + "Strong password" : "Palavra-passe forte", "Valid until {date}" : "Válido até {date}", - "Delete" : "Eliminar", + "Delete" : "Apagar", "Decrypting files... Please wait, this can take some time." : "A desencriptar os ficheiros... Por favor aguarde, esta operação pode demorar algum tempo.", "Delete encryption keys permanently." : "Excluir as chaves encriptadas de forma permanente.", "Restore encryption keys." : "Restaurar chaves encriptadas.", @@ -75,15 +75,15 @@ OC.L10N.register( "Unable to delete {objName}" : "Impossível apagar {objNome}", "Error creating group" : "Erro ao criar grupo", "A valid group name must be provided" : "Um nome válido do grupo tem de ser fornecido", - "deleted {groupName}" : "apagar {Nome do grupo}", - "undo" : "desfazer", + "deleted {groupName}" : "{groupName} apagado", + "undo" : "Anular", "no group" : "sem grupo", "never" : "nunca", - "deleted {userName}" : "apagar{utilizador}", + "deleted {userName}" : "{userName} apagado", "add group" : "Adicionar grupo", "A valid username must be provided" : "Um nome de utilizador válido deve ser fornecido", "Error creating user" : "Erro a criar utilizador", - "A valid password must be provided" : "Uma password válida deve ser fornecida", + "A valid password must be provided" : "Deve ser fornecida uma palavra-passe válida", "Warning: Home directory for user \"{user}\" already exists" : "Atenção: a pasta pessoal do utilizador \"{user}\" já existe", "__language_name__" : "__language_name__", "Personal Info" : "Informação Pessoal", @@ -95,9 +95,9 @@ OC.L10N.register( "Errors and fatal issues" : "Erros e problemas fatais", "Fatal issues only" : "Apenas problemas fatais", "None" : "Nenhum", - "Login" : "Login", + "Login" : "Iniciar Sessão", "Plain" : "Plano", - "NT LAN Manager" : "Gestor de NT LAN", + "NT LAN Manager" : "Gestor de REDE NT", "SSL" : "SSL", "TLS" : "TLS", "Security Warning" : "Aviso de Segurança", @@ -117,10 +117,9 @@ OC.L10N.register( "Locale not working" : "Internacionalização não está a funcionar", "System locale can not be set to a one which supports UTF-8." : "Não é possível pôr as definições de sistema compatíveis com UTF-8.", "This means that there might be problems with certain characters in file names." : "Isto significa que podem haver problemas com alguns caracteres nos nomes dos ficheiros.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Recomendamos fortemente que instale no seu sistema todos os pacotes necessários para suportar os seguintes locales: %s.", "URL generation in notification emails" : "Geração URL em e-mails de notificação", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Se a sua instalação não está instalada na raiz do domínio e usa o sistema cron, pode haver problemas com a geração de URL. Para evitar esses problemas, por favor, defina a opção \"overwritewebroot\" no ficheiro config.php para o caminho webroot da sua instalação (sugestão: \"%s\")", - "Connectivity Checks" : "Verificações de Conectividade", + "Connectivity Checks" : "Verificações de Conetividade", "No problems found" : "Nenhum problema encontrado", "Please double check the <a href='%s'>installation guides</a>." : "Por favor verifique <a href='%s'>installation guides</a>.", "Last cron was executed at %s." : "O ultimo cron foi executado em %s.", @@ -131,7 +130,7 @@ OC.L10N.register( "Use system's cron service to call the cron.php file every 15 minutes." : "Usar o serviço sistema cron para ligar o ficheiro cron.php a cada 15 minutos.", "Allow apps to use the Share API" : "Permitir que os utilizadores usem a API de partilha", "Allow users to share via link" : "Permitir que os utilizadores partilhem através do link", - "Enforce password protection" : "Forçar protecção da palavra passe", + "Enforce password protection" : "Forçar proteção por palavra-passe", "Allow public uploads" : "Permitir Envios Públicos", "Set default expiration date" : "Especificar a data padrão de expiração", "Expire after " : "Expira após", @@ -144,20 +143,22 @@ OC.L10N.register( "These groups will still be able to receive shares, but not to initiate them." : "Estes grupos poderão receber partilhas, mas não poderão iniciá-las.", "Enforce HTTPS" : "Forçar HTTPS", "Forces the clients to connect to %s via an encrypted connection." : "Forçar os clientes a ligar a %s através de uma ligação encriptada", + "Enforce HTTPS for subdomains" : "Forçar HTTPS para subdomínios", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Força os clientes a ligar a %s e a subdomínios via uma ligação encriptada.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Por favor ligue-se a %s através de uma ligação HTTPS para ligar/desligar o uso de ligação por SSL", "This is used for sending out notifications." : "Isto é utilizado para enviar notificações", - "Send mode" : "Modo de envio", + "Send mode" : "Modo de Envio", "From address" : "Do endereço", "mail" : "Correio", - "Authentication method" : "Método de autenticação", + "Authentication method" : "Método de Autenticação", "Authentication required" : "Autenticação necessária", - "Server address" : "Endereço do servidor", - "Port" : "Porto", + "Server address" : "Endereço do Servidor", + "Port" : "Porta", "Credentials" : "Credenciais", "SMTP Username" : "Nome de utilizador SMTP", - "SMTP Password" : "Password SMTP", + "SMTP Password" : "Palavra-passe SMTP", "Store credentials" : "Armazenar credenciais", - "Test email settings" : "Testar configurações de email", + "Test email settings" : "Testar definições de e-mail", "Send email" : "Enviar email", "Log level" : "Nível do registo", "More" : "Mais", @@ -183,16 +184,16 @@ OC.L10N.register( "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\">spread the word</a>!" : "Se quer ajudar no projecto\n⇥⇥<a href=\"https://owncloud.org/contribute\"\n⇥⇥⇥target=\"_blank\">aderir desenvolvimento</a>\n⇥⇥ou\n⇥⇥<a href=\"https://owncloud.org/promote\"\n⇥⇥⇥target=\"_blank\">espalhe a palavra</a>!", "Show First Run Wizard again" : "Mostrar novamente Wizard de Arranque Inicial", "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Usou <strong>%s</strong> do disponivel <strong>%s</strong>", - "Password" : "Password", + "Password" : "Palavra-passe", "Your password was changed" : "A sua palavra-passe foi alterada", - "Unable to change your password" : "Não foi possivel alterar a sua palavra-chave", - "Current password" : "Palavra-chave actual", - "New password" : "Nova palavra-chave", - "Change password" : "Alterar palavra-chave", + "Unable to change your password" : "Não foi possível alterar a sua palavra-passe", + "Current password" : "Palavra-passe atual", + "New password" : "Nova palavra-passe", + "Change password" : "Alterar palavra-passe", "Full Name" : "Nome completo", "Email" : "Email", "Your email address" : "O seu endereço de email", - "Fill in an email address to enable password recovery and receive notifications" : "Preencha com um endereço e-mail para permitir a recuperação de senha e receber notificações", + "Fill in an email address to enable password recovery and receive notifications" : "Preencha com um endereço e-mail para permitir a recuperação da palavra-passe e receber notificações", "Profile picture" : "Foto do perfil", "Upload new" : "Carregar novo", "Select new from Files" : "Seleccionar novo a partir dos ficheiros", @@ -209,18 +210,18 @@ OC.L10N.register( "Valid until %s" : "Válido até %s", "Import Root Certificate" : "Importar Certificado Root", "The encryption app is no longer enabled, please decrypt all your files" : "A aplicação de encriptação já não está ativa, por favor desincripte todos os seus ficheiros", - "Log-in password" : "Password de entrada", + "Log-in password" : "Palavra-passe de Iniciar a Sessão", "Decrypt all Files" : "Desencriptar todos os ficheiros", "Your encryption keys are moved to a backup location. If something went wrong you can restore the keys. Only delete them permanently if you are sure that all files are decrypted correctly." : "As suas chaves de encriptação foram movidas para um local de segurança. Em caso de algo correr mal você pode restaurar as chaves. Só deve eliminar as chaves permanentemente se tiver certeza absoluta que os ficheiros são decrepitados correctamente.", "Restore Encryption Keys" : "Restaurar as chaves de encriptação", "Delete Encryption Keys" : "Apagar as chaves de encriptação", "Show storage location" : "Mostrar a localização do armazenamento", "Show last log in" : "Mostrar ultimo acesso de entrada", - "Login Name" : "Nome de utilizador", + "Username" : "Nome de utilizador", "Create" : "Criar", - "Admin Recovery Password" : "Recuperar password de administrador", - "Enter the recovery password in order to recover the users files during password change" : "Digite a senha de recuperação, a fim de recuperar os arquivos de usuários durante a mudança de senha", - "Search Users and Groups" : "Pesquisa Utilizadores e Grupos", + "Admin Recovery Password" : "Recuperação da Palavra-passe de Administrador", + "Enter the recovery password in order to recover the users files during password change" : "Digite a senha de recuperação, a fim de recuperar os ficheiros dos utilizadores durante a mudança da palavra-passe", + "Search Users" : "Procurar Utilizadores", "Add Group" : "Adicionar grupo", "Group" : "Grupo", "Everyone" : "Para todos", @@ -229,7 +230,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Insira a quota de armazenamento (ex: \"512 MB\" ou \"12 GB\")", "Unlimited" : "Ilimitado", "Other" : "Outro", - "Username" : "Nome de utilizador", "Group Admin for" : "Administrador de Grupo para", "Quota" : "Quota", "Storage Location" : "Localização do Armazenamento", diff --git a/settings/l10n/pt_PT.json b/settings/l10n/pt_PT.json index 6af97b64a8a..b0b3984a956 100644 --- a/settings/l10n/pt_PT.json +++ b/settings/l10n/pt_PT.json @@ -1,71 +1,71 @@ { "translations": { - "Security & Setup Warnings" : "Avisos de Segurança e Configuração", + "Security & Setup Warnings" : "Avisos de Configuração e Segurança", "Cron" : "Cron", "Sharing" : "Partilha", "Security" : "Segurança", - "Email Server" : "Servidor de email", + "Email Server" : "Servidor de e-mail", "Log" : "Registo", "Authentication error" : "Erro na autenticação", "Your full name has been changed." : "O seu nome completo foi alterado.", "Unable to change full name" : "Não foi possível alterar o seu nome completo", "Group already exists" : "O grupo já existe", - "Unable to add group" : "Impossível acrescentar o grupo", + "Unable to add group" : "Não é possível acrescentar o grupo", "Files decrypted successfully" : "Ficheiros desencriptados com sucesso", - "Couldn't decrypt your files, please check your owncloud.log or ask your administrator" : "Não foi possível desencriptar os seus arquivos. Verifique a sua owncloud.log ou pergunte ao seu administrador", - "Couldn't decrypt your files, check your password and try again" : "Não foi possível desencriptar os seus arquivos. Verifique a sua senha e tente novamente", + "Couldn't decrypt your files, please check your owncloud.log or ask your administrator" : "Não foi possível descodificar os seus ficheiros. Por favor, verifique a sua owncloud.log ou pergunte ao seu administrador", + "Couldn't decrypt your files, check your password and try again" : "Não foi possível descodificar os seus ficheiros. Por favor, verifique a sua palavra-passe e tente novamente", "Encryption keys deleted permanently" : "A chave de encriptação foi eliminada permanentemente", "Couldn't permanently delete your encryption keys, please check your owncloud.log or ask your administrator" : "Não foi possível excluir permanentemente a sua chave de encriptação. Verifique a sua owncloud.log ou pergunte ao seu administrador", - "Couldn't remove app." : "Impossível remover aplicação.", - "Email saved" : "Email guardado", - "Invalid email" : "Email inválido", - "Unable to delete group" : "Impossível apagar grupo", - "Unable to delete user" : "Impossível apagar utilizador", + "Couldn't remove app." : "Não foi possível remover a aplicação.", + "Email saved" : "E-mail guardado", + "Invalid email" : "e-mail inválido", + "Unable to delete group" : "Não é possível apagar o grupo", + "Unable to delete user" : "Não é possível apagar o utilizador", "Backups restored successfully" : "Cópias de segurança foram restauradas com sucesso", "Couldn't restore your encryption keys, please check your owncloud.log or ask your administrator" : "Nao foi possivel restaurar as suas chaves de encriptacao. Verifique a sua owncloud.log ou pergunte ao seu administrador", "Language changed" : "Idioma alterado", "Invalid request" : "Pedido Inválido", - "Admins can't remove themself from the admin group" : "Os administradores não se podem remover a eles mesmos do grupo admin.", + "Admins can't remove themself from the admin group" : "Os administradores não se podem remover a eles próprios do grupo 'admin'.", "Unable to add user to group %s" : "Impossível acrescentar utilizador ao grupo %s", "Unable to remove user from group %s" : "Impossível apagar utilizador do grupo %s", "Couldn't update app." : "Não foi possível actualizar a aplicação.", - "Wrong password" : "Password errada", + "Wrong password" : "Palavra-passe errada", "No user supplied" : "Nenhum utilizador especificado.", - "Please provide an admin recovery password, otherwise all user data will be lost" : "Por favor forneça uma palavra chave de recuperação de administrador, caso contrário todos os dados de utilizador serão perdidos", - "Wrong admin recovery password. Please check the password and try again." : "Palavra chave de recuperação de administrador errada. Por favor verifique a palavra chave e tente de novo.", - "Back-end doesn't support password change, but the users encryption key was successfully updated." : "Não foi possível alterar a sua palavra-passe, mas a chave de encriptação foi atualizada.", - "Unable to change password" : "Não foi possível alterar a sua password", + "Please provide an admin recovery password, otherwise all user data will be lost" : "Por favor, forneça uma palavra-passe de recuperação de administrador, caso contrário seráo perdidos todos os dados", + "Wrong admin recovery password. Please check the password and try again." : "Palavra-passe de recuperação de administrador errada. Por favor, verifique a palavra-passe e tente novamente.", + "Back-end doesn't support password change, but the users encryption key was successfully updated." : "Não foi possível alterar a sua palavra-passe, mas a chave de codificação foi atualizada com sucesso.", + "Unable to change password" : "Não foi possível alterar a sua palavra-passe ", "Enabled" : "Ativada", "Not enabled" : "Desactivado", "Recommended" : "Recomendado", "Saved" : "Guardado", - "test email settings" : "testar configurações de email", + "test email settings" : "testar as definições de e-mail", "If you received this email, the settings seem to be correct." : "Se você recebeu este e-mail as configurações parecem estar correctas", "A problem occurred while sending the email. Please revise your settings." : "Um problema ocorreu ao enviar o email. Por favor verifique as suas definições.", "Email sent" : "E-mail enviado", "You need to set your user email before being able to send test emails." : "Você precisa de configurar o seu e-mail de usuário antes de ser capaz de enviar e-mails de teste", "Are you really sure you want add \"{domain}\" as trusted domain?" : "Você tem certeza que quer adicionar \"{domain}\" como domínio confiável?", "Add trusted domain" : "Adicionar domínio confiável ", - "Sending..." : "A enviar...", + "Sending..." : "A enviar ...", "All" : "Todos", "Please wait...." : "Por favor aguarde...", - "Error while disabling app" : "Erro enquanto desactivava a aplicação", - "Disable" : "Desactivar", - "Enable" : "Activar", - "Error while enabling app" : "Erro enquanto activava a aplicação", + "Error while disabling app" : "Ocorreu um erro enquanto desativava a aplicação", + "Disable" : "Desativar", + "Enable" : "Ativar", + "Error while enabling app" : "Ocorreu um erro enquanto ativava a aplicação", "Updating...." : "A Actualizar...", - "Error while updating app" : "Erro enquanto actualizava a aplicação", + "Error while updating app" : "Ocorreu um erro enquanto atualizava a aplicação", "Updated" : "Actualizado", - "Uninstalling ...." : "Desinstalando ....", + "Uninstalling ...." : "A desinstalar ....", "Error while uninstalling app" : "Erro durante a desinstalação da aplicação", "Uninstall" : "Desinstalar", "Select a profile picture" : "Seleccione uma fotografia de perfil", - "Very weak password" : "Password muito fraca", - "Weak password" : "Password fraca", - "So-so password" : "Password aceitável", - "Good password" : "Password Forte", - "Strong password" : "Password muito forte", + "Very weak password" : "Palavra-passe muito fraca", + "Weak password" : "Palavra-passe fraca", + "So-so password" : "Palavra-passe aceitável", + "Good password" : "Palavra-passe boa", + "Strong password" : "Palavra-passe forte", "Valid until {date}" : "Válido até {date}", - "Delete" : "Eliminar", + "Delete" : "Apagar", "Decrypting files... Please wait, this can take some time." : "A desencriptar os ficheiros... Por favor aguarde, esta operação pode demorar algum tempo.", "Delete encryption keys permanently." : "Excluir as chaves encriptadas de forma permanente.", "Restore encryption keys." : "Restaurar chaves encriptadas.", @@ -73,15 +73,15 @@ "Unable to delete {objName}" : "Impossível apagar {objNome}", "Error creating group" : "Erro ao criar grupo", "A valid group name must be provided" : "Um nome válido do grupo tem de ser fornecido", - "deleted {groupName}" : "apagar {Nome do grupo}", - "undo" : "desfazer", + "deleted {groupName}" : "{groupName} apagado", + "undo" : "Anular", "no group" : "sem grupo", "never" : "nunca", - "deleted {userName}" : "apagar{utilizador}", + "deleted {userName}" : "{userName} apagado", "add group" : "Adicionar grupo", "A valid username must be provided" : "Um nome de utilizador válido deve ser fornecido", "Error creating user" : "Erro a criar utilizador", - "A valid password must be provided" : "Uma password válida deve ser fornecida", + "A valid password must be provided" : "Deve ser fornecida uma palavra-passe válida", "Warning: Home directory for user \"{user}\" already exists" : "Atenção: a pasta pessoal do utilizador \"{user}\" já existe", "__language_name__" : "__language_name__", "Personal Info" : "Informação Pessoal", @@ -93,9 +93,9 @@ "Errors and fatal issues" : "Erros e problemas fatais", "Fatal issues only" : "Apenas problemas fatais", "None" : "Nenhum", - "Login" : "Login", + "Login" : "Iniciar Sessão", "Plain" : "Plano", - "NT LAN Manager" : "Gestor de NT LAN", + "NT LAN Manager" : "Gestor de REDE NT", "SSL" : "SSL", "TLS" : "TLS", "Security Warning" : "Aviso de Segurança", @@ -115,10 +115,9 @@ "Locale not working" : "Internacionalização não está a funcionar", "System locale can not be set to a one which supports UTF-8." : "Não é possível pôr as definições de sistema compatíveis com UTF-8.", "This means that there might be problems with certain characters in file names." : "Isto significa que podem haver problemas com alguns caracteres nos nomes dos ficheiros.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Recomendamos fortemente que instale no seu sistema todos os pacotes necessários para suportar os seguintes locales: %s.", "URL generation in notification emails" : "Geração URL em e-mails de notificação", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Se a sua instalação não está instalada na raiz do domínio e usa o sistema cron, pode haver problemas com a geração de URL. Para evitar esses problemas, por favor, defina a opção \"overwritewebroot\" no ficheiro config.php para o caminho webroot da sua instalação (sugestão: \"%s\")", - "Connectivity Checks" : "Verificações de Conectividade", + "Connectivity Checks" : "Verificações de Conetividade", "No problems found" : "Nenhum problema encontrado", "Please double check the <a href='%s'>installation guides</a>." : "Por favor verifique <a href='%s'>installation guides</a>.", "Last cron was executed at %s." : "O ultimo cron foi executado em %s.", @@ -129,7 +128,7 @@ "Use system's cron service to call the cron.php file every 15 minutes." : "Usar o serviço sistema cron para ligar o ficheiro cron.php a cada 15 minutos.", "Allow apps to use the Share API" : "Permitir que os utilizadores usem a API de partilha", "Allow users to share via link" : "Permitir que os utilizadores partilhem através do link", - "Enforce password protection" : "Forçar protecção da palavra passe", + "Enforce password protection" : "Forçar proteção por palavra-passe", "Allow public uploads" : "Permitir Envios Públicos", "Set default expiration date" : "Especificar a data padrão de expiração", "Expire after " : "Expira após", @@ -142,20 +141,22 @@ "These groups will still be able to receive shares, but not to initiate them." : "Estes grupos poderão receber partilhas, mas não poderão iniciá-las.", "Enforce HTTPS" : "Forçar HTTPS", "Forces the clients to connect to %s via an encrypted connection." : "Forçar os clientes a ligar a %s através de uma ligação encriptada", + "Enforce HTTPS for subdomains" : "Forçar HTTPS para subdomínios", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Força os clientes a ligar a %s e a subdomínios via uma ligação encriptada.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Por favor ligue-se a %s através de uma ligação HTTPS para ligar/desligar o uso de ligação por SSL", "This is used for sending out notifications." : "Isto é utilizado para enviar notificações", - "Send mode" : "Modo de envio", + "Send mode" : "Modo de Envio", "From address" : "Do endereço", "mail" : "Correio", - "Authentication method" : "Método de autenticação", + "Authentication method" : "Método de Autenticação", "Authentication required" : "Autenticação necessária", - "Server address" : "Endereço do servidor", - "Port" : "Porto", + "Server address" : "Endereço do Servidor", + "Port" : "Porta", "Credentials" : "Credenciais", "SMTP Username" : "Nome de utilizador SMTP", - "SMTP Password" : "Password SMTP", + "SMTP Password" : "Palavra-passe SMTP", "Store credentials" : "Armazenar credenciais", - "Test email settings" : "Testar configurações de email", + "Test email settings" : "Testar definições de e-mail", "Send email" : "Enviar email", "Log level" : "Nível do registo", "More" : "Mais", @@ -181,16 +182,16 @@ "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\">spread the word</a>!" : "Se quer ajudar no projecto\n⇥⇥<a href=\"https://owncloud.org/contribute\"\n⇥⇥⇥target=\"_blank\">aderir desenvolvimento</a>\n⇥⇥ou\n⇥⇥<a href=\"https://owncloud.org/promote\"\n⇥⇥⇥target=\"_blank\">espalhe a palavra</a>!", "Show First Run Wizard again" : "Mostrar novamente Wizard de Arranque Inicial", "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Usou <strong>%s</strong> do disponivel <strong>%s</strong>", - "Password" : "Password", + "Password" : "Palavra-passe", "Your password was changed" : "A sua palavra-passe foi alterada", - "Unable to change your password" : "Não foi possivel alterar a sua palavra-chave", - "Current password" : "Palavra-chave actual", - "New password" : "Nova palavra-chave", - "Change password" : "Alterar palavra-chave", + "Unable to change your password" : "Não foi possível alterar a sua palavra-passe", + "Current password" : "Palavra-passe atual", + "New password" : "Nova palavra-passe", + "Change password" : "Alterar palavra-passe", "Full Name" : "Nome completo", "Email" : "Email", "Your email address" : "O seu endereço de email", - "Fill in an email address to enable password recovery and receive notifications" : "Preencha com um endereço e-mail para permitir a recuperação de senha e receber notificações", + "Fill in an email address to enable password recovery and receive notifications" : "Preencha com um endereço e-mail para permitir a recuperação da palavra-passe e receber notificações", "Profile picture" : "Foto do perfil", "Upload new" : "Carregar novo", "Select new from Files" : "Seleccionar novo a partir dos ficheiros", @@ -207,18 +208,18 @@ "Valid until %s" : "Válido até %s", "Import Root Certificate" : "Importar Certificado Root", "The encryption app is no longer enabled, please decrypt all your files" : "A aplicação de encriptação já não está ativa, por favor desincripte todos os seus ficheiros", - "Log-in password" : "Password de entrada", + "Log-in password" : "Palavra-passe de Iniciar a Sessão", "Decrypt all Files" : "Desencriptar todos os ficheiros", "Your encryption keys are moved to a backup location. If something went wrong you can restore the keys. Only delete them permanently if you are sure that all files are decrypted correctly." : "As suas chaves de encriptação foram movidas para um local de segurança. Em caso de algo correr mal você pode restaurar as chaves. Só deve eliminar as chaves permanentemente se tiver certeza absoluta que os ficheiros são decrepitados correctamente.", "Restore Encryption Keys" : "Restaurar as chaves de encriptação", "Delete Encryption Keys" : "Apagar as chaves de encriptação", "Show storage location" : "Mostrar a localização do armazenamento", "Show last log in" : "Mostrar ultimo acesso de entrada", - "Login Name" : "Nome de utilizador", + "Username" : "Nome de utilizador", "Create" : "Criar", - "Admin Recovery Password" : "Recuperar password de administrador", - "Enter the recovery password in order to recover the users files during password change" : "Digite a senha de recuperação, a fim de recuperar os arquivos de usuários durante a mudança de senha", - "Search Users and Groups" : "Pesquisa Utilizadores e Grupos", + "Admin Recovery Password" : "Recuperação da Palavra-passe de Administrador", + "Enter the recovery password in order to recover the users files during password change" : "Digite a senha de recuperação, a fim de recuperar os ficheiros dos utilizadores durante a mudança da palavra-passe", + "Search Users" : "Procurar Utilizadores", "Add Group" : "Adicionar grupo", "Group" : "Grupo", "Everyone" : "Para todos", @@ -227,7 +228,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Insira a quota de armazenamento (ex: \"512 MB\" ou \"12 GB\")", "Unlimited" : "Ilimitado", "Other" : "Outro", - "Username" : "Nome de utilizador", "Group Admin for" : "Administrador de Grupo para", "Quota" : "Quota", "Storage Location" : "Localização do Armazenamento", diff --git a/settings/l10n/ro.js b/settings/l10n/ro.js index f903cbcda9c..122c53f2737 100644 --- a/settings/l10n/ro.js +++ b/settings/l10n/ro.js @@ -121,7 +121,7 @@ OC.L10N.register( "Import Root Certificate" : "Importă certificat root", "Log-in password" : "Parolă", "Decrypt all Files" : "Decriptează toate fișierele", - "Login Name" : "Autentificare", + "Username" : "Nume utilizator", "Create" : "Crează", "Admin Recovery Password" : "Parolă de recuperare a Administratorului", "Enter the recovery password in order to recover the users files during password change" : "Introdu parola de recuperare pentru a recupera fișierele utilizatorilor în timpul schimbării parolei", @@ -129,7 +129,6 @@ OC.L10N.register( "Default Quota" : "Cotă implicită", "Unlimited" : "Nelimitată", "Other" : "Altele", - "Username" : "Nume utilizator", "Quota" : "Cotă", "change full name" : "schimbă numele complet", "set new password" : "setează parolă nouă", diff --git a/settings/l10n/ro.json b/settings/l10n/ro.json index 39abac22679..68c3b2335fc 100644 --- a/settings/l10n/ro.json +++ b/settings/l10n/ro.json @@ -119,7 +119,7 @@ "Import Root Certificate" : "Importă certificat root", "Log-in password" : "Parolă", "Decrypt all Files" : "Decriptează toate fișierele", - "Login Name" : "Autentificare", + "Username" : "Nume utilizator", "Create" : "Crează", "Admin Recovery Password" : "Parolă de recuperare a Administratorului", "Enter the recovery password in order to recover the users files during password change" : "Introdu parola de recuperare pentru a recupera fișierele utilizatorilor în timpul schimbării parolei", @@ -127,7 +127,6 @@ "Default Quota" : "Cotă implicită", "Unlimited" : "Nelimitată", "Other" : "Altele", - "Username" : "Nume utilizator", "Quota" : "Cotă", "change full name" : "schimbă numele complet", "set new password" : "setează parolă nouă", diff --git a/settings/l10n/ru.js b/settings/l10n/ru.js index 4e3eea6d1ea..1ad8c854126 100644 --- a/settings/l10n/ru.js +++ b/settings/l10n/ru.js @@ -117,7 +117,7 @@ OC.L10N.register( "Locale not working" : "Локализация не работает", "System locale can not be set to a one which supports UTF-8." : "Невозможно установить системную локаль, поддерживающую UTF-8", "This means that there might be problems with certain characters in file names." : "Это значит, что могут быть проблемы с некоторыми символами в именах файлов.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Мы настоятельно рекомендуем установить требуемые пакеты в систему, для поддержки одной из следующих локалей: %s.", + "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Мы рекомендуем установить требуемые пакеты для вашей системы для поддержки одного из следующих языков: %s.", "URL generation in notification emails" : "Генерирование URL в уведомляющих электронных письмах", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Если ваша копия ownCloud установлена не в корне домена и использует планировщик cron системы, возможны проблемы с правильной генерацией URL. Чтобы избежать этого, установите опцию verwritewebroot файла config.php равной пути папки установки. (Вероятно, это \"%s\".)", "Connectivity Checks" : "Проверка соединения", @@ -144,9 +144,11 @@ OC.L10N.register( "These groups will still be able to receive shares, but not to initiate them." : "Эти группы смогут получать общие файлы, но не смогут отправлять их.", "Enforce HTTPS" : "HTTPS соединение обязательно", "Forces the clients to connect to %s via an encrypted connection." : "Принудить клиентов подключаться к %s через шифрованное соединение.", + "Enforce HTTPS for subdomains" : "HTTPS соединение обязательно для субдоменов", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Принудить клиентов подключаться к %s и субдоменам через шифрованное соединение.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Пожалуйста, подключитесь к %s используя HTTPS чтобы включить или отключить обязательные SSL подключения.", "This is used for sending out notifications." : "Используется для отправки уведомлений.", - "Send mode" : "Отправить сообщение", + "Send mode" : "Способ отправки", "From address" : "Адрес отправителя", "mail" : "почта", "Authentication method" : "Метод проверки подлинности", @@ -156,9 +158,9 @@ OC.L10N.register( "Credentials" : "Учётные данные", "SMTP Username" : "Пользователь SMTP", "SMTP Password" : "Пароль SMTP", - "Store credentials" : "Хранить учётные данные", + "Store credentials" : "Сохранить учётные данные", "Test email settings" : "Проверить настройки почты", - "Send email" : "Отправить сообщение", + "Send email" : "Отправить email", "Log level" : "Уровень детализации журнала", "More" : "Больше", "Less" : "Меньше", @@ -166,7 +168,7 @@ OC.L10N.register( "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." : "Разрабатывается <a href=\"http://ownCloud.org/contact\" target=\"_blank\">сообществом ownCloud</a>, <a href=\"https://github.com/owncloud\" target=\"_blank\">исходный код</a> доступен под лицензией <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", "More apps" : "Ещё приложения", "Add your app" : "Добавить своё приложение", - "by" : ":", + "by" : "автор", "licensed" : "Лицензировано", "Documentation:" : "Документация:", "User Documentation" : "Пользовательская документация", @@ -216,11 +218,11 @@ OC.L10N.register( "Delete Encryption Keys" : "Удалить Ключи Шифрования", "Show storage location" : "Показать местонахождение хранилища", "Show last log in" : "Показать последний вход в систему", - "Login Name" : "Имя пользователя", + "Username" : "Имя пользователя", "Create" : "Создать", "Admin Recovery Password" : "Восстановление пароля администратора", "Enter the recovery password in order to recover the users files during password change" : "Введите пароль для того, чтобы восстановить файлы пользователей при смене пароля", - "Search Users and Groups" : "Искать пользователей и групп", + "Search Users" : "Искать пользователей", "Add Group" : "Добавить группу", "Group" : "Группа", "Everyone" : "Все", @@ -229,7 +231,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Пожалуйста, введите квоту на хранилище (например: \"512 MB\" или \"12 GB\")", "Unlimited" : "Неограниченно", "Other" : "Другое", - "Username" : "Имя пользователя", "Group Admin for" : "Для группы Администраторов", "Quota" : "Квота", "Storage Location" : "Место хранилища", diff --git a/settings/l10n/ru.json b/settings/l10n/ru.json index 352dde9bf37..c1703281413 100644 --- a/settings/l10n/ru.json +++ b/settings/l10n/ru.json @@ -115,7 +115,7 @@ "Locale not working" : "Локализация не работает", "System locale can not be set to a one which supports UTF-8." : "Невозможно установить системную локаль, поддерживающую UTF-8", "This means that there might be problems with certain characters in file names." : "Это значит, что могут быть проблемы с некоторыми символами в именах файлов.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Мы настоятельно рекомендуем установить требуемые пакеты в систему, для поддержки одной из следующих локалей: %s.", + "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Мы рекомендуем установить требуемые пакеты для вашей системы для поддержки одного из следующих языков: %s.", "URL generation in notification emails" : "Генерирование URL в уведомляющих электронных письмах", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Если ваша копия ownCloud установлена не в корне домена и использует планировщик cron системы, возможны проблемы с правильной генерацией URL. Чтобы избежать этого, установите опцию verwritewebroot файла config.php равной пути папки установки. (Вероятно, это \"%s\".)", "Connectivity Checks" : "Проверка соединения", @@ -142,9 +142,11 @@ "These groups will still be able to receive shares, but not to initiate them." : "Эти группы смогут получать общие файлы, но не смогут отправлять их.", "Enforce HTTPS" : "HTTPS соединение обязательно", "Forces the clients to connect to %s via an encrypted connection." : "Принудить клиентов подключаться к %s через шифрованное соединение.", + "Enforce HTTPS for subdomains" : "HTTPS соединение обязательно для субдоменов", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Принудить клиентов подключаться к %s и субдоменам через шифрованное соединение.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Пожалуйста, подключитесь к %s используя HTTPS чтобы включить или отключить обязательные SSL подключения.", "This is used for sending out notifications." : "Используется для отправки уведомлений.", - "Send mode" : "Отправить сообщение", + "Send mode" : "Способ отправки", "From address" : "Адрес отправителя", "mail" : "почта", "Authentication method" : "Метод проверки подлинности", @@ -154,9 +156,9 @@ "Credentials" : "Учётные данные", "SMTP Username" : "Пользователь SMTP", "SMTP Password" : "Пароль SMTP", - "Store credentials" : "Хранить учётные данные", + "Store credentials" : "Сохранить учётные данные", "Test email settings" : "Проверить настройки почты", - "Send email" : "Отправить сообщение", + "Send email" : "Отправить email", "Log level" : "Уровень детализации журнала", "More" : "Больше", "Less" : "Меньше", @@ -164,7 +166,7 @@ "Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." : "Разрабатывается <a href=\"http://ownCloud.org/contact\" target=\"_blank\">сообществом ownCloud</a>, <a href=\"https://github.com/owncloud\" target=\"_blank\">исходный код</a> доступен под лицензией <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", "More apps" : "Ещё приложения", "Add your app" : "Добавить своё приложение", - "by" : ":", + "by" : "автор", "licensed" : "Лицензировано", "Documentation:" : "Документация:", "User Documentation" : "Пользовательская документация", @@ -214,11 +216,11 @@ "Delete Encryption Keys" : "Удалить Ключи Шифрования", "Show storage location" : "Показать местонахождение хранилища", "Show last log in" : "Показать последний вход в систему", - "Login Name" : "Имя пользователя", + "Username" : "Имя пользователя", "Create" : "Создать", "Admin Recovery Password" : "Восстановление пароля администратора", "Enter the recovery password in order to recover the users files during password change" : "Введите пароль для того, чтобы восстановить файлы пользователей при смене пароля", - "Search Users and Groups" : "Искать пользователей и групп", + "Search Users" : "Искать пользователей", "Add Group" : "Добавить группу", "Group" : "Группа", "Everyone" : "Все", @@ -227,7 +229,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Пожалуйста, введите квоту на хранилище (например: \"512 MB\" или \"12 GB\")", "Unlimited" : "Неограниченно", "Other" : "Другое", - "Username" : "Имя пользователя", "Group Admin for" : "Для группы Администраторов", "Quota" : "Квота", "Storage Location" : "Место хранилища", diff --git a/settings/l10n/si_LK.js b/settings/l10n/si_LK.js index 55acf32e881..26a22fa84b7 100644 --- a/settings/l10n/si_LK.js +++ b/settings/l10n/si_LK.js @@ -44,11 +44,10 @@ OC.L10N.register( "Language" : "භාෂාව", "Help translate" : "පරිවර්ථන සහය", "Import Root Certificate" : "මූල සහතිකය ආයාත කරන්න", - "Login Name" : "ප්රවිශ්ටය", + "Username" : "පරිශීලක නම", "Create" : "තනන්න", "Default Quota" : "සාමාන්ය සලාකය", "Other" : "වෙනත්", - "Username" : "පරිශීලක නම", "Quota" : "සලාකය" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/si_LK.json b/settings/l10n/si_LK.json index 2b763e6387d..c67f65c9b87 100644 --- a/settings/l10n/si_LK.json +++ b/settings/l10n/si_LK.json @@ -42,11 +42,10 @@ "Language" : "භාෂාව", "Help translate" : "පරිවර්ථන සහය", "Import Root Certificate" : "මූල සහතිකය ආයාත කරන්න", - "Login Name" : "ප්රවිශ්ටය", + "Username" : "පරිශීලක නම", "Create" : "තනන්න", "Default Quota" : "සාමාන්ය සලාකය", "Other" : "වෙනත්", - "Username" : "පරිශීලක නම", "Quota" : "සලාකය" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/sk_SK.js b/settings/l10n/sk_SK.js index 2bea7839552..3e44cd259e4 100644 --- a/settings/l10n/sk_SK.js +++ b/settings/l10n/sk_SK.js @@ -117,7 +117,6 @@ OC.L10N.register( "Locale not working" : "Lokalizácia nefunguje", "System locale can not be set to a one which supports UTF-8." : "Nie je možné nastaviť znakovú sadu, ktorá podporuje UTF-8.", "This means that there might be problems with certain characters in file names." : "To znamená, že sa môžu vyskytnúť problémy s niektorými znakmi v názvoch súborov.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Dôrazne doporučujeme nainštalovať na váš systém požadované balíčky podporujúce jednu z nasledovných znakových sád: %s.", "URL generation in notification emails" : "Generovanie adresy URL v oznamovacích emailoch", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Inštalácia mimo koreňový priečinok domény a používanie systémového príkazu cron môže spôsobiť problém s generovaním správnej URL. Pre zabránenie týmto chybám nastavte prosím správnu cestu v svojom config.php súbore pre hodnotu \"overwritewebroot\" (Doporučujeme: \"%s\")", "Connectivity Checks" : "Overovanie pripojenia", @@ -216,11 +215,10 @@ OC.L10N.register( "Delete Encryption Keys" : "Vymazať šifrovacie kľúče", "Show storage location" : "Zobraziť umiestnenie úložiska", "Show last log in" : "Zobraziť posledné prihlásenie", - "Login Name" : "Prihlasovacie meno", + "Username" : "Používateľské meno", "Create" : "Vytvoriť", "Admin Recovery Password" : "Obnovenie hesla administrátora", "Enter the recovery password in order to recover the users files during password change" : "Zadajte heslo pre obnovenie súborov používateľa pri zmene hesla", - "Search Users and Groups" : "Prehľadať používateľov a skupiny", "Add Group" : "Pridať skupinu", "Group" : "Skupina", "Everyone" : "Všetci", @@ -229,7 +227,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Prosím zadajte kvótu úložného priestoru (napr.: \"512 MB\" alebo \"12 GB\")", "Unlimited" : "Nelimitované", "Other" : "Iné", - "Username" : "Používateľské meno", "Group Admin for" : "Administrátor skupiny", "Quota" : "Kvóta", "Storage Location" : "Umiestnenie úložiska", diff --git a/settings/l10n/sk_SK.json b/settings/l10n/sk_SK.json index 15e4d67b4cf..f5fd698cd2a 100644 --- a/settings/l10n/sk_SK.json +++ b/settings/l10n/sk_SK.json @@ -115,7 +115,6 @@ "Locale not working" : "Lokalizácia nefunguje", "System locale can not be set to a one which supports UTF-8." : "Nie je možné nastaviť znakovú sadu, ktorá podporuje UTF-8.", "This means that there might be problems with certain characters in file names." : "To znamená, že sa môžu vyskytnúť problémy s niektorými znakmi v názvoch súborov.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Dôrazne doporučujeme nainštalovať na váš systém požadované balíčky podporujúce jednu z nasledovných znakových sád: %s.", "URL generation in notification emails" : "Generovanie adresy URL v oznamovacích emailoch", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Inštalácia mimo koreňový priečinok domény a používanie systémového príkazu cron môže spôsobiť problém s generovaním správnej URL. Pre zabránenie týmto chybám nastavte prosím správnu cestu v svojom config.php súbore pre hodnotu \"overwritewebroot\" (Doporučujeme: \"%s\")", "Connectivity Checks" : "Overovanie pripojenia", @@ -214,11 +213,10 @@ "Delete Encryption Keys" : "Vymazať šifrovacie kľúče", "Show storage location" : "Zobraziť umiestnenie úložiska", "Show last log in" : "Zobraziť posledné prihlásenie", - "Login Name" : "Prihlasovacie meno", + "Username" : "Používateľské meno", "Create" : "Vytvoriť", "Admin Recovery Password" : "Obnovenie hesla administrátora", "Enter the recovery password in order to recover the users files during password change" : "Zadajte heslo pre obnovenie súborov používateľa pri zmene hesla", - "Search Users and Groups" : "Prehľadať používateľov a skupiny", "Add Group" : "Pridať skupinu", "Group" : "Skupina", "Everyone" : "Všetci", @@ -227,7 +225,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Prosím zadajte kvótu úložného priestoru (napr.: \"512 MB\" alebo \"12 GB\")", "Unlimited" : "Nelimitované", "Other" : "Iné", - "Username" : "Používateľské meno", "Group Admin for" : "Administrátor skupiny", "Quota" : "Kvóta", "Storage Location" : "Umiestnenie úložiska", diff --git a/settings/l10n/sl.js b/settings/l10n/sl.js index a3b39dce1b2..4e1ebd512ed 100644 --- a/settings/l10n/sl.js +++ b/settings/l10n/sl.js @@ -1,6 +1,7 @@ OC.L10N.register( "settings", { + "Security & Setup Warnings" : "Varnostna in nastavitvena opozorila", "Cron" : "Periodično opravilo", "Sharing" : "Souporaba", "Security" : "Varnost", @@ -112,7 +113,8 @@ OC.L10N.register( "Locale not working" : "Jezikovne prilagoditve ne delujejo.", "System locale can not be set to a one which supports UTF-8." : "Sistemskih jezikovnih nastavitev ni mogoče nastaviti na možnost, ki podpira nabor UTF-8.", "This means that there might be problems with certain characters in file names." : "To pomeni, da se lahko pojavijo napake pri nekaterih znakih v imenih datotek.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Priporočljivo je namestiti zahtevane pakete v sistem za podporo ene izmed navedenih jezikovnih možnosti: %s", + "URL generation in notification emails" : "Ustvarjanje naslova URL v elektronskih sporočilih", + "Connectivity Checks" : "Preverjanje povezav", "No problems found" : "Ni zaznanih težav", "Please double check the <a href='%s'>installation guides</a>." : "Preverite <a href='%s'>navodila namestitve</a>.", "Last cron was executed at %s." : "Zadnje periodično opravilo cron je bilo izvedeno ob %s.", @@ -136,6 +138,8 @@ OC.L10N.register( "These groups will still be able to receive shares, but not to initiate them." : "Te skupine lahko sprejemajo mape v souporabo, ne morejo pa souporabe dovoliti", "Enforce HTTPS" : "Zahtevaj uporabo HTTPS", "Forces the clients to connect to %s via an encrypted connection." : "Vsili povezavo odjemalca z %s preko šifrirane povezave.", + "Enforce HTTPS for subdomains" : "Vsili protokol HTTPS za podrejene domene", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Vsili povezavo odjemalcev na naslovu %s in na vseh podrejenih domenah preko šifrirane povezave. ", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Za nastavljanje šifriranja SSL je treba vzpostaviti povezavo z mestom %s preko protokola HTTPS.", "This is used for sending out notifications." : "Možnost je uporabljena za omogočanje pošiljanja obvestil.", "Send mode" : "Način pošiljanja", @@ -204,11 +208,11 @@ OC.L10N.register( "Delete Encryption Keys" : "Izbriši šifrirne ključe", "Show storage location" : "Pokaži mesto shrambe", "Show last log in" : "Pokaži podatke zadnje prijave", - "Login Name" : "Prijavno ime", + "Username" : "Uporabniško ime", "Create" : "Ustvari", "Admin Recovery Password" : "Obnovitev skrbniškega gesla", "Enter the recovery password in order to recover the users files during password change" : "Vnesite geslo, ki omogoča obnovitev uporabniških datotek med spreminjanjem gesla", - "Search Users and Groups" : "Iskanje uporabnikov in skupin", + "Search Users" : "Poišči med uporabniki", "Add Group" : "Dodaj skupino", "Group" : "Skupina", "Everyone" : "Vsi", @@ -217,7 +221,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Vnesite količinsko omejitev prostora (na primer: \"512 MB\" ali \"12 GB\")", "Unlimited" : "Neomejeno", "Other" : "Drugo", - "Username" : "Uporabniško ime", "Group Admin for" : "Skrbnik skupine za", "Quota" : "Količinska omejitev", "Storage Location" : "Mesto shrambe", diff --git a/settings/l10n/sl.json b/settings/l10n/sl.json index 7ec03873132..417ef5f6a1f 100644 --- a/settings/l10n/sl.json +++ b/settings/l10n/sl.json @@ -1,4 +1,5 @@ { "translations": { + "Security & Setup Warnings" : "Varnostna in nastavitvena opozorila", "Cron" : "Periodično opravilo", "Sharing" : "Souporaba", "Security" : "Varnost", @@ -110,7 +111,8 @@ "Locale not working" : "Jezikovne prilagoditve ne delujejo.", "System locale can not be set to a one which supports UTF-8." : "Sistemskih jezikovnih nastavitev ni mogoče nastaviti na možnost, ki podpira nabor UTF-8.", "This means that there might be problems with certain characters in file names." : "To pomeni, da se lahko pojavijo napake pri nekaterih znakih v imenih datotek.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Priporočljivo je namestiti zahtevane pakete v sistem za podporo ene izmed navedenih jezikovnih možnosti: %s", + "URL generation in notification emails" : "Ustvarjanje naslova URL v elektronskih sporočilih", + "Connectivity Checks" : "Preverjanje povezav", "No problems found" : "Ni zaznanih težav", "Please double check the <a href='%s'>installation guides</a>." : "Preverite <a href='%s'>navodila namestitve</a>.", "Last cron was executed at %s." : "Zadnje periodično opravilo cron je bilo izvedeno ob %s.", @@ -134,6 +136,8 @@ "These groups will still be able to receive shares, but not to initiate them." : "Te skupine lahko sprejemajo mape v souporabo, ne morejo pa souporabe dovoliti", "Enforce HTTPS" : "Zahtevaj uporabo HTTPS", "Forces the clients to connect to %s via an encrypted connection." : "Vsili povezavo odjemalca z %s preko šifrirane povezave.", + "Enforce HTTPS for subdomains" : "Vsili protokol HTTPS za podrejene domene", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "Vsili povezavo odjemalcev na naslovu %s in na vseh podrejenih domenah preko šifrirane povezave. ", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "Za nastavljanje šifriranja SSL je treba vzpostaviti povezavo z mestom %s preko protokola HTTPS.", "This is used for sending out notifications." : "Možnost je uporabljena za omogočanje pošiljanja obvestil.", "Send mode" : "Način pošiljanja", @@ -202,11 +206,11 @@ "Delete Encryption Keys" : "Izbriši šifrirne ključe", "Show storage location" : "Pokaži mesto shrambe", "Show last log in" : "Pokaži podatke zadnje prijave", - "Login Name" : "Prijavno ime", + "Username" : "Uporabniško ime", "Create" : "Ustvari", "Admin Recovery Password" : "Obnovitev skrbniškega gesla", "Enter the recovery password in order to recover the users files during password change" : "Vnesite geslo, ki omogoča obnovitev uporabniških datotek med spreminjanjem gesla", - "Search Users and Groups" : "Iskanje uporabnikov in skupin", + "Search Users" : "Poišči med uporabniki", "Add Group" : "Dodaj skupino", "Group" : "Skupina", "Everyone" : "Vsi", @@ -215,7 +219,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Vnesite količinsko omejitev prostora (na primer: \"512 MB\" ali \"12 GB\")", "Unlimited" : "Neomejeno", "Other" : "Drugo", - "Username" : "Uporabniško ime", "Group Admin for" : "Skrbnik skupine za", "Quota" : "Količinska omejitev", "Storage Location" : "Mesto shrambe", diff --git a/settings/l10n/sq.js b/settings/l10n/sq.js index 60ad553efea..fbb926feeb7 100644 --- a/settings/l10n/sq.js +++ b/settings/l10n/sq.js @@ -1,17 +1,29 @@ OC.L10N.register( "settings", { + "Security & Setup Warnings" : "Paralajmërimet e Sigurisë dhe Konfigurimit", "Cron" : "Cron", "Sharing" : "Ndarje", "Security" : "Siguria", + "Email Server" : "Serveri Email", "Log" : "Historik aktiviteti", "Authentication error" : "Gabim autentifikimi", + "Your full name has been changed." : "Emri juaj i plotë ka ndryshuar.", + "Unable to change full name" : "Nuk mund të ndryshohet emri i plotë", "Group already exists" : "Grupi ekziston", "Unable to add group" : "E pamundur të shtohet grupi", + "Files decrypted successfully" : "Skedarët janë dëshifruar me sukses", + "Couldn't decrypt your files, please check your owncloud.log or ask your administrator" : "Nuk mund të dëshifrohen skedarët tuaj, ju lutem kontrolloni owncloud.log ose pyesni administratorin tuaj.", + "Couldn't decrypt your files, check your password and try again" : "Nuk mund të dëshifrohen skedarët tuaj, ju lutem kontrolloni fjalëkalimin tuaj dhe provoni përsëri.", + "Encryption keys deleted permanently" : "Çelësat e shifrimit u fshinë përfundimisht", + "Couldn't permanently delete your encryption keys, please check your owncloud.log or ask your administrator" : "Nuk mund të fshihen përfundimisht çelësat tuaj të shifrimit, ju lutem kontrolloni owncloud.log ose pyesni administratorin tuaj.", + "Couldn't remove app." : "Nuk mund të hiqet aplikacioni.", "Email saved" : "Email u ruajt", "Invalid email" : "Email jo i vlefshëm", "Unable to delete group" : "E pamundur të fshihet grupi", "Unable to delete user" : "E pamundur të fshihet përdoruesi", + "Backups restored successfully" : "Kopjet rezervë u restauruan me sukses", + "Couldn't restore your encryption keys, please check your owncloud.log or ask your administrator" : "Nuk mund të restaurohen çelësat tuaj të shifrimit, ju lutem kontrolloni owncloud.log ose pyesni administratorin tuaj.", "Language changed" : "Gjuha u ndryshua", "Invalid request" : "Kërkesë e pavlefshme", "Admins can't remove themself from the admin group" : "Administratorët nuk mund të heqin vehten prej grupit admin", @@ -19,8 +31,16 @@ OC.L10N.register( "Unable to remove user from group %s" : "E pamundur të hiqet përdoruesi nga grupi %s", "Couldn't update app." : "E pamundur të përditësohet app.", "Wrong password" : "Fjalëkalim i gabuar", + "No user supplied" : "Nuk është dhënë asnjë përdorues", + "Please provide an admin recovery password, otherwise all user data will be lost" : "Ju lutem jepni një fjalëkalim restaurimi administrativ, në të kundërt të gjitha të dhënat do humbasin", + "Wrong admin recovery password. Please check the password and try again." : "Fjalëkalim i gabuar restaurimi administrativ. Ju lutem kontrolloni fjalëkalimin dhe provoni përsëri.", + "Back-end doesn't support password change, but the users encryption key was successfully updated." : "Paneli i kontrollit nuk mbështet ndryshimin e fjalëkalimit, por çelësi i shifrimit të përdoruesit u modifikua me sukses.", "Unable to change password" : "Fjalëkalimi nuk mund të ndryshohet", + "Enabled" : "Aktivizuar", + "Not enabled" : "Jo aktive", + "Recommended" : "E rekomanduar", "Saved" : "U ruajt", + "test email settings" : "parametra test për email", "Email sent" : "Email-i u dërgua", "Sending..." : "Duke dërguar", "All" : "Të gjitha", @@ -31,6 +51,11 @@ OC.L10N.register( "Error while updating app" : "Gabim gjatë përditësimit të app", "Updated" : "I përditësuar", "Select a profile picture" : "Zgjidh një foto profili", + "Very weak password" : "Fjalëkalim shumë i dobët", + "Weak password" : "Fjalëkalim i dobët", + "So-so password" : "Fjalëkalim i pranueshëm", + "Good password" : "Fjalëkalim i mirë", + "Strong password" : "Fjalëkalim shumë i mirë", "Delete" : "Fshi", "Groups" : "Grupet", "deleted {groupName}" : "u fshi {groupName}", @@ -97,17 +122,15 @@ OC.L10N.register( "Language" : "Gjuha", "Help translate" : "Ndihmoni në përkthim", "Log-in password" : "Fjalëkalimi i hyrjes", - "Login Name" : "Emri i Përdoruesit", + "Username" : "Përdoruesi", "Create" : "Krijo", "Admin Recovery Password" : "Rigjetja e fjalëkalimit të Admin", "Enter the recovery password in order to recover the users files during password change" : "Jepni fjalëkalimin e rigjetjes për të rigjetur skedarët e përdoruesit gjatë ndryshimit të fjalëkalimit", - "Search Users and Groups" : "Kërko Përdorues apo Grupe", "Add Group" : "Shto Grup", "Group" : "Grup", "Everyone" : "Të gjithë", "Unlimited" : "E pakufizuar", "Other" : "Tjetër", - "Username" : "Përdoruesi", "Last Login" : "Hyrja e fundit", "change full name" : "ndrysho emrin e plotë", "set new password" : "vendos fjalëkalim të ri", diff --git a/settings/l10n/sq.json b/settings/l10n/sq.json index 852ce5f3004..2fa9c2f6d17 100644 --- a/settings/l10n/sq.json +++ b/settings/l10n/sq.json @@ -1,15 +1,27 @@ { "translations": { + "Security & Setup Warnings" : "Paralajmërimet e Sigurisë dhe Konfigurimit", "Cron" : "Cron", "Sharing" : "Ndarje", "Security" : "Siguria", + "Email Server" : "Serveri Email", "Log" : "Historik aktiviteti", "Authentication error" : "Gabim autentifikimi", + "Your full name has been changed." : "Emri juaj i plotë ka ndryshuar.", + "Unable to change full name" : "Nuk mund të ndryshohet emri i plotë", "Group already exists" : "Grupi ekziston", "Unable to add group" : "E pamundur të shtohet grupi", + "Files decrypted successfully" : "Skedarët janë dëshifruar me sukses", + "Couldn't decrypt your files, please check your owncloud.log or ask your administrator" : "Nuk mund të dëshifrohen skedarët tuaj, ju lutem kontrolloni owncloud.log ose pyesni administratorin tuaj.", + "Couldn't decrypt your files, check your password and try again" : "Nuk mund të dëshifrohen skedarët tuaj, ju lutem kontrolloni fjalëkalimin tuaj dhe provoni përsëri.", + "Encryption keys deleted permanently" : "Çelësat e shifrimit u fshinë përfundimisht", + "Couldn't permanently delete your encryption keys, please check your owncloud.log or ask your administrator" : "Nuk mund të fshihen përfundimisht çelësat tuaj të shifrimit, ju lutem kontrolloni owncloud.log ose pyesni administratorin tuaj.", + "Couldn't remove app." : "Nuk mund të hiqet aplikacioni.", "Email saved" : "Email u ruajt", "Invalid email" : "Email jo i vlefshëm", "Unable to delete group" : "E pamundur të fshihet grupi", "Unable to delete user" : "E pamundur të fshihet përdoruesi", + "Backups restored successfully" : "Kopjet rezervë u restauruan me sukses", + "Couldn't restore your encryption keys, please check your owncloud.log or ask your administrator" : "Nuk mund të restaurohen çelësat tuaj të shifrimit, ju lutem kontrolloni owncloud.log ose pyesni administratorin tuaj.", "Language changed" : "Gjuha u ndryshua", "Invalid request" : "Kërkesë e pavlefshme", "Admins can't remove themself from the admin group" : "Administratorët nuk mund të heqin vehten prej grupit admin", @@ -17,8 +29,16 @@ "Unable to remove user from group %s" : "E pamundur të hiqet përdoruesi nga grupi %s", "Couldn't update app." : "E pamundur të përditësohet app.", "Wrong password" : "Fjalëkalim i gabuar", + "No user supplied" : "Nuk është dhënë asnjë përdorues", + "Please provide an admin recovery password, otherwise all user data will be lost" : "Ju lutem jepni një fjalëkalim restaurimi administrativ, në të kundërt të gjitha të dhënat do humbasin", + "Wrong admin recovery password. Please check the password and try again." : "Fjalëkalim i gabuar restaurimi administrativ. Ju lutem kontrolloni fjalëkalimin dhe provoni përsëri.", + "Back-end doesn't support password change, but the users encryption key was successfully updated." : "Paneli i kontrollit nuk mbështet ndryshimin e fjalëkalimit, por çelësi i shifrimit të përdoruesit u modifikua me sukses.", "Unable to change password" : "Fjalëkalimi nuk mund të ndryshohet", + "Enabled" : "Aktivizuar", + "Not enabled" : "Jo aktive", + "Recommended" : "E rekomanduar", "Saved" : "U ruajt", + "test email settings" : "parametra test për email", "Email sent" : "Email-i u dërgua", "Sending..." : "Duke dërguar", "All" : "Të gjitha", @@ -29,6 +49,11 @@ "Error while updating app" : "Gabim gjatë përditësimit të app", "Updated" : "I përditësuar", "Select a profile picture" : "Zgjidh një foto profili", + "Very weak password" : "Fjalëkalim shumë i dobët", + "Weak password" : "Fjalëkalim i dobët", + "So-so password" : "Fjalëkalim i pranueshëm", + "Good password" : "Fjalëkalim i mirë", + "Strong password" : "Fjalëkalim shumë i mirë", "Delete" : "Fshi", "Groups" : "Grupet", "deleted {groupName}" : "u fshi {groupName}", @@ -95,17 +120,15 @@ "Language" : "Gjuha", "Help translate" : "Ndihmoni në përkthim", "Log-in password" : "Fjalëkalimi i hyrjes", - "Login Name" : "Emri i Përdoruesit", + "Username" : "Përdoruesi", "Create" : "Krijo", "Admin Recovery Password" : "Rigjetja e fjalëkalimit të Admin", "Enter the recovery password in order to recover the users files during password change" : "Jepni fjalëkalimin e rigjetjes për të rigjetur skedarët e përdoruesit gjatë ndryshimit të fjalëkalimit", - "Search Users and Groups" : "Kërko Përdorues apo Grupe", "Add Group" : "Shto Grup", "Group" : "Grup", "Everyone" : "Të gjithë", "Unlimited" : "E pakufizuar", "Other" : "Tjetër", - "Username" : "Përdoruesi", "Last Login" : "Hyrja e fundit", "change full name" : "ndrysho emrin e plotë", "set new password" : "vendos fjalëkalim të ri", diff --git a/settings/l10n/sr.js b/settings/l10n/sr.js index a01d9861750..e8952f96ef1 100644 --- a/settings/l10n/sr.js +++ b/settings/l10n/sr.js @@ -74,13 +74,12 @@ OC.L10N.register( "Cancel" : "Откажи", "Language" : "Језик", "Help translate" : " Помозите у превођењу", - "Login Name" : "Корисничко име", + "Username" : "Корисничко име", "Create" : "Направи", "Group" : "Група", "Default Quota" : "Подразумевано ограничење", "Unlimited" : "Неограничено", "Other" : "Друго", - "Username" : "Корисничко име", "Quota" : "Ограничење", "set new password" : "постави нову лозинку", "Default" : "Подразумевано" diff --git a/settings/l10n/sr.json b/settings/l10n/sr.json index 39858457640..492f66dae51 100644 --- a/settings/l10n/sr.json +++ b/settings/l10n/sr.json @@ -72,13 +72,12 @@ "Cancel" : "Откажи", "Language" : "Језик", "Help translate" : " Помозите у превођењу", - "Login Name" : "Корисничко име", + "Username" : "Корисничко име", "Create" : "Направи", "Group" : "Група", "Default Quota" : "Подразумевано ограничење", "Unlimited" : "Неограничено", "Other" : "Друго", - "Username" : "Корисничко име", "Quota" : "Ограничење", "set new password" : "постави нову лозинку", "Default" : "Подразумевано" diff --git a/settings/l10n/sr@latin.js b/settings/l10n/sr@latin.js index 1a85ab01f37..0542d77592f 100644 --- a/settings/l10n/sr@latin.js +++ b/settings/l10n/sr@latin.js @@ -22,9 +22,9 @@ OC.L10N.register( "Email" : "E-mail", "Cancel" : "Otkaži", "Language" : "Jezik", + "Username" : "Korisničko ime", "Create" : "Napravi", "Group" : "Grupa", - "Other" : "Drugo", - "Username" : "Korisničko ime" + "Other" : "Drugo" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/settings/l10n/sr@latin.json b/settings/l10n/sr@latin.json index 654c8ded122..8a83afea7c4 100644 --- a/settings/l10n/sr@latin.json +++ b/settings/l10n/sr@latin.json @@ -20,9 +20,9 @@ "Email" : "E-mail", "Cancel" : "Otkaži", "Language" : "Jezik", + "Username" : "Korisničko ime", "Create" : "Napravi", "Group" : "Grupa", - "Other" : "Drugo", - "Username" : "Korisničko ime" + "Other" : "Drugo" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/settings/l10n/sv.js b/settings/l10n/sv.js index c87c180bb6e..afd8122c7f3 100644 --- a/settings/l10n/sv.js +++ b/settings/l10n/sv.js @@ -109,7 +109,6 @@ OC.L10N.register( "Locale not working" : "Locale fungerar inte", "System locale can not be set to a one which supports UTF-8." : "Systemspråk kan inte ställas in till ett som stödjer UTF-8.", "This means that there might be problems with certain characters in file names." : "Detta betyder att där kan komma att uppstå problem med vissa tecken i filnamn.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Vi rekommenderar starkt att installera de paket som krävs på ditt system för att stödja en av följande systemspråk: %s.", "Please double check the <a href='%s'>installation guides</a>." : "Var god kontrollera <a href='%s'>installationsguiden</a>.", "Last cron was executed at %s." : "Sista cron kördes vid %s", "Last cron was executed at %s. This is more than an hour ago, something seems wrong." : "Sista cron kördes vid %s. Detta är mer än en timme sedan, något verkar fel.", @@ -194,11 +193,10 @@ OC.L10N.register( "Your encryption keys are moved to a backup location. If something went wrong you can restore the keys. Only delete them permanently if you are sure that all files are decrypted correctly." : "Dina krypteringsnycklar flyttas till en backup. Om något gick fel kan du återställa nycklarna. Bara ta bort dem permanent om du är säker på att alla filer dekrypteras korrekt.", "Restore Encryption Keys" : "Återställ krypteringsnycklar", "Delete Encryption Keys" : "Radera krypteringsnycklar", - "Login Name" : "Inloggningsnamn", + "Username" : "Användarnamn", "Create" : "Skapa", "Admin Recovery Password" : "Admin återställningslösenord", "Enter the recovery password in order to recover the users files during password change" : "Ange återställningslösenordet för att återställa användarnas filer vid lösenordsbyte", - "Search Users and Groups" : "Sök Användare och Grupper", "Add Group" : "Lägg till Grupp", "Group" : "Grupp", "Everyone" : "Alla", @@ -207,7 +205,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Var god skriv in lagringskvot (ex: \"512MB\" eller \"12 GB\")", "Unlimited" : "Obegränsad", "Other" : "Annat", - "Username" : "Användarnamn", "Quota" : "Kvot", "Storage Location" : "Lagringsplats", "Last Login" : "Senaste inloggning", diff --git a/settings/l10n/sv.json b/settings/l10n/sv.json index d89f0b53b89..0a0ba0bcf72 100644 --- a/settings/l10n/sv.json +++ b/settings/l10n/sv.json @@ -107,7 +107,6 @@ "Locale not working" : "Locale fungerar inte", "System locale can not be set to a one which supports UTF-8." : "Systemspråk kan inte ställas in till ett som stödjer UTF-8.", "This means that there might be problems with certain characters in file names." : "Detta betyder att där kan komma att uppstå problem med vissa tecken i filnamn.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Vi rekommenderar starkt att installera de paket som krävs på ditt system för att stödja en av följande systemspråk: %s.", "Please double check the <a href='%s'>installation guides</a>." : "Var god kontrollera <a href='%s'>installationsguiden</a>.", "Last cron was executed at %s." : "Sista cron kördes vid %s", "Last cron was executed at %s. This is more than an hour ago, something seems wrong." : "Sista cron kördes vid %s. Detta är mer än en timme sedan, något verkar fel.", @@ -192,11 +191,10 @@ "Your encryption keys are moved to a backup location. If something went wrong you can restore the keys. Only delete them permanently if you are sure that all files are decrypted correctly." : "Dina krypteringsnycklar flyttas till en backup. Om något gick fel kan du återställa nycklarna. Bara ta bort dem permanent om du är säker på att alla filer dekrypteras korrekt.", "Restore Encryption Keys" : "Återställ krypteringsnycklar", "Delete Encryption Keys" : "Radera krypteringsnycklar", - "Login Name" : "Inloggningsnamn", + "Username" : "Användarnamn", "Create" : "Skapa", "Admin Recovery Password" : "Admin återställningslösenord", "Enter the recovery password in order to recover the users files during password change" : "Ange återställningslösenordet för att återställa användarnas filer vid lösenordsbyte", - "Search Users and Groups" : "Sök Användare och Grupper", "Add Group" : "Lägg till Grupp", "Group" : "Grupp", "Everyone" : "Alla", @@ -205,7 +203,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Var god skriv in lagringskvot (ex: \"512MB\" eller \"12 GB\")", "Unlimited" : "Obegränsad", "Other" : "Annat", - "Username" : "Användarnamn", "Quota" : "Kvot", "Storage Location" : "Lagringsplats", "Last Login" : "Senaste inloggning", diff --git a/settings/l10n/ta_LK.js b/settings/l10n/ta_LK.js index 45c3b753b45..5cfa80a5476 100644 --- a/settings/l10n/ta_LK.js +++ b/settings/l10n/ta_LK.js @@ -45,11 +45,10 @@ OC.L10N.register( "Language" : "மொழி", "Help translate" : "மொழிபெயர்க்க உதவி", "Import Root Certificate" : "வேர் சான்றிதழை இறக்குமதி செய்க", - "Login Name" : "புகுபதிகை", + "Username" : "பயனாளர் பெயர்", "Create" : "உருவாக்குக", "Default Quota" : "பொது இருப்பு பங்கு", "Other" : "மற்றவை", - "Username" : "பயனாளர் பெயர்", "Quota" : "பங்கு" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/ta_LK.json b/settings/l10n/ta_LK.json index ab306822e2c..0486b838403 100644 --- a/settings/l10n/ta_LK.json +++ b/settings/l10n/ta_LK.json @@ -43,11 +43,10 @@ "Language" : "மொழி", "Help translate" : "மொழிபெயர்க்க உதவி", "Import Root Certificate" : "வேர் சான்றிதழை இறக்குமதி செய்க", - "Login Name" : "புகுபதிகை", + "Username" : "பயனாளர் பெயர்", "Create" : "உருவாக்குக", "Default Quota" : "பொது இருப்பு பங்கு", "Other" : "மற்றவை", - "Username" : "பயனாளர் பெயர்", "Quota" : "பங்கு" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/th_TH.js b/settings/l10n/th_TH.js index c000b4419de..5f331a3c4fd 100644 --- a/settings/l10n/th_TH.js +++ b/settings/l10n/th_TH.js @@ -68,12 +68,11 @@ OC.L10N.register( "Language" : "ภาษา", "Help translate" : "ช่วยกันแปล", "Import Root Certificate" : "นำเข้าข้อมูลใบรับรองความปลอดภัยจาก Root", - "Login Name" : "ชื่อที่ใช้สำหรับเข้าสู่ระบบ", + "Username" : "ชื่อผู้ใช้งาน", "Create" : "สร้าง", "Default Quota" : "โควต้าที่กำหนดไว้เริ่มต้น", "Unlimited" : "ไม่จำกัดจำนวน", "Other" : "อื่นๆ", - "Username" : "ชื่อผู้ใช้งาน", "Quota" : "พื้นที่", "set new password" : "ตั้งค่ารหัสผ่านใหม่", "Default" : "ค่าเริ่มต้น" diff --git a/settings/l10n/th_TH.json b/settings/l10n/th_TH.json index a66be05967b..42eee4fa737 100644 --- a/settings/l10n/th_TH.json +++ b/settings/l10n/th_TH.json @@ -66,12 +66,11 @@ "Language" : "ภาษา", "Help translate" : "ช่วยกันแปล", "Import Root Certificate" : "นำเข้าข้อมูลใบรับรองความปลอดภัยจาก Root", - "Login Name" : "ชื่อที่ใช้สำหรับเข้าสู่ระบบ", + "Username" : "ชื่อผู้ใช้งาน", "Create" : "สร้าง", "Default Quota" : "โควต้าที่กำหนดไว้เริ่มต้น", "Unlimited" : "ไม่จำกัดจำนวน", "Other" : "อื่นๆ", - "Username" : "ชื่อผู้ใช้งาน", "Quota" : "พื้นที่", "set new password" : "ตั้งค่ารหัสผ่านใหม่", "Default" : "ค่าเริ่มต้น" diff --git a/settings/l10n/tr.js b/settings/l10n/tr.js index 05aef6f2889..e97674bf0fc 100644 --- a/settings/l10n/tr.js +++ b/settings/l10n/tr.js @@ -1,7 +1,7 @@ OC.L10N.register( "settings", { - "Security & Setup Warnings" : "Güvelik & Kurulum Uyarıları", + "Security & Setup Warnings" : "Güvelik ve Kurulum Uyarıları", "Cron" : "Cron", "Sharing" : "Paylaşım", "Security" : "Güvenlik", @@ -117,10 +117,11 @@ OC.L10N.register( "Locale not working" : "Yerel çalışmıyor", "System locale can not be set to a one which supports UTF-8." : "Sistem yereli, UTF-8 destekleyenlerden biri olarak ayarlanamadı.", "This means that there might be problems with certain characters in file names." : "Bu, dosya adlarında belirli karakterlerde problem olabileceği anlamına gelir.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Şu dillerden birini desteklemesi için sisteminize gerekli paketleri kurmanızı şiddetle tavsiye ederiz: %s.", + "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Şu dillerden birini desteklemesi için sisteminize gerekli paketleri kurmanızı şiddetle tavsiye ederiz: %s.", "URL generation in notification emails" : "Bildirim e-postalarında URL oluşturulması", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Eğer kurulumunuz alan adının köküne yapılmamışsa ve sistem cron'u kullanıyorsa, URL oluşturma ile ilgili sorunlar olabilir. Bu sorunların önüne geçmek için, kurulumunuzun web kök yolundaki config.php dosyasında \"overwritewebroot\" seçeneğini ayarlayın (Önerilen: \"%s\")", - "No problems found" : "Sorun bulunamadı", + "Connectivity Checks" : "Bağlantı Kontrolleri", + "No problems found" : "Hiç sorun yok", "Please double check the <a href='%s'>installation guides</a>." : "Lütfen <a href='%s'>kurulum rehberlerini</a> iki kez kontrol edin.", "Last cron was executed at %s." : "Son cron %s zamanında çalıştırıldı.", "Last cron was executed at %s. This is more than an hour ago, something seems wrong." : "Son cron %s zamanında çalıştırıldı. Bu bir saatten daha uzun bir süre, bir şeyler yanlış gibi görünüyor.", @@ -137,12 +138,14 @@ OC.L10N.register( "days" : "gün sonra dolsun", "Enforce expiration date" : "Son kullanma tarihini zorla", "Allow resharing" : "Yeniden paylaşıma izin ver", - "Restrict users to only share with users in their groups" : "Kullanıcıların sadece kendi gruplarındaki kullanıcılarla paylaşmasına sınırla", + "Restrict users to only share with users in their groups" : "Kullanıcıların, dosyaları sadece kendi gruplarındaki kullanıcılarla paylaşmasına izin ver", "Allow users to send mail notification for shared files" : "Paylaşılmış dosyalar için kullanıcıların posta bildirimi göndermesine izin ver", "Exclude groups from sharing" : "Grupları paylaşma eyleminden hariç tut", "These groups will still be able to receive shares, but not to initiate them." : "Bu gruplar hala paylaşımları alabilecek, ancak başlatamayacaktır.", "Enforce HTTPS" : "HTTPS bağlantısına zorla", "Forces the clients to connect to %s via an encrypted connection." : "İstemcileri %s'a şifreli bir bağlantı ile bağlanmaya zorlar.", + "Enforce HTTPS for subdomains" : "Alt alan adları için HTTPS bağlantısına zorla", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "İstemcileri %s ve alt alan adlarına şifreli bir bağlantı ile bağlanmaya zorlar.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "SSL zorlamasını etkinleştirmek ya da devre dışı bırakmak için lütfen %s'a HTTPS ile bağlanın.", "This is used for sending out notifications." : "Bu, bildirimler gönderilirken kullanılır.", "Send mode" : "Gönderme kipi", @@ -215,11 +218,11 @@ OC.L10N.register( "Delete Encryption Keys" : "Şifreleme Anahtarlarını Sil", "Show storage location" : "Depolama konumunu göster", "Show last log in" : "Son oturum açılma zamanını göster", - "Login Name" : "Giriş Adı", + "Username" : "Kullanıcı Adı", "Create" : "Oluştur", "Admin Recovery Password" : "Yönetici Kurtarma Parolası", "Enter the recovery password in order to recover the users files during password change" : "Parola değiştirme sırasında kullanıcı dosyalarını kurtarmak için kurtarma parolasını girin", - "Search Users and Groups" : "Kullanıcı ve Grupları Ara", + "Search Users" : "Kullanıcı Ara", "Add Group" : "Grup Ekle", "Group" : "Grup", "Everyone" : "Herkes", @@ -228,7 +231,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Lütfen disk alanı kotasını girin (örnek: \"512MB\" veya \"12GB\")", "Unlimited" : "Sınırsız", "Other" : "Diğer", - "Username" : "Kullanıcı Adı", "Group Admin for" : "Grup Yöneticisi", "Quota" : "Kota", "Storage Location" : "Depolama Konumu", diff --git a/settings/l10n/tr.json b/settings/l10n/tr.json index 7a84edb5ac9..f1c869101a9 100644 --- a/settings/l10n/tr.json +++ b/settings/l10n/tr.json @@ -1,5 +1,5 @@ { "translations": { - "Security & Setup Warnings" : "Güvelik & Kurulum Uyarıları", + "Security & Setup Warnings" : "Güvelik ve Kurulum Uyarıları", "Cron" : "Cron", "Sharing" : "Paylaşım", "Security" : "Güvenlik", @@ -115,10 +115,11 @@ "Locale not working" : "Yerel çalışmıyor", "System locale can not be set to a one which supports UTF-8." : "Sistem yereli, UTF-8 destekleyenlerden biri olarak ayarlanamadı.", "This means that there might be problems with certain characters in file names." : "Bu, dosya adlarında belirli karakterlerde problem olabileceği anlamına gelir.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Şu dillerden birini desteklemesi için sisteminize gerekli paketleri kurmanızı şiddetle tavsiye ederiz: %s.", + "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Şu dillerden birini desteklemesi için sisteminize gerekli paketleri kurmanızı şiddetle tavsiye ederiz: %s.", "URL generation in notification emails" : "Bildirim e-postalarında URL oluşturulması", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Eğer kurulumunuz alan adının köküne yapılmamışsa ve sistem cron'u kullanıyorsa, URL oluşturma ile ilgili sorunlar olabilir. Bu sorunların önüne geçmek için, kurulumunuzun web kök yolundaki config.php dosyasında \"overwritewebroot\" seçeneğini ayarlayın (Önerilen: \"%s\")", - "No problems found" : "Sorun bulunamadı", + "Connectivity Checks" : "Bağlantı Kontrolleri", + "No problems found" : "Hiç sorun yok", "Please double check the <a href='%s'>installation guides</a>." : "Lütfen <a href='%s'>kurulum rehberlerini</a> iki kez kontrol edin.", "Last cron was executed at %s." : "Son cron %s zamanında çalıştırıldı.", "Last cron was executed at %s. This is more than an hour ago, something seems wrong." : "Son cron %s zamanında çalıştırıldı. Bu bir saatten daha uzun bir süre, bir şeyler yanlış gibi görünüyor.", @@ -135,12 +136,14 @@ "days" : "gün sonra dolsun", "Enforce expiration date" : "Son kullanma tarihini zorla", "Allow resharing" : "Yeniden paylaşıma izin ver", - "Restrict users to only share with users in their groups" : "Kullanıcıların sadece kendi gruplarındaki kullanıcılarla paylaşmasına sınırla", + "Restrict users to only share with users in their groups" : "Kullanıcıların, dosyaları sadece kendi gruplarındaki kullanıcılarla paylaşmasına izin ver", "Allow users to send mail notification for shared files" : "Paylaşılmış dosyalar için kullanıcıların posta bildirimi göndermesine izin ver", "Exclude groups from sharing" : "Grupları paylaşma eyleminden hariç tut", "These groups will still be able to receive shares, but not to initiate them." : "Bu gruplar hala paylaşımları alabilecek, ancak başlatamayacaktır.", "Enforce HTTPS" : "HTTPS bağlantısına zorla", "Forces the clients to connect to %s via an encrypted connection." : "İstemcileri %s'a şifreli bir bağlantı ile bağlanmaya zorlar.", + "Enforce HTTPS for subdomains" : "Alt alan adları için HTTPS bağlantısına zorla", + "Forces the clients to connect to %s and subdomains via an encrypted connection." : "İstemcileri %s ve alt alan adlarına şifreli bir bağlantı ile bağlanmaya zorlar.", "Please connect to your %s via HTTPS to enable or disable the SSL enforcement." : "SSL zorlamasını etkinleştirmek ya da devre dışı bırakmak için lütfen %s'a HTTPS ile bağlanın.", "This is used for sending out notifications." : "Bu, bildirimler gönderilirken kullanılır.", "Send mode" : "Gönderme kipi", @@ -213,11 +216,11 @@ "Delete Encryption Keys" : "Şifreleme Anahtarlarını Sil", "Show storage location" : "Depolama konumunu göster", "Show last log in" : "Son oturum açılma zamanını göster", - "Login Name" : "Giriş Adı", + "Username" : "Kullanıcı Adı", "Create" : "Oluştur", "Admin Recovery Password" : "Yönetici Kurtarma Parolası", "Enter the recovery password in order to recover the users files during password change" : "Parola değiştirme sırasında kullanıcı dosyalarını kurtarmak için kurtarma parolasını girin", - "Search Users and Groups" : "Kullanıcı ve Grupları Ara", + "Search Users" : "Kullanıcı Ara", "Add Group" : "Grup Ekle", "Group" : "Grup", "Everyone" : "Herkes", @@ -226,7 +229,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Lütfen disk alanı kotasını girin (örnek: \"512MB\" veya \"12GB\")", "Unlimited" : "Sınırsız", "Other" : "Diğer", - "Username" : "Kullanıcı Adı", "Group Admin for" : "Grup Yöneticisi", "Quota" : "Kota", "Storage Location" : "Depolama Konumu", diff --git a/settings/l10n/ug.js b/settings/l10n/ug.js index c3ce07cae69..6f49414e6e7 100644 --- a/settings/l10n/ug.js +++ b/settings/l10n/ug.js @@ -61,11 +61,10 @@ OC.L10N.register( "Cancel" : "ۋاز كەچ", "Language" : "تىل", "Help translate" : "تەرجىمىگە ياردەم", - "Login Name" : "تىزىمغا كىرىش ئاتى", + "Username" : "ئىشلەتكۈچى ئاتى", "Create" : "قۇر", "Unlimited" : "چەكسىز", "Other" : "باشقا", - "Username" : "ئىشلەتكۈچى ئاتى", "set new password" : "يېڭى ئىم تەڭشە", "Default" : "كۆڭۈلدىكى" }, diff --git a/settings/l10n/ug.json b/settings/l10n/ug.json index fac830441bd..c9622027cb7 100644 --- a/settings/l10n/ug.json +++ b/settings/l10n/ug.json @@ -59,11 +59,10 @@ "Cancel" : "ۋاز كەچ", "Language" : "تىل", "Help translate" : "تەرجىمىگە ياردەم", - "Login Name" : "تىزىمغا كىرىش ئاتى", + "Username" : "ئىشلەتكۈچى ئاتى", "Create" : "قۇر", "Unlimited" : "چەكسىز", "Other" : "باشقا", - "Username" : "ئىشلەتكۈچى ئاتى", "set new password" : "يېڭى ئىم تەڭشە", "Default" : "كۆڭۈلدىكى" },"pluralForm" :"nplurals=1; plural=0;" diff --git a/settings/l10n/uk.js b/settings/l10n/uk.js index 71e5de126cf..6cdef63b2ec 100644 --- a/settings/l10n/uk.js +++ b/settings/l10n/uk.js @@ -1,6 +1,7 @@ OC.L10N.register( "settings", { + "Security & Setup Warnings" : "Попередження Налаштувань та Безпеки", "Cron" : "Cron", "Sharing" : "Спільний доступ", "Security" : "Безпека", @@ -116,9 +117,9 @@ OC.L10N.register( "Locale not working" : "Локалізація не працює", "System locale can not be set to a one which supports UTF-8." : "Неможливо встановити системну локаль, яка б підтримувала UTF-8.", "This means that there might be problems with certain characters in file names." : "Це означає, що можуть виникати проблеми з деякими символами в іменах файлів.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Ми наполегливо рекомендуємо встановити необхідні пакети в систему, для підтримки наступних локалей: %s.", "URL generation in notification emails" : "Генерування URL для повідомлень в електроних листах", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Якщо ваша копія ownCloud встановлена не в корені домену та використовує систему планування CRON, можливі проблеми з генерацією правильних URL. Щоб уникнути цього, встановіть опцію overwritewebroot файла config.php відповідно до теки розташування установки (Ймовірніше за все, це \"%s\")", + "Connectivity Checks" : "Перевірка З'єднання", "No problems found" : "Проблем не виявленно", "Please double check the <a href='%s'>installation guides</a>." : "Будь ласка, перевірте <a href='%s'>інструкції по встановленню</a>.", "Last cron was executed at %s." : "Останню cron-задачу було запущено: %s.", @@ -214,11 +215,10 @@ OC.L10N.register( "Delete Encryption Keys" : "Видалити ключі шифрування", "Show storage location" : "Показати місцезнаходження сховища", "Show last log in" : "Показати останній вхід в систему", - "Login Name" : "Ім'я Логіну", + "Username" : "Ім'я користувача", "Create" : "Створити", "Admin Recovery Password" : "Пароль адміністратора для відновлення", "Enter the recovery password in order to recover the users files during password change" : "Введіть пароль для того, щоб відновити файли користувачів при зміні паролю", - "Search Users and Groups" : "Шукати користувачів та групи", "Add Group" : "Додати групу", "Group" : "Група", "Everyone" : "Всі", @@ -227,7 +227,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Будь ласка, вкажіть розмір сховища (наприклад: \"512 MB\" або \"12 GB\")", "Unlimited" : "Необмежено", "Other" : "Інше", - "Username" : "Ім'я користувача", "Group Admin for" : "Адміністратор групи", "Quota" : "Квота", "Storage Location" : "Місцезнаходження сховища", diff --git a/settings/l10n/uk.json b/settings/l10n/uk.json index 3a3c79a7253..b05f4e95e32 100644 --- a/settings/l10n/uk.json +++ b/settings/l10n/uk.json @@ -1,4 +1,5 @@ { "translations": { + "Security & Setup Warnings" : "Попередження Налаштувань та Безпеки", "Cron" : "Cron", "Sharing" : "Спільний доступ", "Security" : "Безпека", @@ -114,9 +115,9 @@ "Locale not working" : "Локалізація не працює", "System locale can not be set to a one which supports UTF-8." : "Неможливо встановити системну локаль, яка б підтримувала UTF-8.", "This means that there might be problems with certain characters in file names." : "Це означає, що можуть виникати проблеми з деякими символами в іменах файлів.", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "Ми наполегливо рекомендуємо встановити необхідні пакети в систему, для підтримки наступних локалей: %s.", "URL generation in notification emails" : "Генерування URL для повідомлень в електроних листах", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Якщо ваша копія ownCloud встановлена не в корені домену та використовує систему планування CRON, можливі проблеми з генерацією правильних URL. Щоб уникнути цього, встановіть опцію overwritewebroot файла config.php відповідно до теки розташування установки (Ймовірніше за все, це \"%s\")", + "Connectivity Checks" : "Перевірка З'єднання", "No problems found" : "Проблем не виявленно", "Please double check the <a href='%s'>installation guides</a>." : "Будь ласка, перевірте <a href='%s'>інструкції по встановленню</a>.", "Last cron was executed at %s." : "Останню cron-задачу було запущено: %s.", @@ -212,11 +213,10 @@ "Delete Encryption Keys" : "Видалити ключі шифрування", "Show storage location" : "Показати місцезнаходження сховища", "Show last log in" : "Показати останній вхід в систему", - "Login Name" : "Ім'я Логіну", + "Username" : "Ім'я користувача", "Create" : "Створити", "Admin Recovery Password" : "Пароль адміністратора для відновлення", "Enter the recovery password in order to recover the users files during password change" : "Введіть пароль для того, щоб відновити файли користувачів при зміні паролю", - "Search Users and Groups" : "Шукати користувачів та групи", "Add Group" : "Додати групу", "Group" : "Група", "Everyone" : "Всі", @@ -225,7 +225,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Будь ласка, вкажіть розмір сховища (наприклад: \"512 MB\" або \"12 GB\")", "Unlimited" : "Необмежено", "Other" : "Інше", - "Username" : "Ім'я користувача", "Group Admin for" : "Адміністратор групи", "Quota" : "Квота", "Storage Location" : "Місцезнаходження сховища", diff --git a/settings/l10n/ur_PK.js b/settings/l10n/ur_PK.js index f9a042bc94f..25a40a20f44 100644 --- a/settings/l10n/ur_PK.js +++ b/settings/l10n/ur_PK.js @@ -15,7 +15,7 @@ OC.L10N.register( "Password" : "پاسورڈ", "New password" : "نیا پاسورڈ", "Cancel" : "منسوخ کریں", - "Other" : "دیگر", - "Username" : "یوزر نیم" + "Username" : "یوزر نیم", + "Other" : "دیگر" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/ur_PK.json b/settings/l10n/ur_PK.json index 99a7bda9ad7..7974ae49d7a 100644 --- a/settings/l10n/ur_PK.json +++ b/settings/l10n/ur_PK.json @@ -13,7 +13,7 @@ "Password" : "پاسورڈ", "New password" : "نیا پاسورڈ", "Cancel" : "منسوخ کریں", - "Other" : "دیگر", - "Username" : "یوزر نیم" + "Username" : "یوزر نیم", + "Other" : "دیگر" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/vi.js b/settings/l10n/vi.js index ef9221683d1..a807bdc9328 100644 --- a/settings/l10n/vi.js +++ b/settings/l10n/vi.js @@ -75,13 +75,12 @@ OC.L10N.register( "Language" : "Ngôn ngữ", "Help translate" : "Hỗ trợ dịch thuật", "Import Root Certificate" : "Nhập Root Certificate", - "Login Name" : "Tên đăng nhập", + "Username" : "Tên đăng nhập", "Create" : "Tạo", "Group" : "N", "Default Quota" : "Hạn ngạch mặt định", "Unlimited" : "Không giới hạn", "Other" : "Khác", - "Username" : "Tên đăng nhập", "Quota" : "Hạn ngạch", "change full name" : "Đổi họ và t", "set new password" : "đặt mật khẩu mới", diff --git a/settings/l10n/vi.json b/settings/l10n/vi.json index d927ecf1661..30787bc4f8c 100644 --- a/settings/l10n/vi.json +++ b/settings/l10n/vi.json @@ -73,13 +73,12 @@ "Language" : "Ngôn ngữ", "Help translate" : "Hỗ trợ dịch thuật", "Import Root Certificate" : "Nhập Root Certificate", - "Login Name" : "Tên đăng nhập", + "Username" : "Tên đăng nhập", "Create" : "Tạo", "Group" : "N", "Default Quota" : "Hạn ngạch mặt định", "Unlimited" : "Không giới hạn", "Other" : "Khác", - "Username" : "Tên đăng nhập", "Quota" : "Hạn ngạch", "change full name" : "Đổi họ và t", "set new password" : "đặt mật khẩu mới", diff --git a/settings/l10n/zh_CN.js b/settings/l10n/zh_CN.js index f111d768d95..f68a3366103 100644 --- a/settings/l10n/zh_CN.js +++ b/settings/l10n/zh_CN.js @@ -111,7 +111,6 @@ OC.L10N.register( "Locale not working" : "本地化无法工作", "System locale can not be set to a one which supports UTF-8." : "系统语系无法设置为支持 UTF-8 的语系。", "This means that there might be problems with certain characters in file names." : "这意味着一些文件名中的特定字符可能有问题。", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "强烈建议在您的系统上安装需要的软件包来支持以下语系之一:%s。", "URL generation in notification emails" : "在通知邮件里生成URL", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "如果你没有安装ownCloud在域名的根目录里,并使用系统的crom,这会导致URL的生成出错。要避免这个问题,请设置 config.php 文件中的\"overwritewebroot\" 参数值为你的实际安装web路径。(建议为: \"%s\")", "No problems found" : "未发现问题", @@ -205,11 +204,10 @@ OC.L10N.register( "Delete Encryption Keys" : "删除加密密钥", "Show storage location" : "显示存储位置", "Show last log in" : "显示最后登录", - "Login Name" : "登录名称", + "Username" : "用户名", "Create" : "创建", "Admin Recovery Password" : "管理恢复密码", "Enter the recovery password in order to recover the users files during password change" : "输入恢复密码来在更改密码的时候恢复用户文件", - "Search Users and Groups" : "搜索用户和组", "Add Group" : "增加组", "Group" : "分组", "Everyone" : "所有人", @@ -218,7 +216,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "请输入存储限额 (ex: \"512 MB\" or \"12 GB\")", "Unlimited" : "无限", "Other" : "其它", - "Username" : "用户名", "Quota" : "配额", "Storage Location" : "存储空间位置", "Last Login" : "最后登录", diff --git a/settings/l10n/zh_CN.json b/settings/l10n/zh_CN.json index d110874bb69..1b81ca42119 100644 --- a/settings/l10n/zh_CN.json +++ b/settings/l10n/zh_CN.json @@ -109,7 +109,6 @@ "Locale not working" : "本地化无法工作", "System locale can not be set to a one which supports UTF-8." : "系统语系无法设置为支持 UTF-8 的语系。", "This means that there might be problems with certain characters in file names." : "这意味着一些文件名中的特定字符可能有问题。", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "强烈建议在您的系统上安装需要的软件包来支持以下语系之一:%s。", "URL generation in notification emails" : "在通知邮件里生成URL", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwritewebroot\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "如果你没有安装ownCloud在域名的根目录里,并使用系统的crom,这会导致URL的生成出错。要避免这个问题,请设置 config.php 文件中的\"overwritewebroot\" 参数值为你的实际安装web路径。(建议为: \"%s\")", "No problems found" : "未发现问题", @@ -203,11 +202,10 @@ "Delete Encryption Keys" : "删除加密密钥", "Show storage location" : "显示存储位置", "Show last log in" : "显示最后登录", - "Login Name" : "登录名称", + "Username" : "用户名", "Create" : "创建", "Admin Recovery Password" : "管理恢复密码", "Enter the recovery password in order to recover the users files during password change" : "输入恢复密码来在更改密码的时候恢复用户文件", - "Search Users and Groups" : "搜索用户和组", "Add Group" : "增加组", "Group" : "分组", "Everyone" : "所有人", @@ -216,7 +214,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "请输入存储限额 (ex: \"512 MB\" or \"12 GB\")", "Unlimited" : "无限", "Other" : "其它", - "Username" : "用户名", "Quota" : "配额", "Storage Location" : "存储空间位置", "Last Login" : "最后登录", diff --git a/settings/l10n/zh_HK.js b/settings/l10n/zh_HK.js index 652941492ab..e57291c7474 100644 --- a/settings/l10n/zh_HK.js +++ b/settings/l10n/zh_HK.js @@ -24,7 +24,7 @@ OC.L10N.register( "Change password" : "更改密碼", "Email" : "電郵", "Cancel" : "取消", - "Create" : "新增", - "Username" : "用戶名稱" + "Username" : "用戶名稱", + "Create" : "新增" }, "nplurals=1; plural=0;"); diff --git a/settings/l10n/zh_HK.json b/settings/l10n/zh_HK.json index 2d07f517691..7fd1b79909f 100644 --- a/settings/l10n/zh_HK.json +++ b/settings/l10n/zh_HK.json @@ -22,7 +22,7 @@ "Change password" : "更改密碼", "Email" : "電郵", "Cancel" : "取消", - "Create" : "新增", - "Username" : "用戶名稱" + "Username" : "用戶名稱", + "Create" : "新增" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/settings/l10n/zh_TW.js b/settings/l10n/zh_TW.js index 9a3f4e60ea5..cc668b41086 100644 --- a/settings/l10n/zh_TW.js +++ b/settings/l10n/zh_TW.js @@ -31,6 +31,7 @@ OC.L10N.register( "Back-end doesn't support password change, but the users encryption key was successfully updated." : "後端不支援變更密碼,但成功更新使用者的加密金鑰", "Unable to change password" : "無法修改密碼", "Enabled" : "已啓用", + "Recommended" : "建議", "Saved" : "已儲存", "test email settings" : "測試郵件設定", "If you received this email, the settings seem to be correct." : "假如您收到這個郵件,此設定看起來是正確的。", @@ -87,7 +88,6 @@ OC.L10N.register( "Locale not working" : "語系無法運作", "System locale can not be set to a one which supports UTF-8." : "系統語系無法設定只支援 UTF-8", "This means that there might be problems with certain characters in file names." : "這個意思是指在檔名中使用一些字元可能會有問題", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "我們強烈建議在您的系統上安裝必要的套件來支援以下的語系: %s", "Please double check the <a href='%s'>installation guides</a>." : "請參考<a href='%s'>安裝指南</a>。", "Last cron was executed at %s." : "最後的排程已執行於 %s。", "Last cron was executed at %s. This is more than an hour ago, something seems wrong." : "最後的排程已執行於 %s。現在過了好幾個小時,看起來是有錯誤。", @@ -155,7 +155,7 @@ OC.L10N.register( "The encryption app is no longer enabled, please decrypt all your files" : "加密的軟體不能長時間啟用,請解密所有您的檔案", "Log-in password" : "登入密碼", "Decrypt all Files" : "解密所有檔案", - "Login Name" : "登入名稱", + "Username" : "使用者名稱", "Create" : "建立", "Admin Recovery Password" : "管理者復原密碼", "Enter the recovery password in order to recover the users files during password change" : "為了修改密碼時能夠取回使用者資料,請輸入另一組還原用密碼", @@ -164,7 +164,6 @@ OC.L10N.register( "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "請輸入空間配額(例如: \"512 MB\"或是 \"12 GB\")", "Unlimited" : "無限制", "Other" : "其他", - "Username" : "使用者名稱", "Quota" : "容量限制", "change full name" : "變更全名", "set new password" : "設定新密碼", diff --git a/settings/l10n/zh_TW.json b/settings/l10n/zh_TW.json index b7ef00d523c..0a5baf7639f 100644 --- a/settings/l10n/zh_TW.json +++ b/settings/l10n/zh_TW.json @@ -29,6 +29,7 @@ "Back-end doesn't support password change, but the users encryption key was successfully updated." : "後端不支援變更密碼,但成功更新使用者的加密金鑰", "Unable to change password" : "無法修改密碼", "Enabled" : "已啓用", + "Recommended" : "建議", "Saved" : "已儲存", "test email settings" : "測試郵件設定", "If you received this email, the settings seem to be correct." : "假如您收到這個郵件,此設定看起來是正確的。", @@ -85,7 +86,6 @@ "Locale not working" : "語系無法運作", "System locale can not be set to a one which supports UTF-8." : "系統語系無法設定只支援 UTF-8", "This means that there might be problems with certain characters in file names." : "這個意思是指在檔名中使用一些字元可能會有問題", - "We strongly suggest to install the required packages on your system to support one of the following locales: %s." : "我們強烈建議在您的系統上安裝必要的套件來支援以下的語系: %s", "Please double check the <a href='%s'>installation guides</a>." : "請參考<a href='%s'>安裝指南</a>。", "Last cron was executed at %s." : "最後的排程已執行於 %s。", "Last cron was executed at %s. This is more than an hour ago, something seems wrong." : "最後的排程已執行於 %s。現在過了好幾個小時,看起來是有錯誤。", @@ -153,7 +153,7 @@ "The encryption app is no longer enabled, please decrypt all your files" : "加密的軟體不能長時間啟用,請解密所有您的檔案", "Log-in password" : "登入密碼", "Decrypt all Files" : "解密所有檔案", - "Login Name" : "登入名稱", + "Username" : "使用者名稱", "Create" : "建立", "Admin Recovery Password" : "管理者復原密碼", "Enter the recovery password in order to recover the users files during password change" : "為了修改密碼時能夠取回使用者資料,請輸入另一組還原用密碼", @@ -162,7 +162,6 @@ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "請輸入空間配額(例如: \"512 MB\"或是 \"12 GB\")", "Unlimited" : "無限制", "Other" : "其他", - "Username" : "使用者名稱", "Quota" : "容量限制", "change full name" : "變更全名", "set new password" : "設定新密碼", diff --git a/settings/personal.php b/settings/personal.php index 9c27f77ccd3..bef800ae7f1 100644 --- a/settings/personal.php +++ b/settings/personal.php @@ -114,7 +114,7 @@ $formsMap = array_map(function($form){ $anchor = str_replace(' ', '-', $anchor); return array( - 'anchor' => $anchor, + 'anchor' => 'goto-' . $anchor, 'section-name' => $sectionName, 'form' => $form ); diff --git a/settings/routes.php b/settings/routes.php index 82167ea6396..7ca33fc2745 100644 --- a/settings/routes.php +++ b/settings/routes.php @@ -14,7 +14,11 @@ $application->registerRoutes($this, array('routes' =>array( array('name' => 'MailSettings#storeCredentials', 'url' => '/settings/admin/mailsettings/credentials', 'verb' => 'POST'), array('name' => 'MailSettings#sendTestMail', 'url' => '/settings/admin/mailtest', 'verb' => 'POST'), array('name' => 'AppSettings#listCategories', 'url' => '/settings/apps/categories', 'verb' => 'GET'), - array('name' => 'AppSettings#listApps', 'url' => '/settings/apps/list', 'verb' => 'GET') + array('name' => 'AppSettings#listApps', 'url' => '/settings/apps/list', 'verb' => 'GET'), + array('name' => 'SecuritySettings#enforceSSL', 'url' => '/settings/admin/security/ssl', 'verb' => 'POST'), + array('name' => 'SecuritySettings#enforceSSLForSubdomains', 'url' => '/settings/admin/security/ssl/subdomains', 'verb' => 'POST'), + array('name' => 'SecuritySettings#trustedDomains', 'url' => '/settings/admin/security/trustedDomains', 'verb' => 'POST'), + ))); /** @var $this \OCP\Route\IRouter */ @@ -95,8 +99,6 @@ $this->create('settings_ajax_getlog', '/settings/ajax/getlog.php') ->actionInclude('settings/ajax/getlog.php'); $this->create('settings_ajax_setloglevel', '/settings/ajax/setloglevel.php') ->actionInclude('settings/ajax/setloglevel.php'); -$this->create('settings_ajax_setsecurity', '/settings/ajax/setsecurity.php') - ->actionInclude('settings/ajax/setsecurity.php'); $this->create('settings_ajax_excludegroups', '/settings/ajax/excludegroups.php') ->actionInclude('settings/ajax/excludegroups.php'); $this->create('settings_ajax_checksetup', '/settings/ajax/checksetup') diff --git a/settings/templates/admin.php b/settings/templates/admin.php index 0033845c74e..166e36a3605 100644 --- a/settings/templates/admin.php +++ b/settings/templates/admin.php @@ -184,7 +184,7 @@ if (!$_['isLocaleWorking']) { ?> <br> <?php - p($l->t('We strongly suggest to install the required packages on your system to support one of the following locales: %s.', array($locales))); + p($l->t('We strongly suggest installing the required packages on your system to support one of the following locales: %s.', array($locales))); ?> </span> @@ -336,9 +336,9 @@ if ($_['suggestedOverwriteWebroot']) { <input type="checkbox" name="forcessl" id="forcessl" <?php if ($_['enforceHTTPSEnabled']) { print_unescaped('checked="checked" '); - print_unescaped('value="false"'); - } else { print_unescaped('value="true"'); + } else { + print_unescaped('value="false"'); } ?> <?php if (!$_['isConnectedViaHTTPS']) p('disabled'); ?> /> @@ -346,7 +346,23 @@ if ($_['suggestedOverwriteWebroot']) { <em><?php p($l->t( 'Forces the clients to connect to %s via an encrypted connection.', $theme->getName() - )); ?></em> + )); ?></em><br/> + <span id="forceSSLforSubdomainsSpan" <?php if(!$_['enforceHTTPSEnabled']) { print_unescaped('class="hidden"'); } ?>> + <input type="checkbox" name="forceSSLforSubdomains" id="forceSSLforSubdomains" + <?php if ($_['forceSSLforSubdomainsEnabled']) { + print_unescaped('checked="checked" '); + print_unescaped('value="true"'); + } else { + print_unescaped('value="false"'); + } + ?> + <?php if (!$_['isConnectedViaHTTPS']) { p('disabled'); } ?> /> + <label for="forceSSLforSubdomains"><?php p($l->t('Enforce HTTPS for subdomains'));?></label><br/> + <em><?php p($l->t( + 'Forces the clients to connect to %s and subdomains via an encrypted connection.', + $theme->getName() + )); ?></em> + </span> <?php if (!$_['isConnectedViaHTTPS']) { print_unescaped("<br/><em>"); p($l->t( diff --git a/settings/templates/users/part.createuser.php b/settings/templates/users/part.createuser.php index edec7587eb5..d3ebbfb987a 100644 --- a/settings/templates/users/part.createuser.php +++ b/settings/templates/users/part.createuser.php @@ -1,7 +1,7 @@ <div id="controls"> <form id="newuser" autocomplete="off"> <input id="newusername" type="text" - placeholder="<?php p($l->t('Login Name'))?>" + placeholder="<?php p($l->t('Username'))?>" autocomplete="off" autocapitalize="off" autocorrect="off" /> <input type="password" id="newuserpassword" @@ -29,6 +29,6 @@ </div> <?php endif; ?> <form autocomplete="off" id="usersearchform"> - <input type="text" class="input userFilter" placeholder="<?php p($l->t('Search Users and Groups')); ?>" /> + <input type="text" class="input userFilter" placeholder="<?php p($l->t('Search Users')); ?>" /> </form> </div> diff --git a/tests/core/lostpassword/controller/lostcontrollertest.php b/tests/core/lostpassword/controller/lostcontrollertest.php new file mode 100644 index 00000000000..5da9e5ce48d --- /dev/null +++ b/tests/core/lostpassword/controller/lostcontrollertest.php @@ -0,0 +1,195 @@ +<?php +/** + * Copyright (c) 2014 Lukas Reschke <lukas@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Core\LostPassword\Controller; +use OC\Core\Application; +use OCP\AppFramework\Http\TemplateResponse; + +/** + * Class LostControllerTest + * + * @package OC\Core\LostPassword\Controller + */ +class LostControllerTest extends \PHPUnit_Framework_TestCase { + + private $container; + /** @var LostController */ + private $lostController; + + protected function setUp() { + $app = new Application(); + $this->container = $app->getContainer(); + $this->container['AppName'] = 'core'; + $this->container['Config'] = $this->getMockBuilder('\OCP\IConfig') + ->disableOriginalConstructor()->getMock(); + $this->container['L10N'] = $this->getMockBuilder('\OCP\IL10N') + ->disableOriginalConstructor()->getMock(); + $this->container['Defaults'] = $this->getMockBuilder('\OC_Defaults') + ->disableOriginalConstructor()->getMock(); + $this->container['UserManager'] = $this->getMockBuilder('\OCP\IUserManager') + ->disableOriginalConstructor()->getMock(); + $this->container['Config'] = $this->getMockBuilder('\OCP\IConfig') + ->disableOriginalConstructor()->getMock(); + $this->container['URLGenerator'] = $this->getMockBuilder('\OCP\IURLGenerator') + ->disableOriginalConstructor()->getMock(); + $this->container['SecureRandom'] = $this->getMockBuilder('\OCP\Security\ISecureRandom') + ->disableOriginalConstructor()->getMock(); + $this->container['IsEncryptionEnabled'] = true; + $this->lostController = $this->container['LostController']; + } + + public function testResetFormUnsuccessful() { + $userId = 'admin'; + $token = 'MySecretToken'; + + $this->container['URLGenerator'] + ->expects($this->once()) + ->method('linkToRouteAbsolute') + ->with('core.lost.setPassword', array('userId' => 'admin', 'token' => 'MySecretToken')) + ->will($this->returnValue('https://ownCloud.com/index.php/lostpassword/')); + + $response = $this->lostController->resetform($token, $userId); + $expectedResponse = new TemplateResponse('core/lostpassword', + 'resetpassword', + array( + 'link' => 'https://ownCloud.com/index.php/lostpassword/', + ), + 'guest'); + $this->assertEquals($expectedResponse, $response); + } + + public function testEmailUnsucessful() { + $existingUser = 'ExistingUser'; + $nonExistingUser = 'NonExistingUser'; + $this->container['UserManager'] + ->expects($this->any()) + ->method('userExists') + ->will($this->returnValueMap(array( + array(true, $existingUser), + array(false, $nonExistingUser) + ))); + $this->container['L10N'] + ->expects($this->any()) + ->method('t') + ->will( + $this->returnValueMap( + array( + array('Couldn\'t send reset email. Please make sure your username is correct.', array(), + 'Couldn\'t send reset email. Please make sure your username is correct.'), + + ) + )); + + // With a non existing user + $response = $this->lostController->email($nonExistingUser); + $expectedResponse = array('status' => 'error', 'msg' => 'Couldn\'t send reset email. Please make sure your username is correct.'); + $this->assertSame($expectedResponse, $response); + + // With no mail address + $this->container['Config'] + ->expects($this->any()) + ->method('getUserValue') + ->with($existingUser, 'settings', 'email') + ->will($this->returnValue(null)); + $response = $this->lostController->email($existingUser); + $expectedResponse = array('status' => 'error', 'msg' => 'Couldn\'t send reset email. Please make sure your username is correct.'); + $this->assertSame($expectedResponse, $response); + } + + public function testEmailSuccessful() { + $randomToken = $this->container['SecureRandom']; + $this->container['SecureRandom'] + ->expects($this->once()) + ->method('generate') + ->with('21') + ->will($this->returnValue('ThisIsMaybeANotSoSecretToken!')); + $this->container['UserManager'] + ->expects($this->once()) + ->method('userExists') + ->with('ExistingUser') + ->will($this->returnValue(true)); + $this->container['Config'] + ->expects($this->once()) + ->method('getUserValue') + ->with('ExistingUser', 'settings', 'email') + ->will($this->returnValue('test@example.com')); + $this->container['SecureRandom'] + ->expects($this->once()) + ->method('getMediumStrengthGenerator') + ->will($this->returnValue($randomToken)); + $this->container['Config'] + ->expects($this->once()) + ->method('setUserValue') + ->with('ExistingUser', 'owncloud', 'lostpassword', 'ThisIsMaybeANotSoSecretToken!'); + $this->container['URLGenerator'] + ->expects($this->once()) + ->method('linkToRouteAbsolute') + ->with('core.lost.resetform', array('userId' => 'ExistingUser', 'token' => 'ThisIsMaybeANotSoSecretToken!')) + ->will($this->returnValue('https://ownCloud.com/index.php/lostpassword/')); + + $response = $this->lostController->email('ExistingUser'); + $expectedResponse = array('status' => 'success'); + $this->assertSame($expectedResponse, $response); + } + + public function testSetPasswordUnsuccessful() { + $this->container['L10N'] + ->expects($this->any()) + ->method('t') + ->will( + $this->returnValueMap( + array( + array('Couldn\'t reset password because the token is invalid', array(), + 'Couldn\'t reset password because the token is invalid'), + ) + )); + $this->container['Config'] + ->expects($this->once()) + ->method('getUserValue') + ->with('InvalidTokenUser', 'owncloud', 'lostpassword') + ->will($this->returnValue('TheOnlyAndOnlyOneTokenToResetThePassword')); + + // With an invalid token + $userName = 'InvalidTokenUser'; + $response = $this->lostController->setPassword('wrongToken', $userName, 'NewPassword', true); + $expectedResponse = array('status' => 'error', 'msg' => 'Couldn\'t reset password because the token is invalid'); + $this->assertSame($expectedResponse, $response); + + // With a valid token and no proceed + $response = $this->lostController->setPassword('TheOnlyAndOnlyOneTokenToResetThePassword!', $userName, 'NewPassword', false); + $expectedResponse = array('status' => 'error', 'msg' => '', 'encryption' => true); + $this->assertSame($expectedResponse, $response); + } + + public function testSetPasswordSuccessful() { + $this->container['Config'] + ->expects($this->once()) + ->method('getUserValue') + ->with('ValidTokenUser', 'owncloud', 'lostpassword') + ->will($this->returnValue('TheOnlyAndOnlyOneTokenToResetThePassword')); + $user = $this->getMockBuilder('\OCP\IUser') + ->disableOriginalConstructor()->getMock(); + $user->expects($this->once()) + ->method('setPassword') + ->with('NewPassword') + ->will($this->returnValue(true)); + $this->container['UserManager'] + ->expects($this->once()) + ->method('get') + ->with('ValidTokenUser') + ->will($this->returnValue($user)); + $this->container['Config'] + ->expects($this->once()) + ->method('deleteUserValue') + ->with('ValidTokenUser', 'owncloud', 'lostpassword'); + + $response = $this->lostController->setPassword('TheOnlyAndOnlyOneTokenToResetThePassword', 'ValidTokenUser', 'NewPassword', true); + $expectedResponse = array('status' => 'success'); + $this->assertSame($expectedResponse, $response); + } +} diff --git a/tests/data/app/expected-info.json b/tests/data/app/expected-info.json new file mode 100644 index 00000000000..c67d6d657d2 --- /dev/null +++ b/tests/data/app/expected-info.json @@ -0,0 +1,19 @@ +{ + "info": [], + "remote": [], + "public": [], + "id": "files_encryption", + "name": "Server-side Encryption", + "description": "\n\tThis application encrypts all files accessed by ownCloud at rest, wherever they are stored. As an example, with this application enabled, external cloud based Amazon S3 storage will be encrypted, protecting this data on storage outside of the control of the Admin. When this application is enabled for the first time, all files are encrypted as users log in and are prompted for their password. The recommended recovery key option enables recovery of files in case the key is lost. \n\tNote that this app encrypts all files that are touched by ownCloud, so external storage providers and applications such as SharePoint will see new files encrypted when they are accessed. Encryption is based on AES 128 or 256 bit keys. More information is available in the Encryption documentation \n\t", + "licence": "AGPL", + "author": "Sam Tuke, Bjoern Schiessle, Florin Peter", + "requiremin": "4", + "shipped": "true", + "documentation": { + "user": "https://docs.example.com/server/go.php?to=user-encryption", + "admin": "https://docs.example.com/server/go.php?to=admin-encryption" + }, + "rememberlogin": "false", + "types": ["filesystem"], + "ocsid": "166047" +} diff --git a/tests/data/app/invalid-info.xml b/tests/data/app/invalid-info.xml new file mode 100644 index 00000000000..3947f5420c2 --- /dev/null +++ b/tests/data/app/invalid-info.xml @@ -0,0 +1,22 @@ +<?xml version="1.0"?> +<info + <id>files_encryption</id> + <name>Server-side Encryption</name> + <description> + This application encrypts all files accessed by ownCloud at rest, wherever they are stored. As an example, with this application enabled, external cloud based Amazon S3 storage will be encrypted, protecting this data on storage outside of the control of the Admin. When this application is enabled for the first time, all files are encrypted as users log in and are prompted for their password. The recommended recovery key option enables recovery of files in case the key is lost. + Note that this app encrypts all files that are touched by ownCloud, so external storage providers and applications such as SharePoint will see new files encrypted when they are accessed. Encryption is based on AES 128 or 256 bit keys. More information is available in the Encryption documentation + </description> + <licence>AGPL</licence> + <author>Sam Tuke, Bjoern Schiessle, Florin Peter</author> + <requiremin>4</requiremin> + <shipped>true</shipped> + <documentation> + <user>user-encryption</user> + <admin>admin-encryption</admin> + </documentation> + <rememberlogin>false</rememberlogin> + <types> + <filesystem/> + </types> + <ocsid>166047</ocsid> +</info> diff --git a/tests/data/app/valid-info.xml b/tests/data/app/valid-info.xml new file mode 100644 index 00000000000..6fcef693bed --- /dev/null +++ b/tests/data/app/valid-info.xml @@ -0,0 +1,22 @@ +<?xml version="1.0"?> +<info> + <id>files_encryption</id> + <name>Server-side Encryption</name> + <description> + This application encrypts all files accessed by ownCloud at rest, wherever they are stored. As an example, with this application enabled, external cloud based Amazon S3 storage will be encrypted, protecting this data on storage outside of the control of the Admin. When this application is enabled for the first time, all files are encrypted as users log in and are prompted for their password. The recommended recovery key option enables recovery of files in case the key is lost. + Note that this app encrypts all files that are touched by ownCloud, so external storage providers and applications such as SharePoint will see new files encrypted when they are accessed. Encryption is based on AES 128 or 256 bit keys. More information is available in the Encryption documentation + </description> + <licence>AGPL</licence> + <author>Sam Tuke, Bjoern Schiessle, Florin Peter</author> + <requiremin>4</requiremin> + <shipped>true</shipped> + <documentation> + <user>user-encryption</user> + <admin>admin-encryption</admin> + </documentation> + <rememberlogin>false</rememberlogin> + <types> + <filesystem/> + </types> + <ocsid>166047</ocsid> +</info> diff --git a/tests/lib/activitymanager.php b/tests/lib/activitymanager.php index f21b82c52c3..85f8320de09 100644 --- a/tests/lib/activitymanager.php +++ b/tests/lib/activitymanager.php @@ -8,12 +8,14 @@ * */ -class Test_ActivityManager extends PHPUnit_Framework_TestCase { +class Test_ActivityManager extends \Test\TestCase { /** @var \OC\ActivityManager */ private $activityManager; - public function setUp() { + protected function setUp() { + parent::setUp(); + $this->activityManager = new \OC\ActivityManager(); $this->activityManager->registerExtension(function() { return new NoOpExtension(); diff --git a/tests/lib/api.php b/tests/lib/api.php index 0f7d08543ea..bf9748a6040 100644 --- a/tests/lib/api.php +++ b/tests/lib/api.php @@ -6,7 +6,7 @@ * See the COPYING-README file. */ -class Test_API extends PHPUnit_Framework_TestCase { +class Test_API extends \Test\TestCase { // Helps build a response variable diff --git a/tests/lib/app.php b/tests/lib/app.php index 5bce3b8c3e6..23c1a340e03 100644 --- a/tests/lib/app.php +++ b/tests/lib/app.php @@ -7,7 +7,7 @@ * See the COPYING-README file. */ -class Test_App extends PHPUnit_Framework_TestCase { +class Test_App extends \Test\TestCase { private $oldAppConfigService; @@ -455,6 +455,9 @@ class Test_App extends PHPUnit_Framework_TestCase { \OC::$server->registerService('AppConfig', function ($c) use ($oldService){ return $oldService; }); + + // Remove the cache of the mocked apps list with a forceRefresh + \OC_App::getEnabledApps(true); } } diff --git a/tests/lib/app/infoparser.php b/tests/lib/app/infoparser.php new file mode 100644 index 00000000000..277e1582e45 --- /dev/null +++ b/tests/lib/app/infoparser.php @@ -0,0 +1,53 @@ +<?php + +/** + * @author Thomas Müller + * @copyright 2014 Thomas Müller deepdiver@owncloud.com + * later. + * See the COPYING-README file. + */ + +namespace Test\App; + +use OC; + +class InfoParser extends \PHPUnit_Framework_TestCase { + + /** + * @var \OC\App\InfoParser + */ + private $parser; + + public function setUp() { + $config = $this->getMockBuilder('\OC\AllConfig') + ->disableOriginalConstructor()->getMock(); + $httpHelper = $this->getMockBuilder('\OC\HTTPHelper') + ->setConstructorArgs(array($config)) + ->setMethods(array('getHeaders')) + ->getMock(); + $urlGenerator = $this->getMockBuilder('\OCP\IURLGenerator') + ->disableOriginalConstructor() + ->getMock(); + + //linkToDocs + $urlGenerator->expects($this->any()) + ->method('linkToDocs') + ->will($this->returnCallback(function ($url) { + return "https://docs.example.com/server/go.php?to=$url"; + })); + + $this->parser = new \OC\App\InfoParser($httpHelper, $urlGenerator); + } + + public function testParsingValidXml() { + $expectedData = json_decode(file_get_contents(OC::$SERVERROOT.'/tests/data/app/expected-info.json'), true); + $data = $this->parser->parse(OC::$SERVERROOT.'/tests/data/app/valid-info.xml'); + + $this->assertEquals($expectedData, $data); + } + + public function testParsingInvalidXml() { + $data = $this->parser->parse(OC::$SERVERROOT.'/tests/data/app/invalid-info.xml'); + $this->assertNull($data); + } +} diff --git a/tests/lib/app/manager.php b/tests/lib/app/manager.php new file mode 100644 index 00000000000..4c0555b501f --- /dev/null +++ b/tests/lib/app/manager.php @@ -0,0 +1,195 @@ +<?php + +/** + * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace Test\App; + +use OC\Group\Group; +use OC\User\User; + +class Manager extends \PHPUnit_Framework_TestCase { + /** + * @return \OCP\IAppConfig | \PHPUnit_Framework_MockObject_MockObject + */ + protected function getAppConfig() { + $appConfig = array(); + $config = $this->getMockBuilder('\OCP\IAppConfig') + ->disableOriginalConstructor() + ->getMock(); + + $config->expects($this->any()) + ->method('getValue') + ->will($this->returnCallback(function ($app, $key, $default) use (&$appConfig) { + return (isset($appConfig[$app]) and isset($appConfig[$app][$key])) ? $appConfig[$app][$key] : $default; + })); + $config->expects($this->any()) + ->method('setValue') + ->will($this->returnCallback(function ($app, $key, $value) use (&$appConfig) { + if (!isset($appConfig[$app])) { + $appConfig[$app] = array(); + } + $appConfig[$app][$key] = $value; + })); + $config->expects($this->any()) + ->method('getValues') + ->will($this->returnCallback(function ($app, $key) use (&$appConfig) { + if ($app) { + return $appConfig[$app]; + } else { + $values = array(); + foreach ($appConfig as $app => $appData) { + if (isset($appData[$key])) { + $values[$app] = $appData[$key]; + } + } + return $values; + } + })); + + return $config; + } + + public function testEnableApp() { + $userSession = $this->getMock('\OCP\IUserSession'); + $groupManager = $this->getMock('\OCP\IGroupManager'); + $appConfig = $this->getAppConfig(); + $manager = new \OC\App\AppManager($userSession, $appConfig, $groupManager); + $manager->enableApp('test'); + $this->assertEquals('yes', $appConfig->getValue('test', 'enabled', 'no')); + } + + public function testDisableApp() { + $userSession = $this->getMock('\OCP\IUserSession'); + $groupManager = $this->getMock('\OCP\IGroupManager'); + $appConfig = $this->getAppConfig(); + $manager = new \OC\App\AppManager($userSession, $appConfig, $groupManager); + $manager->disableApp('test'); + $this->assertEquals('no', $appConfig->getValue('test', 'enabled', 'no')); + } + + public function testEnableAppForGroups() { + $groups = array( + new Group('group1', array(), null), + new Group('group2', array(), null) + ); + $groupManager = $this->getMock('\OCP\IGroupManager'); + $userSession = $this->getMock('\OCP\IUserSession'); + $appConfig = $this->getAppConfig(); + $manager = new \OC\App\AppManager($userSession, $appConfig, $groupManager); + $manager->enableAppForGroups('test', $groups); + $this->assertEquals('["group1","group2"]', $appConfig->getValue('test', 'enabled', 'no')); + } + + public function testIsInstalledEnabled() { + $userSession = $this->getMock('\OCP\IUserSession'); + $groupManager = $this->getMock('\OCP\IGroupManager'); + $appConfig = $this->getAppConfig(); + $manager = new \OC\App\AppManager($userSession, $appConfig, $groupManager); + $appConfig->setValue('test', 'enabled', 'yes'); + $this->assertTrue($manager->isInstalled('test')); + } + + public function testIsInstalledDisabled() { + $userSession = $this->getMock('\OCP\IUserSession'); + $groupManager = $this->getMock('\OCP\IGroupManager'); + $appConfig = $this->getAppConfig(); + $manager = new \OC\App\AppManager($userSession, $appConfig, $groupManager); + $appConfig->setValue('test', 'enabled', 'no'); + $this->assertFalse($manager->isInstalled('test')); + } + + public function testIsInstalledEnabledForGroups() { + $userSession = $this->getMock('\OCP\IUserSession'); + $groupManager = $this->getMock('\OCP\IGroupManager'); + $appConfig = $this->getAppConfig(); + $manager = new \OC\App\AppManager($userSession, $appConfig, $groupManager); + $appConfig->setValue('test', 'enabled', '["foo"]'); + $this->assertTrue($manager->isInstalled('test')); + } + + public function testIsEnabledForUserEnabled() { + $userSession = $this->getMock('\OCP\IUserSession'); + $groupManager = $this->getMock('\OCP\IGroupManager'); + $appConfig = $this->getAppConfig(); + $manager = new \OC\App\AppManager($userSession, $appConfig, $groupManager); + $appConfig->setValue('test', 'enabled', 'yes'); + $user = new User('user1', null); + $this->assertTrue($manager->isEnabledForUser('test', $user)); + } + + public function testIsEnabledForUserDisabled() { + $userSession = $this->getMock('\OCP\IUserSession'); + $groupManager = $this->getMock('\OCP\IGroupManager'); + $appConfig = $this->getAppConfig(); + $manager = new \OC\App\AppManager($userSession, $appConfig, $groupManager); + $appConfig->setValue('test', 'enabled', 'no'); + $user = new User('user1', null); + $this->assertFalse($manager->isEnabledForUser('test', $user)); + } + + public function testIsEnabledForUserEnabledForGroup() { + $userSession = $this->getMock('\OCP\IUserSession'); + $groupManager = $this->getMock('\OCP\IGroupManager'); + $user = new User('user1', null); + + $groupManager->expects($this->once()) + ->method('getUserGroupIds') + ->with($user) + ->will($this->returnValue(array('foo', 'bar'))); + + $appConfig = $this->getAppConfig(); + $manager = new \OC\App\AppManager($userSession, $appConfig, $groupManager); + $appConfig->setValue('test', 'enabled', '["foo"]'); + $this->assertTrue($manager->isEnabledForUser('test', $user)); + } + + public function testIsEnabledForUserDisabledForGroup() { + $userSession = $this->getMock('\OCP\IUserSession'); + $groupManager = $this->getMock('\OCP\IGroupManager'); + $user = new User('user1', null); + + $groupManager->expects($this->once()) + ->method('getUserGroupIds') + ->with($user) + ->will($this->returnValue(array('bar'))); + + $appConfig = $this->getAppConfig(); + $manager = new \OC\App\AppManager($userSession, $appConfig, $groupManager); + $appConfig->setValue('test', 'enabled', '["foo"]'); + $this->assertFalse($manager->isEnabledForUser('test', $user)); + } + + public function testIsEnabledForUserLoggedOut() { + $userSession = $this->getMock('\OCP\IUserSession'); + $groupManager = $this->getMock('\OCP\IGroupManager'); + + $appConfig = $this->getAppConfig(); + $manager = new \OC\App\AppManager($userSession, $appConfig, $groupManager); + $appConfig->setValue('test', 'enabled', '["foo"]'); + $this->assertFalse($manager->IsEnabledForUser('test')); + } + + public function testIsEnabledForUserLoggedIn() { + $userSession = $this->getMock('\OCP\IUserSession'); + $groupManager = $this->getMock('\OCP\IGroupManager'); + $user = new User('user1', null); + + $userSession->expects($this->once()) + ->method('getUser') + ->will($this->returnValue($user)); + $groupManager->expects($this->once()) + ->method('getUserGroupIds') + ->with($user) + ->will($this->returnValue(array('foo', 'bar'))); + + $appConfig = $this->getAppConfig(); + $manager = new \OC\App\AppManager($userSession, $appConfig, $groupManager); + $appConfig->setValue('test', 'enabled', '["foo"]'); + $this->assertTrue($manager->isEnabledForUser('test')); + } +} diff --git a/tests/lib/appconfig.php b/tests/lib/appconfig.php index 9257ae45b0e..188721ff92d 100644 --- a/tests/lib/appconfig.php +++ b/tests/lib/appconfig.php @@ -7,8 +7,10 @@ * See the COPYING-README file. */ -class Test_Appconfig extends PHPUnit_Framework_TestCase { +class Test_Appconfig extends \Test\TestCase { public static function setUpBeforeClass() { + parent::setUpBeforeClass(); + $query = \OC_DB::prepare('INSERT INTO `*PREFIX*appconfig` VALUES (?, ?, ?)'); $query->execute(array('testapp', 'enabled', 'true')); @@ -33,6 +35,8 @@ class Test_Appconfig extends PHPUnit_Framework_TestCase { $query->execute(array('someapp')); $query->execute(array('123456')); $query->execute(array('anotherapp')); + + parent::tearDownAfterClass(); } public function testGetApps() { diff --git a/tests/lib/appframework/AppTest.php b/tests/lib/appframework/AppTest.php index 92fa4838341..bd565e9765e 100644 --- a/tests/lib/appframework/AppTest.php +++ b/tests/lib/appframework/AppTest.php @@ -25,7 +25,7 @@ namespace OC\AppFramework; -class AppTest extends \PHPUnit_Framework_TestCase { +class AppTest extends \Test\TestCase { private $container; private $api; @@ -38,6 +38,8 @@ class AppTest extends \PHPUnit_Framework_TestCase { private $controllerMethod; protected function setUp() { + parent::setUp(); + $this->container = new \OC\AppFramework\DependencyInjection\DIContainer('test', array()); $this->controller = $this->getMockBuilder( 'OCP\AppFramework\Controller') diff --git a/tests/lib/appframework/controller/ApiControllerTest.php b/tests/lib/appframework/controller/ApiControllerTest.php index b772f540ce8..3055fbe0da8 100644 --- a/tests/lib/appframework/controller/ApiControllerTest.php +++ b/tests/lib/appframework/controller/ApiControllerTest.php @@ -31,7 +31,7 @@ use OCP\AppFramework\Http\TemplateResponse; class ChildApiController extends ApiController {}; -class ApiControllerTest extends \PHPUnit_Framework_TestCase { +class ApiControllerTest extends \Test\TestCase { public function testCors() { diff --git a/tests/lib/appframework/controller/ControllerTest.php b/tests/lib/appframework/controller/ControllerTest.php index 0de94ff5b70..d186651dc23 100644 --- a/tests/lib/appframework/controller/ControllerTest.php +++ b/tests/lib/appframework/controller/ControllerTest.php @@ -54,7 +54,7 @@ class ChildController extends Controller { } }; -class ControllerTest extends \PHPUnit_Framework_TestCase { +class ControllerTest extends \Test\TestCase { /** * @var Controller @@ -63,6 +63,8 @@ class ControllerTest extends \PHPUnit_Framework_TestCase { private $app; protected function setUp(){ + parent::setUp(); + $request = new Request( array( 'get' => array('name' => 'John Q. Public', 'nickname' => 'Joey'), diff --git a/tests/lib/appframework/db/EntityTest.php b/tests/lib/appframework/db/EntityTest.php index d98cb549422..161e11d8030 100644 --- a/tests/lib/appframework/db/EntityTest.php +++ b/tests/lib/appframework/db/EntityTest.php @@ -49,11 +49,12 @@ class TestEntity extends Entity { }; -class EntityTest extends \PHPUnit_Framework_TestCase { +class EntityTest extends \Test\TestCase { private $entity; protected function setUp(){ + parent::setUp(); $this->entity = new TestEntity(); } diff --git a/tests/lib/appframework/db/mappertest.php b/tests/lib/appframework/db/mappertest.php index fd1acd0367e..6ad8cd86bff 100644 --- a/tests/lib/appframework/db/mappertest.php +++ b/tests/lib/appframework/db/mappertest.php @@ -57,7 +57,7 @@ class MapperTest extends MapperTestUtility { */ private $mapper; - public function setUp(){ + protected function setUp(){ parent::setUp(); $this->mapper = new ExampleMapper($this->db); } diff --git a/tests/lib/appframework/db/mappertestutility.php b/tests/lib/appframework/db/mappertestutility.php index 0430eef2c21..ad7a67a96b1 100644 --- a/tests/lib/appframework/db/mappertestutility.php +++ b/tests/lib/appframework/db/mappertestutility.php @@ -28,9 +28,7 @@ namespace Test\AppFramework\Db; /** * Simple utility class for testing mappers */ -abstract class MapperTestUtility extends \PHPUnit_Framework_TestCase { - - +abstract class MapperTestUtility extends \Test\TestCase { protected $db; private $query; private $pdoResult; @@ -45,6 +43,8 @@ abstract class MapperTestUtility extends \PHPUnit_Framework_TestCase { * db. After this the db can be accessed by using $this->db */ protected function setUp(){ + parent::setUp(); + $this->db = $this->getMockBuilder( '\OCP\IDb') ->disableOriginalConstructor() diff --git a/tests/lib/appframework/dependencyinjection/DIContainerTest.php b/tests/lib/appframework/dependencyinjection/DIContainerTest.php index acc5c2e66d8..08e72aff984 100644 --- a/tests/lib/appframework/dependencyinjection/DIContainerTest.php +++ b/tests/lib/appframework/dependencyinjection/DIContainerTest.php @@ -29,12 +29,13 @@ namespace OC\AppFramework\DependencyInjection; use \OC\AppFramework\Http\Request; -class DIContainerTest extends \PHPUnit_Framework_TestCase { +class DIContainerTest extends \Test\TestCase { private $container; private $api; protected function setUp(){ + parent::setUp(); $this->container = new DIContainer('name'); $this->api = $this->getMock('OC\AppFramework\Core\API', array(), array('hi')); } diff --git a/tests/lib/appframework/http/DataResponseTest.php b/tests/lib/appframework/http/DataResponseTest.php index 961327c978c..e91d3cefea9 100644 --- a/tests/lib/appframework/http/DataResponseTest.php +++ b/tests/lib/appframework/http/DataResponseTest.php @@ -29,7 +29,7 @@ use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\Http; -class DataResponseTest extends \PHPUnit_Framework_TestCase { +class DataResponseTest extends \Test\TestCase { /** * @var DataResponse @@ -37,6 +37,7 @@ class DataResponseTest extends \PHPUnit_Framework_TestCase { private $response; protected function setUp() { + parent::setUp(); $this->response = new DataResponse(); } diff --git a/tests/lib/appframework/http/DispatcherTest.php b/tests/lib/appframework/http/DispatcherTest.php index f082ddc8b3a..f92e7161e6b 100644 --- a/tests/lib/appframework/http/DispatcherTest.php +++ b/tests/lib/appframework/http/DispatcherTest.php @@ -62,9 +62,7 @@ class TestController extends Controller { } -class DispatcherTest extends \PHPUnit_Framework_TestCase { - - +class DispatcherTest extends \Test\TestCase { private $middlewareDispatcher; private $dispatcher; private $controllerMethod; @@ -75,6 +73,7 @@ class DispatcherTest extends \PHPUnit_Framework_TestCase { private $reflector; protected function setUp() { + parent::setUp(); $this->controllerMethod = 'test'; $app = $this->getMockBuilder( diff --git a/tests/lib/appframework/http/DownloadResponseTest.php b/tests/lib/appframework/http/DownloadResponseTest.php index ab381e5c298..5e5db2c55ec 100644 --- a/tests/lib/appframework/http/DownloadResponseTest.php +++ b/tests/lib/appframework/http/DownloadResponseTest.php @@ -30,7 +30,7 @@ class ChildDownloadResponse extends DownloadResponse { }; -class DownloadResponseTest extends \PHPUnit_Framework_TestCase { +class DownloadResponseTest extends \Test\TestCase { /** * @var ChildDownloadResponse @@ -38,6 +38,7 @@ class DownloadResponseTest extends \PHPUnit_Framework_TestCase { protected $response; protected function setUp(){ + parent::setUp(); $this->response = new ChildDownloadResponse('file', 'content'); } diff --git a/tests/lib/appframework/http/HttpTest.php b/tests/lib/appframework/http/HttpTest.php index a7a189c98e5..e9be3e73904 100644 --- a/tests/lib/appframework/http/HttpTest.php +++ b/tests/lib/appframework/http/HttpTest.php @@ -27,7 +27,7 @@ namespace OC\AppFramework\Http; use OC\AppFramework\Http; -class HttpTest extends \PHPUnit_Framework_TestCase { +class HttpTest extends \Test\TestCase { private $server; @@ -37,6 +37,8 @@ class HttpTest extends \PHPUnit_Framework_TestCase { private $http; protected function setUp(){ + parent::setUp(); + $this->server = array(); $this->http = new Http($this->server); } diff --git a/tests/lib/appframework/http/JSONResponseTest.php b/tests/lib/appframework/http/JSONResponseTest.php index 06cd3410a69..cdd8d269b41 100644 --- a/tests/lib/appframework/http/JSONResponseTest.php +++ b/tests/lib/appframework/http/JSONResponseTest.php @@ -30,7 +30,7 @@ namespace OC\AppFramework\Http; use OCP\AppFramework\Http\JSONResponse; use OCP\AppFramework\Http; -class JSONResponseTest extends \PHPUnit_Framework_TestCase { +class JSONResponseTest extends \Test\TestCase { /** * @var JSONResponse @@ -38,6 +38,7 @@ class JSONResponseTest extends \PHPUnit_Framework_TestCase { private $json; protected function setUp() { + parent::setUp(); $this->json = new JSONResponse(); } diff --git a/tests/lib/appframework/http/RedirectResponseTest.php b/tests/lib/appframework/http/RedirectResponseTest.php index e5d452f7f91..17db0c0be6c 100644 --- a/tests/lib/appframework/http/RedirectResponseTest.php +++ b/tests/lib/appframework/http/RedirectResponseTest.php @@ -27,7 +27,7 @@ namespace OCP\AppFramework\Http; use OCP\AppFramework\Http; -class RedirectResponseTest extends \PHPUnit_Framework_TestCase { +class RedirectResponseTest extends \Test\TestCase { /** * @var RedirectResponse @@ -35,6 +35,7 @@ class RedirectResponseTest extends \PHPUnit_Framework_TestCase { protected $response; protected function setUp(){ + parent::setUp(); $this->response = new RedirectResponse('/url'); } diff --git a/tests/lib/appframework/http/RequestTest.php b/tests/lib/appframework/http/RequestTest.php index 58828d17bb2..caa22c84415 100644 --- a/tests/lib/appframework/http/RequestTest.php +++ b/tests/lib/appframework/http/RequestTest.php @@ -10,9 +10,11 @@ namespace OC\AppFramework\Http; global $data; -class RequestTest extends \PHPUnit_Framework_TestCase { +class RequestTest extends \Test\TestCase { + + protected function setUp() { + parent::setUp(); - public function setUp() { require_once __DIR__ . '/requeststream.php'; if (in_array('fakeinput', stream_get_wrappers())) { stream_wrapper_unregister('fakeinput'); @@ -21,8 +23,9 @@ class RequestTest extends \PHPUnit_Framework_TestCase { $this->stream = 'fakeinput://data'; } - public function tearDown() { + protected function tearDown() { stream_wrapper_unregister('fakeinput'); + parent::tearDown(); } public function testRequestAccessors() { diff --git a/tests/lib/appframework/http/ResponseTest.php b/tests/lib/appframework/http/ResponseTest.php index b1dddd9ebc7..04e19fdaf71 100644 --- a/tests/lib/appframework/http/ResponseTest.php +++ b/tests/lib/appframework/http/ResponseTest.php @@ -29,7 +29,7 @@ use OCP\AppFramework\Http\Response; use OCP\AppFramework\Http; -class ResponseTest extends \PHPUnit_Framework_TestCase { +class ResponseTest extends \Test\TestCase { /** * @var \OCP\AppFramework\Http\Response @@ -37,6 +37,7 @@ class ResponseTest extends \PHPUnit_Framework_TestCase { private $childResponse; protected function setUp(){ + parent::setUp(); $this->childResponse = new Response(); } diff --git a/tests/lib/appframework/http/TemplateResponseTest.php b/tests/lib/appframework/http/TemplateResponseTest.php index afdcf322b85..2ec57f8979a 100644 --- a/tests/lib/appframework/http/TemplateResponseTest.php +++ b/tests/lib/appframework/http/TemplateResponseTest.php @@ -28,7 +28,7 @@ use OCP\AppFramework\Http\TemplateResponse; use OCP\AppFramework\Http; -class TemplateResponseTest extends \PHPUnit_Framework_TestCase { +class TemplateResponseTest extends \Test\TestCase { /** * @var \OCP\AppFramework\Http\TemplateResponse @@ -41,6 +41,8 @@ class TemplateResponseTest extends \PHPUnit_Framework_TestCase { private $api; protected function setUp() { + parent::setUp(); + $this->api = $this->getMock('OC\AppFramework\Core\API', array('getAppName'), array('test')); $this->api->expects($this->any()) diff --git a/tests/lib/appframework/middleware/MiddlewareDispatcherTest.php b/tests/lib/appframework/middleware/MiddlewareDispatcherTest.php index b1e221aab99..be8765afd39 100644 --- a/tests/lib/appframework/middleware/MiddlewareDispatcherTest.php +++ b/tests/lib/appframework/middleware/MiddlewareDispatcherTest.php @@ -100,7 +100,7 @@ class TestMiddleware extends Middleware { } -class MiddlewareDispatcherTest extends \PHPUnit_Framework_TestCase { +class MiddlewareDispatcherTest extends \Test\TestCase { public $exception; public $response; @@ -113,8 +113,9 @@ class MiddlewareDispatcherTest extends \PHPUnit_Framework_TestCase { */ private $dispatcher; + protected function setUp() { + parent::setUp(); - public function setUp() { $this->dispatcher = new MiddlewareDispatcher(); $this->controller = $this->getControllerMock(); $this->method = 'method'; diff --git a/tests/lib/appframework/middleware/MiddlewareTest.php b/tests/lib/appframework/middleware/MiddlewareTest.php index 9d952f61573..b41ec33eb15 100644 --- a/tests/lib/appframework/middleware/MiddlewareTest.php +++ b/tests/lib/appframework/middleware/MiddlewareTest.php @@ -31,7 +31,7 @@ use OCP\AppFramework\Middleware; class ChildMiddleware extends Middleware {}; -class MiddlewareTest extends \PHPUnit_Framework_TestCase { +class MiddlewareTest extends \Test\TestCase { /** * @var Middleware @@ -42,6 +42,8 @@ class MiddlewareTest extends \PHPUnit_Framework_TestCase { private $api; protected function setUp(){ + parent::setUp(); + $this->middleware = new ChildMiddleware(); $this->api = $this->getMockBuilder( diff --git a/tests/lib/appframework/middleware/security/CORSMiddlewareTest.php b/tests/lib/appframework/middleware/security/CORSMiddlewareTest.php index 79cd3b278af..b4bbcce5ad7 100644 --- a/tests/lib/appframework/middleware/security/CORSMiddlewareTest.php +++ b/tests/lib/appframework/middleware/security/CORSMiddlewareTest.php @@ -18,11 +18,12 @@ use OC\AppFramework\Utility\ControllerMethodReflector; use OCP\AppFramework\Http\Response; -class CORSMiddlewareTest extends \PHPUnit_Framework_TestCase { +class CORSMiddlewareTest extends \Test\TestCase { private $reflector; protected function setUp() { + parent::setUp(); $this->reflector = new ControllerMethodReflector(); } diff --git a/tests/lib/appframework/middleware/security/SecurityMiddlewareTest.php b/tests/lib/appframework/middleware/security/SecurityMiddlewareTest.php index 74fc7907fb5..a8925403a95 100644 --- a/tests/lib/appframework/middleware/security/SecurityMiddlewareTest.php +++ b/tests/lib/appframework/middleware/security/SecurityMiddlewareTest.php @@ -31,7 +31,7 @@ use OCP\AppFramework\Http\RedirectResponse; use OCP\AppFramework\Http\JSONResponse; -class SecurityMiddlewareTest extends \PHPUnit_Framework_TestCase { +class SecurityMiddlewareTest extends \Test\TestCase { private $middleware; private $controller; @@ -43,7 +43,9 @@ class SecurityMiddlewareTest extends \PHPUnit_Framework_TestCase { private $navigationManager; private $urlGenerator; - public function setUp() { + protected function setUp() { + parent::setUp(); + $this->controller = $this->getMockBuilder('OCP\AppFramework\Controller') ->disableOriginalConstructor() ->getMock(); @@ -77,7 +79,7 @@ class SecurityMiddlewareTest extends \PHPUnit_Framework_TestCase { $this->navigationManager, $this->urlGenerator, $this->logger, - 'test', + 'files', $isLoggedIn, $isAdminUser ); @@ -91,7 +93,7 @@ class SecurityMiddlewareTest extends \PHPUnit_Framework_TestCase { public function testSetNavigationEntry(){ $this->navigationManager->expects($this->once()) ->method('setActiveEntry') - ->with($this->equalTo('test')); + ->with($this->equalTo('files')); $this->reader->reflect(__CLASS__, __FUNCTION__); $this->middleware->beforeController(__CLASS__, __FUNCTION__); diff --git a/tests/lib/appframework/middleware/sessionmiddlewaretest.php b/tests/lib/appframework/middleware/sessionmiddlewaretest.php index 13e558bf21a..344b555ec3c 100644 --- a/tests/lib/appframework/middleware/sessionmiddlewaretest.php +++ b/tests/lib/appframework/middleware/sessionmiddlewaretest.php @@ -18,7 +18,7 @@ use OC\AppFramework\Utility\ControllerMethodReflector; use OCP\AppFramework\Http\Response; -class SessionMiddlewareTest extends \PHPUnit_Framework_TestCase { +class SessionMiddlewareTest extends \Test\TestCase { /** * @var ControllerMethodReflector @@ -31,6 +31,8 @@ class SessionMiddlewareTest extends \PHPUnit_Framework_TestCase { private $request; protected function setUp() { + parent::setUp(); + $this->request = new Request(); $this->reflector = new ControllerMethodReflector(); } diff --git a/tests/lib/appframework/routing/RoutingTest.php b/tests/lib/appframework/routing/RoutingTest.php index a1d9a51a3c8..4ee3ed58807 100644 --- a/tests/lib/appframework/routing/RoutingTest.php +++ b/tests/lib/appframework/routing/RoutingTest.php @@ -6,7 +6,7 @@ use OC\AppFramework\DependencyInjection\DIContainer; use OC\AppFramework\routing\RouteConfig; -class RoutingTest extends \PHPUnit_Framework_TestCase +class RoutingTest extends \Test\TestCase { public function testSimpleRoute() @@ -54,6 +54,15 @@ class RoutingTest extends \PHPUnit_Framework_TestCase $this->assertSimpleRoute($routes, 'folders.open', 'DELETE', '/folders/{folderId}/open', 'FoldersController', 'open', array(), array('param' => 'foobar')); } + public function testSimpleRouteWithPostfix() + { + $routes = array('routes' => array( + array('name' => 'folders#open', 'url' => '/folders/{folderId}/open', 'verb' => 'delete', 'postfix' => '_something') + )); + + $this->assertSimpleRoute($routes, 'folders.open', 'DELETE', '/folders/{folderId}/open', 'FoldersController', 'open', array(), array(), '_something'); + } + /** * @expectedException \UnexpectedValueException @@ -104,8 +113,12 @@ class RoutingTest extends \PHPUnit_Framework_TestCase * @param string $controllerName * @param string $actionName */ - private function assertSimpleRoute($routes, $name, $verb, $url, $controllerName, $actionName, array $requirements=array(), array $defaults=array()) + private function assertSimpleRoute($routes, $name, $verb, $url, $controllerName, $actionName, array $requirements=array(), array $defaults=array(), $postfix='') { + if ($postfix) { + $name .= $postfix; + } + // route mocks $route = $this->mockRoute($verb, $controllerName, $actionName, $requirements, $defaults); diff --git a/tests/lib/appframework/utility/ControllerMethodReflectorTest.php b/tests/lib/appframework/utility/ControllerMethodReflectorTest.php index 8939a203edb..cd6bd57da4c 100644 --- a/tests/lib/appframework/utility/ControllerMethodReflectorTest.php +++ b/tests/lib/appframework/utility/ControllerMethodReflectorTest.php @@ -25,7 +25,7 @@ namespace OC\AppFramework\Utility; -class ControllerMethodReflectorTest extends \PHPUnit_Framework_TestCase { +class ControllerMethodReflectorTest extends \Test\TestCase { /** diff --git a/tests/lib/archive.php b/tests/lib/archive.php index be5cc897a67..690b4378b88 100644 --- a/tests/lib/archive.php +++ b/tests/lib/archive.php @@ -6,7 +6,7 @@ * See the COPYING-README file. */ -abstract class Test_Archive extends PHPUnit_Framework_TestCase { +abstract class Test_Archive extends \Test\TestCase { /** * @var OC_Archive */ diff --git a/tests/lib/archive/tar.php b/tests/lib/archive/tar.php index 5b9089b32e1..43157e2054d 100644 --- a/tests/lib/archive/tar.php +++ b/tests/lib/archive/tar.php @@ -7,11 +7,12 @@ */ class Test_Archive_TAR extends Test_Archive { - public function setUp() { + protected function setUp() { + parent::setUp(); + if (OC_Util::runningOnWindows()) { - $this->markTestSkipped('tar archives are not supported on windows'); + $this->markTestSkipped('[Windows] tar archives are not supported on Windows'); } - parent::setUp(); } protected function getExisting() { diff --git a/tests/lib/archive/zip.php b/tests/lib/archive/zip.php index 90958baf380..09ea5d7d27c 100644 --- a/tests/lib/archive/zip.php +++ b/tests/lib/archive/zip.php @@ -6,8 +6,15 @@ * See the COPYING-README file. */ -if (!OC_Util::runningOnWindows()) { class Test_Archive_ZIP extends Test_Archive { + protected function setUp() { + parent::setUp(); + + if (OC_Util::runningOnWindows()) { + $this->markTestSkipped('[Windows] '); + } + } + protected function getExisting() { $dir = OC::$SERVERROOT . '/tests/data'; return new OC_Archive_ZIP($dir . '/data.zip'); @@ -17,4 +24,3 @@ class Test_Archive_ZIP extends Test_Archive { return new OC_Archive_ZIP(OCP\Files::tmpFile('.zip')); } } -} diff --git a/tests/lib/autoloader.php b/tests/lib/autoloader.php index 46172647249..bf63094a9ef 100644 --- a/tests/lib/autoloader.php +++ b/tests/lib/autoloader.php @@ -8,13 +8,14 @@ namespace Test; -class AutoLoader extends \PHPUnit_Framework_TestCase { +class AutoLoader extends TestCase { /** * @var \OC\Autoloader $loader */ private $loader; - public function setUp() { + protected function setUp() { + parent::setUp(); $this->loader = new \OC\AutoLoader(); } diff --git a/tests/lib/avatar.php b/tests/lib/avatar.php index 0334639afa8..421be155d17 100644 --- a/tests/lib/avatar.php +++ b/tests/lib/avatar.php @@ -6,12 +6,14 @@ * later. * See the COPYING-README file. */ -class Test_Avatar extends PHPUnit_Framework_TestCase { +class Test_Avatar extends \Test\TestCase { private $user; - public function setUp() { - $this->user = uniqid(); + protected function setUp() { + parent::setUp(); + + $this->user = $this->getUniqueID(); $storage = new \OC\Files\Storage\Temporary(array()); \OC\Files\Filesystem::mount($storage, array(), '/' . $this->user . '/'); } diff --git a/tests/lib/backgroundjob/job.php b/tests/lib/backgroundjob/job.php index 10a8f46462e..fec9b0a792d 100644 --- a/tests/lib/backgroundjob/job.php +++ b/tests/lib/backgroundjob/job.php @@ -8,10 +8,11 @@ namespace Test\BackgroundJob; -class Job extends \PHPUnit_Framework_TestCase { +class Job extends \Test\TestCase { private $run = false; - public function setUp() { + protected function setUp() { + parent::setUp(); $this->run = false; } diff --git a/tests/lib/backgroundjob/joblist.php b/tests/lib/backgroundjob/joblist.php index c3318f80cb2..13bee12479e 100644 --- a/tests/lib/backgroundjob/joblist.php +++ b/tests/lib/backgroundjob/joblist.php @@ -8,7 +8,7 @@ namespace Test\BackgroundJob; -class JobList extends \PHPUnit_Framework_TestCase { +class JobList extends \Test\TestCase { /** * @var \OC\BackgroundJob\JobList */ @@ -19,7 +19,9 @@ class JobList extends \PHPUnit_Framework_TestCase { */ protected $config; - public function setUp() { + protected function setUp() { + parent::setUp(); + $conn = \OC::$server->getDatabaseConnection(); $this->config = $this->getMock('\OCP\IConfig'); $this->instance = new \OC\BackgroundJob\JobList($conn, $this->config); diff --git a/tests/lib/backgroundjob/queuedjob.php b/tests/lib/backgroundjob/queuedjob.php index 19c1b28a507..8d3cd6f907b 100644 --- a/tests/lib/backgroundjob/queuedjob.php +++ b/tests/lib/backgroundjob/queuedjob.php @@ -23,7 +23,7 @@ class TestQueuedJob extends \OC\BackgroundJob\QueuedJob { } } -class QueuedJob extends \PHPUnit_Framework_TestCase { +class QueuedJob extends \Test\TestCase { /** * @var DummyJobList $jobList */ @@ -39,7 +39,9 @@ class QueuedJob extends \PHPUnit_Framework_TestCase { $this->jobRun = true; } - public function setup() { + protected function setup() { + parent::setUp(); + $this->jobList = new DummyJobList(); $this->job = new TestQueuedJob($this); $this->jobList->add($this->job); diff --git a/tests/lib/backgroundjob/timedjob.php b/tests/lib/backgroundjob/timedjob.php index 646a2607ef3..7d9bfe979af 100644 --- a/tests/lib/backgroundjob/timedjob.php +++ b/tests/lib/backgroundjob/timedjob.php @@ -24,7 +24,7 @@ class TestTimedJob extends \OC\BackgroundJob\TimedJob { } } -class TimedJob extends \PHPUnit_Framework_TestCase { +class TimedJob extends \Test\TestCase { /** * @var DummyJobList $jobList */ @@ -40,7 +40,9 @@ class TimedJob extends \PHPUnit_Framework_TestCase { $this->jobRun = true; } - public function setup() { + protected function setup() { + parent::setUp(); + $this->jobList = new DummyJobList(); $this->job = new TestTimedJob($this); $this->jobList->add($this->job); diff --git a/tests/lib/cache.php b/tests/lib/cache.php index 8fefa25f65d..894d8c57662 100644 --- a/tests/lib/cache.php +++ b/tests/lib/cache.php @@ -6,16 +6,18 @@ * See the COPYING-README file. */ -abstract class Test_Cache extends PHPUnit_Framework_TestCase { +abstract class Test_Cache extends \Test\TestCase { /** * @var \OC\Cache cache; */ protected $instance; - public function tearDown() { + protected function tearDown() { if($this->instance) { $this->instance->clear(); } + + parent::tearDown(); } function testSimple() { diff --git a/tests/lib/cache/file.php b/tests/lib/cache/file.php index 0e19c105cd1..d51322036c8 100644 --- a/tests/lib/cache/file.php +++ b/tests/lib/cache/file.php @@ -23,14 +23,20 @@ namespace Test\Cache; class FileCache extends \Test_Cache { + /** @var string */ private $user; + /** @var string */ private $datadir; + /** @var \OC\Files\Storage\Storage */ + private $storage; function skip() { //$this->skipUnless(OC_User::isLoggedIn()); } - - public function setUp() { + + protected function setUp() { + parent::setUp(); + //clear all proxies and hooks so we can do clean testing \OC_FileProxy::clearProxies(); \OC_Hook::clear('OC_Filesystem'); @@ -42,6 +48,7 @@ class FileCache extends \Test_Cache { //} //set up temporary storage + $this->storage = \OC\Files\Filesystem::getStorage('/'); \OC\Files\Filesystem::clearMounts(); $storage = new \OC\Files\Storage\Temporary(array()); \OC\Files\Filesystem::mount($storage,array(),'/'); @@ -65,8 +72,14 @@ class FileCache extends \Test_Cache { $this->instance=new \OC\Cache\File(); } - public function tearDown() { + protected function tearDown() { \OC_User::setUserId($this->user); \OC_Config::setValue('cachedirectory', $this->datadir); + + // Restore the original mount point + \OC\Files\Filesystem::clearMounts(); + \OC\Files\Filesystem::mount($this->storage, array(), '/'); + + parent::tearDown(); } } diff --git a/tests/lib/cache/usercache.php b/tests/lib/cache/usercache.php index a1b6af1c55d..3822a714d5a 100644 --- a/tests/lib/cache/usercache.php +++ b/tests/lib/cache/usercache.php @@ -23,10 +23,16 @@ namespace Test\Cache; class UserCache extends \Test_Cache { + /** @var string */ private $user; + /** @var string */ private $datadir; + /** @var \OC\Files\Storage\Storage */ + private $storage; + + protected function setUp() { + parent::setUp(); - public function setUp() { //clear all proxies and hooks so we can do clean testing \OC_FileProxy::clearProxies(); \OC_Hook::clear('OC_Filesystem'); @@ -38,6 +44,7 @@ class UserCache extends \Test_Cache { //} //set up temporary storage + $this->storage = \OC\Files\Filesystem::getStorage('/'); \OC\Files\Filesystem::clearMounts(); $storage = new \OC\Files\Storage\Temporary(array()); \OC\Files\Filesystem::mount($storage,array(),'/'); @@ -61,7 +68,14 @@ class UserCache extends \Test_Cache { $this->instance=new \OC\Cache\UserCache(); } - public function tearDown() { + protected function tearDown() { \OC_User::setUserId($this->user); + \OC_Config::setValue('cachedirectory', $this->datadir); + + // Restore the original mount point + \OC\Files\Filesystem::clearMounts(); + \OC\Files\Filesystem::mount($this->storage, array(), '/'); + + parent::tearDown(); } } diff --git a/tests/lib/config.php b/tests/lib/config.php index 180f6b1649b..9dff3aab84f 100644 --- a/tests/lib/config.php +++ b/tests/lib/config.php @@ -6,7 +6,7 @@ * See the COPYING-README file. */ -class Test_Config extends PHPUnit_Framework_TestCase { +class Test_Config extends \Test\TestCase { const TESTCONTENT = '<?php $CONFIG=array("foo"=>"bar", "beers" => array("Appenzeller", "Guinness", "Kölsch"), "alcohol_free" => false);'; /** @var array */ @@ -18,15 +18,18 @@ class Test_Config extends PHPUnit_Framework_TestCase { /** @var string */ private $randomTmpDir; - function setUp() { + protected function setUp() { + parent::setUp(); + $this->randomTmpDir = \OC_Helper::tmpFolder(); $this->configFile = $this->randomTmpDir.'testconfig.php'; file_put_contents($this->configFile, self::TESTCONTENT); $this->config = new OC\Config($this->randomTmpDir, 'testconfig.php'); } - public function tearDown() { + protected function tearDown() { unlink($this->configFile); + parent::tearDown(); } public function testGetKeys() { diff --git a/tests/lib/connector/sabre/directory.php b/tests/lib/connector/sabre/directory.php index 453d8e8d42a..d8dca35cd71 100644 --- a/tests/lib/connector/sabre/directory.php +++ b/tests/lib/connector/sabre/directory.php @@ -6,12 +6,14 @@ * later. * See the COPYING-README file. */ -class Test_OC_Connector_Sabre_Directory extends PHPUnit_Framework_TestCase { +class Test_OC_Connector_Sabre_Directory extends \Test\TestCase { private $view; private $info; - public function setUp() { + protected function setUp() { + parent::setUp(); + $this->view = $this->getMock('OC\Files\View', array(), array(), '', false); $this->info = $this->getMock('OC\Files\FileInfo', array(), array(), '', false); } diff --git a/tests/lib/connector/sabre/file.php b/tests/lib/connector/sabre/file.php index 0993a27f372..b4fdd91f512 100644 --- a/tests/lib/connector/sabre/file.php +++ b/tests/lib/connector/sabre/file.php @@ -6,7 +6,7 @@ * See the COPYING-README file. */ -class Test_OC_Connector_Sabre_File extends PHPUnit_Framework_TestCase { +class Test_OC_Connector_Sabre_File extends \Test\TestCase { /** * @expectedException \Sabre\DAV\Exception @@ -23,7 +23,7 @@ class Test_OC_Connector_Sabre_File extends PHPUnit_Framework_TestCase { ->will($this->returnValue('/test.txt')); $info = new \OC\Files\FileInfo('/test.txt', null, null, array( - 'permissions'=>\OCP\PERMISSION_ALL + 'permissions'=>\OCP\Constants::PERMISSION_ALL )); $file = new OC_Connector_Sabre_File($view, $info); @@ -58,7 +58,7 @@ class Test_OC_Connector_Sabre_File extends PHPUnit_Framework_TestCase { $_SERVER['REQUEST_METHOD'] = 'PUT'; $info = new \OC\Files\FileInfo('/test.txt', null, null, array( - 'permissions' => \OCP\PERMISSION_ALL + 'permissions' => \OCP\Constants::PERMISSION_ALL )); $file = new OC_Connector_Sabre_File($view, $info); @@ -82,7 +82,7 @@ class Test_OC_Connector_Sabre_File extends PHPUnit_Framework_TestCase { ->will($this->returnValue('/super*star.txt')); $info = new \OC\Files\FileInfo('/super*star.txt', null, null, array( - 'permissions' => \OCP\PERMISSION_ALL + 'permissions' => \OCP\Constants::PERMISSION_ALL )); $file = new OC_Connector_Sabre_File($view, $info); @@ -103,7 +103,7 @@ class Test_OC_Connector_Sabre_File extends PHPUnit_Framework_TestCase { ->will($this->returnValue('/super*star.txt')); $info = new \OC\Files\FileInfo('/super*star.txt', null, null, array( - 'permissions' => \OCP\PERMISSION_ALL + 'permissions' => \OCP\Constants::PERMISSION_ALL )); $file = new OC_Connector_Sabre_File($view, $info); $file->setName('/super*star.txt'); @@ -135,7 +135,7 @@ class Test_OC_Connector_Sabre_File extends PHPUnit_Framework_TestCase { $_SERVER['REQUEST_METHOD'] = 'PUT'; $info = new \OC\Files\FileInfo('/test.txt', null, null, array( - 'permissions' => \OCP\PERMISSION_ALL + 'permissions' => \OCP\Constants::PERMISSION_ALL )); $file = new OC_Connector_Sabre_File($view, $info); @@ -157,7 +157,7 @@ class Test_OC_Connector_Sabre_File extends PHPUnit_Framework_TestCase { ->will($this->returnValue(true)); $info = new \OC\Files\FileInfo('/test.txt', null, null, array( - 'permissions' => \OCP\PERMISSION_ALL + 'permissions' => \OCP\Constants::PERMISSION_ALL )); $file = new OC_Connector_Sabre_File($view, $info); @@ -198,7 +198,7 @@ class Test_OC_Connector_Sabre_File extends PHPUnit_Framework_TestCase { ->will($this->returnValue(false)); $info = new \OC\Files\FileInfo('/test.txt', null, null, array( - 'permissions' => \OCP\PERMISSION_ALL + 'permissions' => \OCP\Constants::PERMISSION_ALL )); $file = new OC_Connector_Sabre_File($view, $info); diff --git a/tests/lib/connector/sabre/node.php b/tests/lib/connector/sabre/node.php index 0f303457248..1e927deed44 100644 --- a/tests/lib/connector/sabre/node.php +++ b/tests/lib/connector/sabre/node.php @@ -12,18 +12,18 @@ namespace Test\Connector\Sabre; use OC\Files\FileInfo; use OC\Files\View; -class Node extends \PHPUnit_Framework_TestCase { +class Node extends \Test\TestCase { public function davPermissionsProvider() { return array( - array(\OCP\PERMISSION_ALL, 'file', false, false, 'RDNVW'), - array(\OCP\PERMISSION_ALL, 'dir', false, false, 'RDNVCK'), - array(\OCP\PERMISSION_ALL, 'file', true, false, 'SRDNVW'), - array(\OCP\PERMISSION_ALL, 'file', true, true, 'SRMDNVW'), - array(\OCP\PERMISSION_ALL - \OCP\PERMISSION_SHARE, 'file', true, false, 'SDNVW'), - array(\OCP\PERMISSION_ALL - \OCP\PERMISSION_UPDATE, 'file', false, false, 'RDNV'), - array(\OCP\PERMISSION_ALL - \OCP\PERMISSION_DELETE, 'file', false, false, 'RW'), - array(\OCP\PERMISSION_ALL - \OCP\PERMISSION_CREATE, 'file', false, false, 'RDNVW'), - array(\OCP\PERMISSION_ALL - \OCP\PERMISSION_CREATE, 'dir', false, false, 'RDNV'), + array(\OCP\Constants::PERMISSION_ALL, 'file', false, false, 'RDNVW'), + array(\OCP\Constants::PERMISSION_ALL, 'dir', false, false, 'RDNVCK'), + array(\OCP\Constants::PERMISSION_ALL, 'file', true, false, 'SRDNVW'), + array(\OCP\Constants::PERMISSION_ALL, 'file', true, true, 'SRMDNVW'), + array(\OCP\Constants::PERMISSION_ALL - \OCP\Constants::PERMISSION_SHARE, 'file', true, false, 'SDNVW'), + array(\OCP\Constants::PERMISSION_ALL - \OCP\Constants::PERMISSION_UPDATE, 'file', false, false, 'RDNV'), + array(\OCP\Constants::PERMISSION_ALL - \OCP\Constants::PERMISSION_DELETE, 'file', false, false, 'RW'), + array(\OCP\Constants::PERMISSION_ALL - \OCP\Constants::PERMISSION_CREATE, 'file', false, false, 'RDNVW'), + array(\OCP\Constants::PERMISSION_ALL - \OCP\Constants::PERMISSION_CREATE, 'dir', false, false, 'RDNV'), ); } diff --git a/tests/lib/connector/sabre/objecttree.php b/tests/lib/connector/sabre/objecttree.php index fc9f802066f..d1de46d2ee7 100644 --- a/tests/lib/connector/sabre/objecttree.php +++ b/tests/lib/connector/sabre/objecttree.php @@ -13,7 +13,7 @@ use OC\Files\FileInfo; use OC_Connector_Sabre_Directory; use PHPUnit_Framework_TestCase; -class TestDoubleFileView extends \OC\Files\View{ +class TestDoubleFileView extends \OC\Files\View { public function __construct($updatables, $deletables, $canRename = true) { $this->updatables = $updatables; @@ -42,7 +42,7 @@ class TestDoubleFileView extends \OC\Files\View{ } } -class ObjectTree extends PHPUnit_Framework_TestCase { +class ObjectTree extends \Test\TestCase { /** * @dataProvider moveFailedProvider diff --git a/tests/lib/connector/sabre/quotaplugin.php b/tests/lib/connector/sabre/quotaplugin.php index 3b144cf56b5..f08637854ce 100644 --- a/tests/lib/connector/sabre/quotaplugin.php +++ b/tests/lib/connector/sabre/quotaplugin.php @@ -6,7 +6,7 @@ * later. * See the COPYING-README file. */ -class Test_OC_Connector_Sabre_QuotaPlugin extends PHPUnit_Framework_TestCase { +class Test_OC_Connector_Sabre_QuotaPlugin extends \Test\TestCase { /** * @var \Sabre\DAV\Server diff --git a/tests/lib/contacts/localadressbook.php b/tests/lib/contacts/localadressbook.php index bb69910820f..5fa260ffc3b 100644 --- a/tests/lib/contacts/localadressbook.php +++ b/tests/lib/contacts/localadressbook.php @@ -11,7 +11,7 @@ use OC\Contacts\LocalAddressBook; * License along with this library. If not, see <http://www.gnu.org/licenses/>. */ -class Test_LocalAddressBook extends PHPUnit_Framework_TestCase +class Test_LocalAddressBook extends \Test\TestCase { public function testSearchFN() { diff --git a/tests/lib/db.php b/tests/lib/db.php index fb673b8092b..a401aded62a 100644 --- a/tests/lib/db.php +++ b/tests/lib/db.php @@ -6,7 +6,7 @@ * See the COPYING-README file. */ -class Test_DB extends PHPUnit_Framework_TestCase { +class Test_DB extends \Test\TestCase { protected $backupGlobals = FALSE; protected static $schema_file = 'static://test_db_scheme'; @@ -32,7 +32,9 @@ class Test_DB extends PHPUnit_Framework_TestCase { */ private $table4; - public function setUp() { + protected function setUp() { + parent::setUp(); + $dbfile = OC::$SERVERROOT.'/tests/data/db_structure.xml'; $r = '_'.OC_Util::generateRandomBytes(4).'_'; @@ -48,9 +50,11 @@ class Test_DB extends PHPUnit_Framework_TestCase { $this->table4 = $this->test_prefix.'decimal'; } - public function tearDown() { + protected function tearDown() { OC_DB::removeDBStructure(self::$schema_file); unlink(self::$schema_file); + + parent::tearDown(); } public function testQuotes() { diff --git a/tests/lib/db/mdb2schemamanager.php b/tests/lib/db/mdb2schemamanager.php index 527b2cba648..3e6abab70b4 100644 --- a/tests/lib/db/mdb2schemamanager.php +++ b/tests/lib/db/mdb2schemamanager.php @@ -12,15 +12,17 @@ namespace Test\DB; use Doctrine\DBAL\Platforms\OraclePlatform; use Doctrine\DBAL\Platforms\SQLServerPlatform; -class MDB2SchemaManager extends \PHPUnit_Framework_TestCase { +class MDB2SchemaManager extends \Test\TestCase { - public function tearDown() { + protected function tearDown() { // do not drop the table for Oracle as it will create a bogus transaction // that will break the following test suites requiring transactions if (\OC::$server->getConfig()->getSystemValue('dbtype', 'sqlite') === 'oci') { return; } \OC_DB::dropTable('table'); + + parent::tearDown(); } public function testAutoIncrement() { diff --git a/tests/lib/db/mdb2schemareader.php b/tests/lib/db/mdb2schemareader.php index f08996cbeaf..7939c782e80 100644 --- a/tests/lib/db/mdb2schemareader.php +++ b/tests/lib/db/mdb2schemareader.php @@ -11,7 +11,7 @@ namespace Test\DB; use Doctrine\DBAL\Platforms\MySqlPlatform; -class MDB2SchemaReader extends \PHPUnit_Framework_TestCase { +class MDB2SchemaReader extends \Test\TestCase { /** * @var \OC\DB\MDB2SchemaReader $reader */ @@ -21,11 +21,11 @@ class MDB2SchemaReader extends \PHPUnit_Framework_TestCase { * @return \OC\Config */ protected function getConfig() { - $config = $this->getMockBuilder('\OC\Config') + $config = $this->getMockBuilder('\OCP\IConfig') ->disableOriginalConstructor() ->getMock(); $config->expects($this->any()) - ->method('getValue') + ->method('getSystemValue') ->will($this->returnValueMap(array( array('dbname', 'owncloud', 'testDB'), array('dbtableprefix', 'oc_', 'test_') diff --git a/tests/lib/db/migrator.php b/tests/lib/db/migrator.php index 09742a53eb4..7acd3382fe2 100644 --- a/tests/lib/db/migrator.php +++ b/tests/lib/db/migrator.php @@ -15,7 +15,7 @@ use Doctrine\DBAL\Platforms\SQLServerPlatform; use \Doctrine\DBAL\Schema\Schema; use \Doctrine\DBAL\Schema\SchemaConfig; -class Migrator extends \PHPUnit_Framework_TestCase { +class Migrator extends \Test\TestCase { /** * @var \Doctrine\DBAL\Connection $connection */ @@ -28,7 +28,9 @@ class Migrator extends \PHPUnit_Framework_TestCase { private $tableName; - public function setUp() { + protected function setUp() { + parent::setUp(); + $this->connection = \OC_DB::getConnection(); if ($this->connection->getDatabasePlatform() instanceof OraclePlatform) { $this->markTestSkipped('DB migration tests are not supported on OCI'); @@ -40,8 +42,9 @@ class Migrator extends \PHPUnit_Framework_TestCase { $this->tableName = 'test_' . uniqid(); } - public function tearDown() { + protected function tearDown() { $this->connection->exec('DROP TABLE ' . $this->tableName); + parent::tearDown(); } /** diff --git a/tests/lib/db/mysqlmigration.php b/tests/lib/db/mysqlmigration.php index 584df1d4465..70199147760 100644 --- a/tests/lib/db/mysqlmigration.php +++ b/tests/lib/db/mysqlmigration.php @@ -6,7 +6,7 @@ * See the COPYING-README file. */ -class TestMySqlMigration extends \PHPUnit_Framework_TestCase { +class TestMySqlMigration extends \Test\TestCase { /** @var \Doctrine\DBAL\Connection */ private $connection; @@ -14,7 +14,9 @@ class TestMySqlMigration extends \PHPUnit_Framework_TestCase { /** @var string */ private $tableName; - public function setUp() { + protected function setUp() { + parent::setUp(); + $this->connection = \OC_DB::getConnection(); if (!$this->connection->getDatabasePlatform() instanceof \Doctrine\DBAL\Platforms\MySqlPlatform) { $this->markTestSkipped("Test only relevant on MySql"); @@ -25,8 +27,9 @@ class TestMySqlMigration extends \PHPUnit_Framework_TestCase { $this->connection->exec("CREATE TABLE $this->tableName(b BIT, e ENUM('1','2','3','4'))"); } - public function tearDown() { + protected function tearDown() { $this->connection->getSchemaManager()->dropTable($this->tableName); + parent::tearDown(); } public function testNonOCTables() { diff --git a/tests/lib/db/sqlitemigration.php b/tests/lib/db/sqlitemigration.php index adfc03a2ca7..e3d0e386ab5 100644 --- a/tests/lib/db/sqlitemigration.php +++ b/tests/lib/db/sqlitemigration.php @@ -6,7 +6,7 @@ * See the COPYING-README file. */ -class TestSqliteMigration extends \PHPUnit_Framework_TestCase { +class TestSqliteMigration extends \Test\TestCase { /** @var \Doctrine\DBAL\Connection */ private $connection; @@ -14,7 +14,9 @@ class TestSqliteMigration extends \PHPUnit_Framework_TestCase { /** @var string */ private $tableName; - public function setUp() { + protected function setUp() { + parent::setUp(); + $this->connection = \OC_DB::getConnection(); if (!$this->connection->getDatabasePlatform() instanceof \Doctrine\DBAL\Platforms\SqlitePlatform) { $this->markTestSkipped("Test only relevant on Sqlite"); @@ -25,8 +27,9 @@ class TestSqliteMigration extends \PHPUnit_Framework_TestCase { $this->connection->exec("CREATE TABLE $this->tableName(t0 tinyint unsigned, t1 tinyint)"); } - public function tearDown() { + protected function tearDown() { $this->connection->getSchemaManager()->dropTable($this->tableName); + parent::tearDown(); } public function testNonOCTables() { diff --git a/tests/lib/dbschema.php b/tests/lib/dbschema.php index d31bd34124e..cfaebec079e 100644 --- a/tests/lib/dbschema.php +++ b/tests/lib/dbschema.php @@ -9,13 +9,15 @@ use OCP\Security\ISecureRandom; -class Test_DBSchema extends PHPUnit_Framework_TestCase { +class Test_DBSchema extends \Test\TestCase { protected $schema_file = 'static://test_db_scheme'; protected $schema_file2 = 'static://test_db_scheme2'; protected $table1; protected $table2; - public function setUp() { + protected function setUp() { + parent::setUp(); + $dbfile = OC::$SERVERROOT.'/tests/data/db_structure.xml'; $dbfile2 = OC::$SERVERROOT.'/tests/data/db_structure2.xml'; @@ -32,9 +34,11 @@ class Test_DBSchema extends PHPUnit_Framework_TestCase { $this->table2 = $r.'cntcts_cards'; } - public function tearDown() { + protected function tearDown() { unlink($this->schema_file); unlink($this->schema_file2); + + parent::tearDown(); } // everything in one test, they depend on each other diff --git a/tests/lib/errorHandler.php b/tests/lib/errorHandler.php index 58db80b3c6e..726529e83f4 100644 --- a/tests/lib/errorHandler.php +++ b/tests/lib/errorHandler.php @@ -20,7 +20,7 @@ * */ -class Test_ErrorHandler extends \PHPUnit_Framework_TestCase { +class Test_ErrorHandler extends \Test\TestCase { /** * provide username, password combinations for testRemovePassword diff --git a/tests/lib/files/cache/cache.php b/tests/lib/files/cache/cache.php index 969740419c6..02c45a16571 100644 --- a/tests/lib/files/cache/cache.php +++ b/tests/lib/files/cache/cache.php @@ -16,7 +16,7 @@ class LongId extends \OC\Files\Storage\Temporary { } } -class Cache extends \PHPUnit_Framework_TestCase { +class Cache extends \Test\TestCase { /** * @var \OC\Files\Storage\Temporary $storage ; */ @@ -452,13 +452,17 @@ class Cache extends \PHPUnit_Framework_TestCase { $this->assertEquals(1, count($this->cache->getFolderContents('folder'))); } - public function tearDown() { + protected function tearDown() { if ($this->cache) { $this->cache->clear(); } + + parent::tearDown(); } - public function setUp() { + protected function setUp() { + parent::setUp(); + $this->storage = new \OC\Files\Storage\Temporary(array()); $this->storage2 = new \OC\Files\Storage\Temporary(array()); $this->cache = new \OC\Files\Cache\Cache($this->storage); diff --git a/tests/lib/files/cache/changepropagator.php b/tests/lib/files/cache/changepropagator.php index a52682cd086..89bd9dfe80a 100644 --- a/tests/lib/files/cache/changepropagator.php +++ b/tests/lib/files/cache/changepropagator.php @@ -12,7 +12,7 @@ use OC\Files\Filesystem; use OC\Files\Storage\Temporary; use OC\Files\View; -class ChangePropagator extends \PHPUnit_Framework_TestCase { +class ChangePropagator extends \Test\TestCase { /** * @var \OC\Files\Cache\ChangePropagator */ @@ -23,9 +23,11 @@ class ChangePropagator extends \PHPUnit_Framework_TestCase { */ private $view; - public function setUp() { + protected function setUp() { + parent::setUp(); + $storage = new Temporary(array()); - $root = '/' . uniqid(); + $root = $this->getUniqueID('/'); Filesystem::mount($storage, array(), $root); $this->view = new View($root); $this->propagator = new \OC\Files\Cache\ChangePropagator($this->view); diff --git a/tests/lib/files/cache/homecache.php b/tests/lib/files/cache/homecache.php index 80dc54c9d19..7ebb053bcfa 100644 --- a/tests/lib/files/cache/homecache.php +++ b/tests/lib/files/cache/homecache.php @@ -43,7 +43,7 @@ class DummyUser extends \OC\User\User { } } -class HomeCache extends \PHPUnit_Framework_TestCase { +class HomeCache extends \Test\TestCase { /** * @var \OC\Files\Storage\Home $storage */ @@ -59,7 +59,9 @@ class HomeCache extends \PHPUnit_Framework_TestCase { */ private $user; - public function setUp() { + protected function setUp() { + parent::setUp(); + $this->user = new DummyUser('foo', \OC_Helper::tmpFolder()); $this->storage = new \OC\Files\Storage\Home(array('user' => $this->user)); $this->cache = $this->storage->getCache(); diff --git a/tests/lib/files/cache/scanner.php b/tests/lib/files/cache/scanner.php index 0a274631d1c..b44cf0a49df 100644 --- a/tests/lib/files/cache/scanner.php +++ b/tests/lib/files/cache/scanner.php @@ -8,7 +8,7 @@ namespace Test\Files\Cache; -class Scanner extends \PHPUnit_Framework_TestCase { +class Scanner extends \Test\TestCase { /** * @var \OC\Files\Storage\Storage $storage */ @@ -24,16 +24,20 @@ class Scanner extends \PHPUnit_Framework_TestCase { */ private $cache; - function setUp() { + protected function setUp() { + parent::setUp(); + $this->storage = new \OC\Files\Storage\Temporary(array()); $this->scanner = new \OC\Files\Cache\Scanner($this->storage); $this->cache = new \OC\Files\Cache\Cache($this->storage); } - function tearDown() { + protected function tearDown() { if ($this->cache) { $this->cache->clear(); } + + parent::tearDown(); } function testFile() { diff --git a/tests/lib/files/cache/updater.php b/tests/lib/files/cache/updater.php index 96b4207ad43..01b036de5d8 100644 --- a/tests/lib/files/cache/updater.php +++ b/tests/lib/files/cache/updater.php @@ -12,7 +12,7 @@ use OC\Files\Filesystem; use OC\Files\Storage\Temporary; use OC\Files\View; -class Updater extends \PHPUnit_Framework_TestCase { +class Updater extends \Test\TestCase { /** * @var \OC\Files\Storage\Storage */ @@ -33,7 +33,14 @@ class Updater extends \PHPUnit_Framework_TestCase { */ protected $updater; - public function setUp() { + /** @var \OC\Files\Storage\Storage */ + private $originalStorage; + + protected function setUp() { + parent::setUp(); + + $this->originalStorage = Filesystem::getStorage('/'); + $this->storage = new Temporary(array()); Filesystem::clearMounts(); Filesystem::mount($this->storage, array(), '/'); @@ -42,6 +49,13 @@ class Updater extends \PHPUnit_Framework_TestCase { $this->cache = $this->storage->getCache(); } + protected function tearDown() { + Filesystem::clearMounts(); + Filesystem::mount($this->originalStorage, array(), '/'); + + parent::tearDown(); + } + public function testNewFile() { $this->storage->file_put_contents('foo.txt', 'bar'); $this->assertFalse($this->cache->inCache('foo.txt')); diff --git a/tests/lib/files/cache/updaterlegacy.php b/tests/lib/files/cache/updaterlegacy.php index c80c3168ad6..7c05800cd6b 100644 --- a/tests/lib/files/cache/updaterlegacy.php +++ b/tests/lib/files/cache/updaterlegacy.php @@ -11,7 +11,7 @@ namespace Test\Files\Cache; use \OC\Files\Filesystem as Filesystem; use OC\Files\Storage\Temporary; -class UpdaterLegacy extends \PHPUnit_Framework_TestCase { +class UpdaterLegacy extends \Test\TestCase { /** * @var \OC\Files\Storage\Storage $storage */ @@ -29,9 +29,13 @@ class UpdaterLegacy extends \PHPUnit_Framework_TestCase { */ private $cache; + /** @var \OC\Files\Storage\Storage */ + private $originalStorage; + private static $user; - public function setUp() { + protected function setUp() { + parent::setUp(); // remember files_encryption state $this->stateFilesEncryption = \OC_App::isEnabled('files_encryption'); @@ -51,7 +55,8 @@ class UpdaterLegacy extends \PHPUnit_Framework_TestCase { $this->scanner->scan(''); $this->cache = $this->storage->getCache(); - \OC\Files\Filesystem::tearDown(); + $this->originalStorage = Filesystem::getStorage('/'); + Filesystem::tearDown(); if (!self::$user) { self::$user = uniqid(); } @@ -59,7 +64,7 @@ class UpdaterLegacy extends \PHPUnit_Framework_TestCase { \OC_User::createUser(self::$user, 'password'); \OC_User::setUserId(self::$user); - \OC\Files\Filesystem::init(self::$user, '/' . self::$user . '/files'); + Filesystem::init(self::$user, '/' . self::$user . '/files'); Filesystem::clearMounts(); Filesystem::mount($this->storage, array(), '/' . self::$user . '/files'); @@ -67,17 +72,20 @@ class UpdaterLegacy extends \PHPUnit_Framework_TestCase { \OC_Hook::clear('OC_Filesystem'); } - public function tearDown() { + protected function tearDown() { if ($this->cache) { $this->cache->clear(); } $result = \OC_User::deleteUser(self::$user); $this->assertTrue($result); Filesystem::tearDown(); + Filesystem::mount($this->originalStorage, array(), '/'); // reset app files_encryption if ($this->stateFilesEncryption) { \OC_App::enable('files_encryption'); } + + parent::tearDown(); } public function testWrite() { diff --git a/tests/lib/files/cache/watcher.php b/tests/lib/files/cache/watcher.php index 22c11b9a4e0..ee605c64e01 100644 --- a/tests/lib/files/cache/watcher.php +++ b/tests/lib/files/cache/watcher.php @@ -8,23 +8,34 @@ namespace Test\Files\Cache; -class Watcher extends \PHPUnit_Framework_TestCase { +class Watcher extends \Test\TestCase { /** * @var \OC\Files\Storage\Storage[] $storages */ private $storages = array(); - public function setUp() { + /** @var \OC\Files\Storage\Storage */ + private $originalStorage; + + protected function setUp() { + parent::setUp(); + + $this->originalStorage = \OC\Files\Filesystem::getStorage('/'); \OC\Files\Filesystem::clearMounts(); } - public function tearDown() { + protected function tearDown() { foreach ($this->storages as $storage) { $cache = $storage->getCache(); $ids = $cache->getAll(); $cache->clear(); } + + \OC\Files\Filesystem::clearMounts(); + \OC\Files\Filesystem::mount($this->originalStorage, array(), '/'); + + parent::tearDown(); } /** diff --git a/tests/lib/files/etagtest.php b/tests/lib/files/etagtest.php index b5dec107e79..eec24d9f4c6 100644 --- a/tests/lib/files/etagtest.php +++ b/tests/lib/files/etagtest.php @@ -11,7 +11,7 @@ namespace Test\Files; use OC\Files\Filesystem; use OCP\Share; -class EtagTest extends \PHPUnit_Framework_TestCase { +class EtagTest extends \Test\TestCase { private $datadir; private $tmpDir; @@ -23,7 +23,12 @@ class EtagTest extends \PHPUnit_Framework_TestCase { */ private $userBackend; - public function setUp() { + /** @var \OC\Files\Storage\Storage */ + private $originalStorage; + + protected function setUp() { + parent::setUp(); + \OC_Hook::clear('OC_Filesystem', 'setup'); \OCP\Util::connectHook('OC_Filesystem', 'setup', '\OC\Files\Storage\Shared', 'setup'); \OCP\Share::registerBackend('file', 'OC_Share_Backend_File'); @@ -37,17 +42,21 @@ class EtagTest extends \PHPUnit_Framework_TestCase { $this->userBackend = new \OC_User_Dummy(); \OC_User::useBackend($this->userBackend); + $this->originalStorage = \OC\Files\Filesystem::getStorage('/'); \OC_Util::tearDownFS(); } - public function tearDown() { + protected function tearDown() { \OC_Config::setValue('datadirectory', $this->datadir); \OC_User::setUserId($this->uid); \OC_Util::setupFS($this->uid); + \OC\Files\Filesystem::mount($this->originalStorage, array(), '/'); + + parent::tearDown(); } public function testNewUser() { - $user1 = uniqid('user_'); + $user1 = $this->getUniqueID('user_'); $this->userBackend->createUser($user1, ''); \OC_Util::tearDownFS(); diff --git a/tests/lib/files/filesystem.php b/tests/lib/files/filesystem.php index 930a252bcb2..746600c7d15 100644 --- a/tests/lib/files/filesystem.php +++ b/tests/lib/files/filesystem.php @@ -22,12 +22,15 @@ namespace Test\Files; -class Filesystem extends \PHPUnit_Framework_TestCase { +class Filesystem extends \Test\TestCase { /** * @var array tmpDirs */ private $tmpDirs = array(); + /** @var \OC\Files\Storage\Storage */ + private $originalStorage; + /** * @return array */ @@ -37,17 +40,23 @@ class Filesystem extends \PHPUnit_Framework_TestCase { return array('datadir' => $dir); } - public function tearDown() { + protected function setUp() { + parent::setUp(); + + $this->originalStorage = \OC\Files\Filesystem::getStorage('/'); + \OC_User::setUserId(''); + \OC\Files\Filesystem::clearMounts(); + } + + protected function tearDown() { foreach ($this->tmpDirs as $dir) { \OC_Helper::rmdirr($dir); } \OC\Files\Filesystem::clearMounts(); + \OC\Files\Filesystem::mount($this->originalStorage, array(), '/'); \OC_User::setUserId(''); - } - public function setUp() { - \OC_User::setUserId(''); - \OC\Files\Filesystem::clearMounts(); + parent::tearDown(); } public function testMount() { @@ -68,71 +77,112 @@ class Filesystem extends \PHPUnit_Framework_TestCase { $this->assertEquals('folder', $internalPath); } - public function testNormalize() { - $this->assertEquals('/', \OC\Files\Filesystem::normalizePath('')); - $this->assertEquals('/', \OC\Files\Filesystem::normalizePath('/')); - $this->assertEquals('/', \OC\Files\Filesystem::normalizePath('/', false)); - $this->assertEquals('/', \OC\Files\Filesystem::normalizePath('//')); - $this->assertEquals('/', \OC\Files\Filesystem::normalizePath('//', false)); - $this->assertEquals('/path', \OC\Files\Filesystem::normalizePath('/path/')); - $this->assertEquals('/path/', \OC\Files\Filesystem::normalizePath('/path/', false)); - $this->assertEquals('/path', \OC\Files\Filesystem::normalizePath('path')); - $this->assertEquals('/foo/bar', \OC\Files\Filesystem::normalizePath('/foo//bar/')); - $this->assertEquals('/foo/bar/', \OC\Files\Filesystem::normalizePath('/foo//bar/', false)); - $this->assertEquals('/foo/bar', \OC\Files\Filesystem::normalizePath('/foo////bar')); - $this->assertEquals('/foo/bar', \OC\Files\Filesystem::normalizePath('/foo/////bar')); - $this->assertEquals('/foo/bar', \OC\Files\Filesystem::normalizePath('/foo/bar/.')); - $this->assertEquals('/foo/bar', \OC\Files\Filesystem::normalizePath('/foo/bar/./')); - $this->assertEquals('/foo/bar/', \OC\Files\Filesystem::normalizePath('/foo/bar/./', false)); - $this->assertEquals('/foo/bar', \OC\Files\Filesystem::normalizePath('/foo/bar/./.')); - $this->assertEquals('/foo/bar', \OC\Files\Filesystem::normalizePath('/foo/bar/././')); - $this->assertEquals('/foo/bar/', \OC\Files\Filesystem::normalizePath('/foo/bar/././', false)); - $this->assertEquals('/foo/bar', \OC\Files\Filesystem::normalizePath('/foo/./bar/')); - $this->assertEquals('/foo/bar/', \OC\Files\Filesystem::normalizePath('/foo/./bar/', false)); - $this->assertEquals('/foo/.bar', \OC\Files\Filesystem::normalizePath('/foo/.bar/')); - $this->assertEquals('/foo/.bar/', \OC\Files\Filesystem::normalizePath('/foo/.bar/', false)); - $this->assertEquals('/foo/.bar/tee', \OC\Files\Filesystem::normalizePath('/foo/.bar/tee')); - - // normalize does not resolve '..' (by design) - $this->assertEquals('/foo/..', \OC\Files\Filesystem::normalizePath('/foo/../')); - - if (class_exists('Patchwork\PHP\Shim\Normalizer')) { - $this->assertEquals("/foo/bar\xC3\xBC", \OC\Files\Filesystem::normalizePath("/foo/baru\xCC\x88")); + public function normalizePathData() { + return array( + array('/', ''), + array('/', '/'), + array('/', '//'), + array('/', '/', false), + array('/', '//', false), + + array('/path', '/path/'), + array('/path/', '/path/', false), + array('/path', 'path'), + + array('/foo/bar', '/foo//bar/'), + array('/foo/bar/', '/foo//bar/', false), + array('/foo/bar', '/foo////bar'), + array('/foo/bar', '/foo/////bar'), + array('/foo/bar', '/foo/bar/.'), + array('/foo/bar', '/foo/bar/./'), + array('/foo/bar/', '/foo/bar/./', false), + array('/foo/bar', '/foo/bar/./.'), + array('/foo/bar', '/foo/bar/././'), + array('/foo/bar/', '/foo/bar/././', false), + array('/foo/bar', '/foo/./bar/'), + array('/foo/bar/', '/foo/./bar/', false), + array('/foo/.bar', '/foo/.bar/'), + array('/foo/.bar/', '/foo/.bar/', false), + array('/foo/.bar/tee', '/foo/.bar/tee'), + + // Windows paths + array('/', ''), + array('/', '\\'), + array('/', '\\', false), + array('/', '\\\\'), + array('/', '\\\\', false), + + array('/path', '\\path'), + array('/path', '\\path', false), + array('/path', '\\path\\'), + array('/path/', '\\path\\', false), + + array('/foo/bar', '\\foo\\\\bar\\'), + array('/foo/bar/', '\\foo\\\\bar\\', false), + array('/foo/bar', '\\foo\\\\\\\\bar'), + array('/foo/bar', '\\foo\\\\\\\\\\bar'), + array('/foo/bar', '\\foo\\bar\\.'), + array('/foo/bar', '\\foo\\bar\\.\\'), + array('/foo/bar/', '\\foo\\bar\\.\\', false), + array('/foo/bar', '\\foo\\bar\\.\\.'), + array('/foo/bar', '\\foo\\bar\\.\\.\\'), + array('/foo/bar/', '\\foo\\bar\\.\\.\\', false), + array('/foo/bar', '\\foo\\.\\bar\\'), + array('/foo/bar/', '\\foo\\.\\bar\\', false), + array('/foo/.bar', '\\foo\\.bar\\'), + array('/foo/.bar/', '\\foo\\.bar\\', false), + array('/foo/.bar/tee', '\\foo\\.bar\\tee'), + + // Absolute windows paths NOT marked as absolute + array('/C:', 'C:\\'), + array('/C:/', 'C:\\', false), + array('/C:/tests', 'C:\\tests'), + array('/C:/tests', 'C:\\tests', false), + array('/C:/tests', 'C:\\tests\\'), + array('/C:/tests/', 'C:\\tests\\', false), + + // normalize does not resolve '..' (by design) + array('/foo/..', '/foo/../'), + array('/foo/..', '\\foo\\..\\'), + ); + } + + /** + * @dataProvider normalizePathData + */ + public function testNormalizePath($expected, $path, $stripTrailingSlash = true) { + $this->assertEquals($expected, \OC\Files\Filesystem::normalizePath($path, $stripTrailingSlash)); + } + + public function normalizePathWindowsAbsolutePathData() { + return array( + array('C:/', 'C:\\'), + array('C:/', 'C:\\', false), + array('C:/tests', 'C:\\tests'), + array('C:/tests', 'C:\\tests', false), + array('C:/tests', 'C:\\tests\\'), + array('C:/tests/', 'C:\\tests\\', false), + ); + } + + /** + * @dataProvider normalizePathWindowsAbsolutePathData + */ + public function testNormalizePathWindowsAbsolutePath($expected, $path, $stripTrailingSlash = true) { + if (!\OC_Util::runningOnWindows()) { + $this->markTestSkipped('This test is Windows only'); } + + $this->assertEquals($expected, \OC\Files\Filesystem::normalizePath($path, $stripTrailingSlash, true)); } - public function testNormalizeWindowsPaths() { - $this->assertEquals('/', \OC\Files\Filesystem::normalizePath('')); - $this->assertEquals('/', \OC\Files\Filesystem::normalizePath('\\')); - $this->assertEquals('/', \OC\Files\Filesystem::normalizePath('\\', false)); - $this->assertEquals('/', \OC\Files\Filesystem::normalizePath('\\\\')); - $this->assertEquals('/', \OC\Files\Filesystem::normalizePath('\\\\', false)); - $this->assertEquals('/path', \OC\Files\Filesystem::normalizePath('\\path')); - $this->assertEquals('/path', \OC\Files\Filesystem::normalizePath('\\path', false)); - $this->assertEquals('/path', \OC\Files\Filesystem::normalizePath('\\path\\')); - $this->assertEquals('/path/', \OC\Files\Filesystem::normalizePath('\\path\\', false)); - $this->assertEquals('/foo/bar', \OC\Files\Filesystem::normalizePath('\\foo\\\\bar\\')); - $this->assertEquals('/foo/bar/', \OC\Files\Filesystem::normalizePath('\\foo\\\\bar\\', false)); - $this->assertEquals('/foo/bar', \OC\Files\Filesystem::normalizePath('\\foo\\\\\\\\bar')); - $this->assertEquals('/foo/bar', \OC\Files\Filesystem::normalizePath('\\foo\\\\\\\\\\bar')); - $this->assertEquals('/foo/bar', \OC\Files\Filesystem::normalizePath('\\foo\\bar\\.')); - $this->assertEquals('/foo/bar', \OC\Files\Filesystem::normalizePath('\\foo\\bar\\.\\')); - $this->assertEquals('/foo/bar/', \OC\Files\Filesystem::normalizePath('\\foo\\bar\\.\\', false)); - $this->assertEquals('/foo/bar', \OC\Files\Filesystem::normalizePath('\\foo\\bar\\.\\.')); - $this->assertEquals('/foo/bar', \OC\Files\Filesystem::normalizePath('\\foo\\bar\\.\\.\\')); - $this->assertEquals('/foo/bar/', \OC\Files\Filesystem::normalizePath('\\foo\\bar\\.\\.\\', false)); - $this->assertEquals('/foo/bar', \OC\Files\Filesystem::normalizePath('\\foo\\.\\bar\\')); - $this->assertEquals('/foo/bar/', \OC\Files\Filesystem::normalizePath('\\foo\\.\\bar\\', false)); - $this->assertEquals('/foo/.bar', \OC\Files\Filesystem::normalizePath('\\foo\\.bar\\')); - $this->assertEquals('/foo/.bar/', \OC\Files\Filesystem::normalizePath('\\foo\\.bar\\', false)); - $this->assertEquals('/foo/.bar/tee', \OC\Files\Filesystem::normalizePath('\\foo\\.bar\\tee')); - - // normalize does not resolve '..' (by design) - $this->assertEquals('/foo/..', \OC\Files\Filesystem::normalizePath('\\foo\\..\\')); - - if (class_exists('Patchwork\PHP\Shim\Normalizer')) { - $this->assertEquals("/foo/bar\xC3\xBC", \OC\Files\Filesystem::normalizePath("\\foo\\baru\xCC\x88")); + public function testNormalizePathUTF8() { + if (!class_exists('Patchwork\PHP\Shim\Normalizer')) { + $this->markTestSkipped('UTF8 normalizer Patchwork was not found'); } + + $this->assertEquals("/foo/bar\xC3\xBC", \OC\Files\Filesystem::normalizePath("/foo/baru\xCC\x88")); + $this->assertEquals("/foo/bar\xC3\xBC", \OC\Files\Filesystem::normalizePath("\\foo\\baru\xCC\x88")); } public function testHooks() { diff --git a/tests/lib/files/mapper.php b/tests/lib/files/mapper.php index d513f3ce4b3..18161734b60 100644 --- a/tests/lib/files/mapper.php +++ b/tests/lib/files/mapper.php @@ -22,14 +22,15 @@ namespace Test\Files; -class Mapper extends \PHPUnit_Framework_TestCase { +class Mapper extends \Test\TestCase { /** * @var \OC\Files\Mapper */ private $mapper = null; - public function setUp() { + protected function setUp() { + parent::setUp(); $this->mapper = new \OC\Files\Mapper('D:/'); } diff --git a/tests/lib/files/mount/manager.php b/tests/lib/files/mount/manager.php index 154c35ccead..051b76ccf2e 100644 --- a/tests/lib/files/mount/manager.php +++ b/tests/lib/files/mount/manager.php @@ -16,13 +16,14 @@ class LongId extends Temporary { } } -class Manager extends \PHPUnit_Framework_TestCase { +class Manager extends \Test\TestCase { /** * @var \OC\Files\Mount\Manager */ private $manager; - public function setup() { + protected function setup() { + parent::setUp(); $this->manager = new \OC\Files\Mount\Manager(); } diff --git a/tests/lib/files/mount/mount.php b/tests/lib/files/mount/mount.php index c3d33e0870b..5ee3d934e97 100644 --- a/tests/lib/files/mount/mount.php +++ b/tests/lib/files/mount/mount.php @@ -12,7 +12,7 @@ namespace Test\Files\Mount; use OC\Files\Storage\Loader; use OC\Files\Storage\Wrapper\Wrapper; -class Mount extends \PHPUnit_Framework_TestCase { +class Mount extends \Test\TestCase { public function testFromStorageObject() { $storage = $this->getMockBuilder('\OC\Files\Storage\Temporary') ->disableOriginalConstructor() diff --git a/tests/lib/files/node/file.php b/tests/lib/files/node/file.php index 76938a0dcc8..1ae312ab5a8 100644 --- a/tests/lib/files/node/file.php +++ b/tests/lib/files/node/file.php @@ -12,10 +12,11 @@ use OCP\Files\NotFoundException; use OCP\Files\NotPermittedException; use OC\Files\View; -class File extends \PHPUnit_Framework_TestCase { +class File extends \Test\TestCase { private $user; - public function setUp() { + protected function setUp() { + parent::setUp(); $this->user = new \OC\User\User('', new \OC_User_Dummy); } @@ -38,7 +39,7 @@ class File extends \PHPUnit_Framework_TestCase { $view->expects($this->once()) ->method('getFileInfo') ->with('/bar/foo') - ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_ALL))); + ->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_ALL))); $view->expects($this->once()) ->method('unlink') @@ -88,7 +89,7 @@ class File extends \PHPUnit_Framework_TestCase { $view->expects($this->any()) ->method('getFileInfo') ->with('/bar/foo') - ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_ALL, 'fileid' => 1))); + ->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_ALL, 'fileid' => 1))); $view->expects($this->once()) ->method('unlink') @@ -123,7 +124,7 @@ class File extends \PHPUnit_Framework_TestCase { $view->expects($this->once()) ->method('getFileInfo') ->with('/bar/foo') - ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_READ))); + ->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_READ))); $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); $node->delete(); @@ -155,7 +156,7 @@ class File extends \PHPUnit_Framework_TestCase { $view->expects($this->once()) ->method('getFileInfo') ->with('/bar/foo') - ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_READ))); + ->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_READ))); $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); $this->assertEquals('bar', $node->getContent()); @@ -200,7 +201,7 @@ class File extends \PHPUnit_Framework_TestCase { $view->expects($this->once()) ->method('getFileInfo') ->with('/bar/foo') - ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_ALL))); + ->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_ALL))); $view->expects($this->once()) ->method('file_put_contents') @@ -225,7 +226,7 @@ class File extends \PHPUnit_Framework_TestCase { $view->expects($this->once()) ->method('getFileInfo') ->with('/bar/foo') - ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_READ))); + ->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_READ))); $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); $node->putContent('bar'); @@ -278,7 +279,7 @@ class File extends \PHPUnit_Framework_TestCase { $view->expects($this->once()) ->method('getFileInfo') ->with('/bar/foo') - ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_ALL))); + ->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_ALL))); $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); $fh = $node->fopen('r'); @@ -315,7 +316,7 @@ class File extends \PHPUnit_Framework_TestCase { $view->expects($this->once()) ->method('getFileInfo') ->with('/bar/foo') - ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_ALL))); + ->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_ALL))); $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); $fh = $node->fopen('w'); @@ -374,7 +375,7 @@ class File extends \PHPUnit_Framework_TestCase { $view->expects($this->once()) ->method('getFileInfo') ->with('/bar/foo') - ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_UPDATE))); + ->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_UPDATE))); $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); $node->fopen('w'); @@ -401,7 +402,7 @@ class File extends \PHPUnit_Framework_TestCase { $view->expects($this->once()) ->method('getFileInfo') ->with('/bar/foo') - ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_READ))); + ->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_READ))); $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); $node->fopen('w'); @@ -424,7 +425,7 @@ class File extends \PHPUnit_Framework_TestCase { $view->expects($this->any()) ->method('getFileInfo') - ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_ALL, 'fileid' => 3))); + ->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_ALL, 'fileid' => 3))); $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); $parentNode = new \OC\Files\Node\Folder($root, $view, '/bar'); @@ -468,7 +469,7 @@ class File extends \PHPUnit_Framework_TestCase { $view->expects($this->any()) ->method('getFileInfo') - ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_READ, 'fileid' => 3))); + ->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_READ, 'fileid' => 3))); $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); $parentNode = new \OC\Files\Node\Folder($root, $view, '/bar'); @@ -555,7 +556,7 @@ class File extends \PHPUnit_Framework_TestCase { $view->expects($this->any()) ->method('getFileInfo') - ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_ALL, 'fileid' => 1))); + ->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_ALL, 'fileid' => 1))); $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); $parentNode = new \OC\Files\Node\Folder($root, $view, '/bar'); @@ -586,7 +587,7 @@ class File extends \PHPUnit_Framework_TestCase { $view->expects($this->any()) ->method('getFileInfo') - ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_READ))); + ->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_READ))); $view->expects($this->never()) ->method('rename'); diff --git a/tests/lib/files/node/folder.php b/tests/lib/files/node/folder.php index 436161aba72..91aa3b82db2 100644 --- a/tests/lib/files/node/folder.php +++ b/tests/lib/files/node/folder.php @@ -15,10 +15,11 @@ use OCP\Files\NotFoundException; use OCP\Files\NotPermittedException; use OC\Files\View; -class Folder extends \PHPUnit_Framework_TestCase { +class Folder extends \Test\TestCase { private $user; - public function setUp() { + protected function setUp() { + parent::setUp(); $this->user = new \OC\User\User('', new \OC_User_Dummy); } @@ -38,7 +39,7 @@ class Folder extends \PHPUnit_Framework_TestCase { $view->expects($this->any()) ->method('getFileInfo') - ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_ALL))); + ->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_ALL))); $view->expects($this->once()) ->method('rmdir') @@ -86,7 +87,7 @@ class Folder extends \PHPUnit_Framework_TestCase { $view->expects($this->any()) ->method('getFileInfo') - ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_ALL, 'fileid' => 1))); + ->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_ALL, 'fileid' => 1))); $view->expects($this->once()) ->method('rmdir') @@ -120,7 +121,7 @@ class Folder extends \PHPUnit_Framework_TestCase { $view->expects($this->once()) ->method('getFileInfo') ->with('/bar/foo') - ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_READ))); + ->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_READ))); $node = new \OC\Files\Node\Folder($root, $view, '/bar/foo'); $node->delete(); @@ -254,7 +255,7 @@ class Folder extends \PHPUnit_Framework_TestCase { $view->expects($this->once()) ->method('getFileInfo') ->with('/bar/foo') - ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_ALL))); + ->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_ALL))); $view->expects($this->once()) ->method('mkdir') @@ -284,7 +285,7 @@ class Folder extends \PHPUnit_Framework_TestCase { $view->expects($this->once()) ->method('getFileInfo') ->with('/bar/foo') - ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_READ))); + ->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_READ))); $node = new \OC\Files\Node\Folder($root, $view, '/bar/foo'); $node->newFolder('asd'); @@ -304,7 +305,7 @@ class Folder extends \PHPUnit_Framework_TestCase { $view->expects($this->once()) ->method('getFileInfo') ->with('/bar/foo') - ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_ALL))); + ->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_ALL))); $view->expects($this->once()) ->method('touch') @@ -334,7 +335,7 @@ class Folder extends \PHPUnit_Framework_TestCase { $view->expects($this->once()) ->method('getFileInfo') ->with('/bar/foo') - ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_READ))); + ->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_READ))); $node = new \OC\Files\Node\Folder($root, $view, '/bar/foo'); $node->newFile('asd'); diff --git a/tests/lib/files/node/integration.php b/tests/lib/files/node/integration.php index 319f2f9f5f7..fd777460ec6 100644 --- a/tests/lib/files/node/integration.php +++ b/tests/lib/files/node/integration.php @@ -14,12 +14,15 @@ use OC\Files\Storage\Temporary; use OC\Files\View; use OC\User\User; -class IntegrationTests extends \PHPUnit_Framework_TestCase { +class IntegrationTests extends \Test\TestCase { /** * @var \OC\Files\Node\Root $root */ private $root; + /** @var \OC\Files\Storage\Storage */ + private $originalStorage; + /** * @var \OC\Files\Storage\Storage[] */ @@ -30,7 +33,10 @@ class IntegrationTests extends \PHPUnit_Framework_TestCase { */ private $view; - public function setUp() { + protected function setUp() { + parent::setUp(); + + $this->originalStorage = \OC\Files\Filesystem::getStorage('/'); \OC\Files\Filesystem::init('', ''); \OC\Files\Filesystem::clearMounts(); $manager = \OC\Files\Filesystem::getMountManager(); @@ -54,11 +60,14 @@ class IntegrationTests extends \PHPUnit_Framework_TestCase { $this->root->mount($subStorage, '/substorage/'); } - public function tearDown() { + protected function tearDown() { foreach ($this->storages as $storage) { $storage->getCache()->clear(); } \OC\Files\Filesystem::clearMounts(); + \OC\Files\Filesystem::mount($this->originalStorage, array(), '/'); + + parent::tearDown(); } public function testBasicFile() { diff --git a/tests/lib/files/node/node.php b/tests/lib/files/node/node.php index cf5fec30522..8820be5b0b2 100644 --- a/tests/lib/files/node/node.php +++ b/tests/lib/files/node/node.php @@ -8,10 +8,11 @@ namespace Test\Files\Node; -class Node extends \PHPUnit_Framework_TestCase { +class Node extends \Test\TestCase { private $user; - public function setUp() { + protected function setUp() { + parent::setUp(); $this->user = new \OC\User\User('', new \OC_User_Dummy); } @@ -245,7 +246,7 @@ class Node extends \PHPUnit_Framework_TestCase { $view->expects($this->once()) ->method('getFileInfo') ->with('/bar/foo') - ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_ALL))); + ->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_ALL))); $node = new \OC\Files\Node\Node($root, $view, '/bar/foo'); $node->touch(100); @@ -298,7 +299,7 @@ class Node extends \PHPUnit_Framework_TestCase { $view->expects($this->any()) ->method('getFileInfo') ->with('/bar/foo') - ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_ALL))); + ->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_ALL))); $node = new \OC\Files\Node\Node($root, $view, '/bar/foo'); $node->touch(100); @@ -322,7 +323,7 @@ class Node extends \PHPUnit_Framework_TestCase { $view->expects($this->any()) ->method('getFileInfo') ->with('/bar/foo') - ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_READ))); + ->will($this->returnValue(array('permissions' => \OCP\Constants::PERMISSION_READ))); $node = new \OC\Files\Node\Node($root, $view, '/bar/foo'); $node->touch(100); diff --git a/tests/lib/files/node/root.php b/tests/lib/files/node/root.php index 27f1a937826..fcce7070f5d 100644 --- a/tests/lib/files/node/root.php +++ b/tests/lib/files/node/root.php @@ -11,10 +11,11 @@ namespace Test\Files\Node; use OCP\Files\NotPermittedException; use OC\Files\Mount\Manager; -class Root extends \PHPUnit_Framework_TestCase { +class Root extends \Test\TestCase { private $user; - public function setUp() { + protected function setUp() { + parent::setUp(); $this->user = new \OC\User\User('', new \OC_User_Dummy); } diff --git a/tests/lib/files/objectstore/swift.php b/tests/lib/files/objectstore/swift.php index 37d6cc74de6..f2c4a983cf2 100644 --- a/tests/lib/files/objectstore/swift.php +++ b/tests/lib/files/objectstore/swift.php @@ -30,7 +30,9 @@ class Swift extends \Test\Files\Storage\Storage { private $objectStorage; - public function setUp() { + protected function setUp() { + parent::setUp(); + if (!getenv('RUN_OBJECTSTORE_TESTS')) { $this->markTestSkipped('objectstore tests are unreliable on travis'); } @@ -74,12 +76,14 @@ class Swift extends \Test\Files\Storage\Storage { $this->instance = new ObjectStoreStorage($params); } - public function tearDown() { + protected function tearDown() { if (is_null($this->instance)) { return; } $this->objectStorage->deleteContainer(true); $this->instance->getCache()->clear(); + + parent::tearDown(); } public function testStat() { diff --git a/tests/lib/files/storage/commontest.php b/tests/lib/files/storage/commontest.php index ce53c884f32..2b70dc8713e 100644 --- a/tests/lib/files/storage/commontest.php +++ b/tests/lib/files/storage/commontest.php @@ -27,12 +27,15 @@ class CommonTest extends Storage { * @var string tmpDir */ private $tmpDir; - public function setUp() { + protected function setUp() { + parent::setUp(); + $this->tmpDir=\OC_Helper::tmpFolder(); $this->instance=new \OC\Files\Storage\CommonTest(array('datadir'=>$this->tmpDir)); } - public function tearDown() { + protected function tearDown() { \OC_Helper::rmdirr($this->tmpDir); + parent::tearDown(); } } diff --git a/tests/lib/files/storage/home.php b/tests/lib/files/storage/home.php index 953fcfc8a6a..b0670a22892 100644 --- a/tests/lib/files/storage/home.php +++ b/tests/lib/files/storage/home.php @@ -60,22 +60,30 @@ class Home extends Storage { */ private $user; - public function setUp() { + protected function setUp() { + parent::setUp(); + $this->tmpDir = \OC_Helper::tmpFolder(); - $this->userId = uniqid('user_'); + $this->userId = $this->getUniqueID('user_'); $this->user = new DummyUser($this->userId, $this->tmpDir); $this->instance = new \OC\Files\Storage\Home(array('user' => $this->user)); } - public function tearDown() { + protected function tearDown() { \OC_Helper::rmdirr($this->tmpDir); + parent::tearDown(); } /** * Tests that the root path matches the data dir */ public function testRoot() { - $this->assertEquals($this->tmpDir, $this->instance->getLocalFolder('')); + if (\OC_Util::runningOnWindows()) { + // Windows removes trailing slashes when returning paths + $this->assertEquals(rtrim($this->tmpDir, '/'), $this->instance->getLocalFolder('')); + } else { + $this->assertEquals($this->tmpDir, $this->instance->getLocalFolder('')); + } } /** diff --git a/tests/lib/files/storage/local.php b/tests/lib/files/storage/local.php index 37462941d0c..d2b27117c3b 100644 --- a/tests/lib/files/storage/local.php +++ b/tests/lib/files/storage/local.php @@ -28,18 +28,21 @@ class Local extends Storage { */ private $tmpDir; - public function setUp() { + protected function setUp() { + parent::setUp(); + $this->tmpDir = \OC_Helper::tmpFolder(); $this->instance = new \OC\Files\Storage\Local(array('datadir' => $this->tmpDir)); } - public function tearDown() { + protected function tearDown() { \OC_Helper::rmdirr($this->tmpDir); + parent::tearDown(); } public function testStableEtag() { if (\OC_Util::runningOnWindows()) { - $this->markTestSkipped('On Windows platform we have no stable etag generation - yet'); + $this->markTestSkipped('[Windows] On Windows platform we have no stable etag generation - yet'); } $this->instance->file_put_contents('test.txt', 'foobar'); @@ -50,7 +53,7 @@ class Local extends Storage { public function testEtagChange() { if (\OC_Util::runningOnWindows()) { - $this->markTestSkipped('On Windows platform we have no stable etag generation - yet'); + $this->markTestSkipped('[Windows] On Windows platform we have no stable etag generation - yet'); } $this->instance->file_put_contents('test.txt', 'foo'); diff --git a/tests/lib/files/storage/mappedlocal.php b/tests/lib/files/storage/mappedlocal.php index b483f3a1954..1e87b53d00a 100644 --- a/tests/lib/files/storage/mappedlocal.php +++ b/tests/lib/files/storage/mappedlocal.php @@ -27,14 +27,17 @@ class MappedLocal extends Storage { * @var string tmpDir */ private $tmpDir; - public function setUp() { + protected function setUp() { + parent::setUp(); + $this->tmpDir=\OC_Helper::tmpFolder(); $this->instance=new \OC\Files\Storage\MappedLocal(array('datadir'=>$this->tmpDir)); } - public function tearDown() { + protected function tearDown() { \OC_Helper::rmdirr($this->tmpDir); unset($this->instance); + parent::tearDown(); } } diff --git a/tests/lib/files/storage/mappedlocalwithdotteddatadir.php b/tests/lib/files/storage/mappedlocalwithdotteddatadir.php index d2e5e2e97af..3a733b7b469 100644 --- a/tests/lib/files/storage/mappedlocalwithdotteddatadir.php +++ b/tests/lib/files/storage/mappedlocalwithdotteddatadir.php @@ -28,15 +28,18 @@ class MappedLocalWithDottedDataDir extends Storage { */ private $tmpDir; - public function setUp() { + protected function setUp() { + parent::setUp(); + $this->tmpDir = \OC_Helper::tmpFolder().'dir.123'.DIRECTORY_SEPARATOR; mkdir($this->tmpDir); $this->instance=new \OC\Files\Storage\MappedLocal(array('datadir'=>$this->tmpDir)); } - public function tearDown() { + protected function tearDown() { \OC_Helper::rmdirr($this->tmpDir); unset($this->instance); + parent::tearDown(); } } diff --git a/tests/lib/files/storage/storage.php b/tests/lib/files/storage/storage.php index cf42523a5e2..30f403d60df 100644 --- a/tests/lib/files/storage/storage.php +++ b/tests/lib/files/storage/storage.php @@ -22,7 +22,7 @@ namespace Test\Files\Storage; -abstract class Storage extends \PHPUnit_Framework_TestCase { +abstract class Storage extends \Test\TestCase { /** * @var \OC\Files\Storage\Storage instance */ @@ -340,10 +340,10 @@ abstract class Storage extends \PHPUnit_Framework_TestCase { } public function testTouchCreateFile() { - $this->assertFalse($this->instance->file_exists('foo')); + $this->assertFalse($this->instance->file_exists('touch')); // returns true on success - $this->assertTrue($this->instance->touch('foo')); - $this->assertTrue($this->instance->file_exists('foo')); + $this->assertTrue($this->instance->touch('touch')); + $this->assertTrue($this->instance->file_exists('touch')); } public function testRecursiveRmdir() { diff --git a/tests/lib/files/storage/wrapper/quota.php b/tests/lib/files/storage/wrapper/quota.php index 954fe199cc8..9e6b1c85a95 100644 --- a/tests/lib/files/storage/wrapper/quota.php +++ b/tests/lib/files/storage/wrapper/quota.php @@ -17,14 +17,17 @@ class Quota extends \Test\Files\Storage\Storage { */ private $tmpDir; - public function setUp() { + protected function setUp() { + parent::setUp(); + $this->tmpDir = \OC_Helper::tmpFolder(); $storage = new \OC\Files\Storage\Local(array('datadir' => $this->tmpDir)); $this->instance = new \OC\Files\Storage\Wrapper\Quota(array('storage' => $storage, 'quota' => 10000000)); } - public function tearDown() { + protected function tearDown() { \OC_Helper::rmdirr($this->tmpDir); + parent::tearDown(); } /** diff --git a/tests/lib/files/storage/wrapper/wrapper.php b/tests/lib/files/storage/wrapper/wrapper.php index 8bcf42035d4..486cd0495c1 100644 --- a/tests/lib/files/storage/wrapper/wrapper.php +++ b/tests/lib/files/storage/wrapper/wrapper.php @@ -14,14 +14,17 @@ class Wrapper extends \Test\Files\Storage\Storage { */ private $tmpDir; - public function setUp() { + protected function setUp() { + parent::setUp(); + $this->tmpDir = \OC_Helper::tmpFolder(); $storage = new \OC\Files\Storage\Local(array('datadir' => $this->tmpDir)); $this->instance = new \OC\Files\Storage\Wrapper\Wrapper(array('storage' => $storage)); } - public function tearDown() { + protected function tearDown() { \OC_Helper::rmdirr($this->tmpDir); + parent::tearDown(); } public function testInstanceOfStorageWrapper() { diff --git a/tests/lib/files/stream/quota.php b/tests/lib/files/stream/quota.php index d5edace544d..28584cf82db 100644 --- a/tests/lib/files/stream/quota.php +++ b/tests/lib/files/stream/quota.php @@ -8,9 +8,10 @@ namespace Test\Files\Stream; -class Quota extends \PHPUnit_Framework_TestCase { - public function tearDown() { +class Quota extends \Test\TestCase { + protected function tearDown() { \OC\Files\Stream\Quota::clear(); + parent::tearDown(); } /** diff --git a/tests/lib/files/stream/staticstream.php b/tests/lib/files/stream/staticstream.php index d55086196a0..416a4670efd 100644 --- a/tests/lib/files/stream/staticstream.php +++ b/tests/lib/files/stream/staticstream.php @@ -8,18 +8,20 @@ namespace Test\Files\Stream; -class StaticStream extends \PHPUnit_Framework_TestCase { +class StaticStream extends \Test\TestCase { private $sourceFile; private $sourceText; - public function __construct() { + protected function setUp() { + parent::setUp(); $this->sourceFile = \OC::$SERVERROOT . '/tests/data/lorem.txt'; $this->sourceText = file_get_contents($this->sourceFile); } - public function tearDown() { + protected function tearDown() { \OC\Files\Stream\StaticStream::clear(); + parent::tearDown(); } public function testContent() { diff --git a/tests/lib/files/utils/scanner.php b/tests/lib/files/utils/scanner.php index 27b9b8dd4f4..f729be81bd7 100644 --- a/tests/lib/files/utils/scanner.php +++ b/tests/lib/files/utils/scanner.php @@ -38,7 +38,22 @@ class TestScanner extends \OC\Files\Utils\Scanner { } } -class Scanner extends \PHPUnit_Framework_TestCase { +class Scanner extends \Test\TestCase { + /** @var \OC\Files\Storage\Storage */ + private $originalStorage; + + protected function setUp() { + parent::setUp(); + + $this->originalStorage = \OC\Files\Filesystem::getStorage('/'); + } + + protected function tearDown() { + \OC\Files\Filesystem::mount($this->originalStorage, array(), '/'); + + parent::tearDown(); + } + public function testReuseExistingRoot() { $storage = new Temporary(array()); $mount = new Mount($storage, ''); diff --git a/tests/lib/files/view.php b/tests/lib/files/view.php index 5f030f29fa7..d6dd176bba9 100644 --- a/tests/lib/files/view.php +++ b/tests/lib/files/view.php @@ -8,6 +8,7 @@ namespace Test\Files; use OC\Files\Cache\Watcher; +use OC\Files\Storage\Temporary; class TemporaryNoTouch extends \OC\Files\Storage\Temporary { public function touch($path, $mtime = null) { @@ -15,16 +16,22 @@ class TemporaryNoTouch extends \OC\Files\Storage\Temporary { } } -class View extends \PHPUnit_Framework_TestCase { +class View extends \Test\TestCase { /** * @var \OC\Files\Storage\Storage[] $storages */ private $storages = array(); private $user; + /** @var \OC\Files\Storage\Storage */ private $tempStorage; - public function setUp() { + /** @var \OC\Files\Storage\Storage */ + private $originalStorage; + + protected function setUp() { + parent::setUp(); + \OC_User::clearBackends(); \OC_User::useBackend(new \OC_User_Dummy()); @@ -33,12 +40,13 @@ class View extends \PHPUnit_Framework_TestCase { $this->user = \OC_User::getUser(); \OC_User::setUserId('test'); + $this->originalStorage = \OC\Files\Filesystem::getStorage('/'); \OC\Files\Filesystem::clearMounts(); $this->tempStorage = null; } - public function tearDown() { + protected function tearDown() { \OC_User::setUserId($this->user); foreach ($this->storages as $storage) { $cache = $storage->getCache(); @@ -49,6 +57,11 @@ class View extends \PHPUnit_Framework_TestCase { if ($this->tempStorage && !\OC_Util::runningOnWindows()) { system('rm -rf ' . escapeshellarg($this->tempStorage->getDataDir())); } + + \OC\Files\Filesystem::clearMounts(); + \OC\Files\Filesystem::mount($this->originalStorage, array(), '/'); + + parent::tearDown(); } /** @@ -598,7 +611,7 @@ class View extends \PHPUnit_Framework_TestCase { $folderName = 'abcdefghijklmnopqrstuvwxyz012345678901234567890123456789'; $tmpdirLength = strlen(\OC_Helper::tmpFolder()); if (\OC_Util::runningOnWindows()) { - $this->markTestSkipped(); + $this->markTestSkipped('[Windows] '); $depth = ((260 - $tmpdirLength) / 57); }elseif(\OC_Util::runningOnMac()){ $depth = ((1024 - $tmpdirLength) / 57); @@ -652,6 +665,36 @@ class View extends \PHPUnit_Framework_TestCase { $this->assertSame($info['etag'], $info2['etag']); } + public function testWatcherEtagCrossStorage() { + $storage1 = new Temporary(array()); + $storage2 = new Temporary(array()); + $scanner1 = $storage1->getScanner(); + $scanner2 = $storage2->getScanner(); + $storage1->mkdir('sub'); + \OC\Files\Filesystem::mount($storage1, array(), '/test/'); + \OC\Files\Filesystem::mount($storage2, array(), '/test/sub/storage'); + + $past = time() - 100; + $storage2->file_put_contents('test.txt', 'foobar'); + $scanner1->scan(''); + $scanner2->scan(''); + $view = new \OC\Files\View(''); + + $storage2->getWatcher('')->setPolicy(Watcher::CHECK_ALWAYS); + + $oldFileInfo = $view->getFileInfo('/test/sub/storage/test.txt'); + $oldFolderInfo = $view->getFileInfo('/test'); + + $storage2->getCache()->update($oldFileInfo->getId(), array( + 'storage_mtime' => $past + )); + + $view->getFileInfo('/test/sub/storage/test.txt'); + $newFolderInfo = $view->getFileInfo('/test'); + + $this->assertNotEquals($newFolderInfo->getEtag(), $oldFolderInfo->getEtag()); + } + /** * @dataProvider absolutePathProvider */ diff --git a/tests/lib/geo.php b/tests/lib/geo.php index 1c56a976129..0678297b55a 100644 --- a/tests/lib/geo.php +++ b/tests/lib/geo.php @@ -6,7 +6,7 @@ * See the COPYING-README file. */ -class Test_Geo extends PHPUnit_Framework_TestCase { +class Test_Geo extends \Test\TestCase { /** * @medium diff --git a/tests/lib/group.php b/tests/lib/group.php index 724e723b187..795de695513 100644 --- a/tests/lib/group.php +++ b/tests/lib/group.php @@ -22,38 +22,39 @@ * */ -class Test_Group extends PHPUnit_Framework_TestCase { - function setUp() { +class Test_Group extends \Test\TestCase { + protected function setUp() { + parent::setUp(); OC_Group::clearBackends(); OC_User::clearBackends(); } - function testSingleBackend() { + public function testSingleBackend() { $userBackend = new \OC_User_Dummy(); \OC_User::getManager()->registerBackend($userBackend); OC_Group::useBackend(new OC_Group_Dummy()); - $group1 = uniqid(); - $group2 = uniqid(); + $group1 = $this->getUniqueID(); + $group2 = $this->getUniqueID(); OC_Group::createGroup($group1); OC_Group::createGroup($group2); - $user1 = uniqid(); - $user2 = uniqid(); + $user1 = $this->getUniqueID(); + $user2 = $this->getUniqueID(); $userBackend->createUser($user1, ''); $userBackend->createUser($user2, ''); - $this->assertFalse(OC_Group::inGroup($user1, $group1)); - $this->assertFalse(OC_Group::inGroup($user2, $group1)); - $this->assertFalse(OC_Group::inGroup($user1, $group2)); - $this->assertFalse(OC_Group::inGroup($user2, $group2)); + $this->assertFalse(OC_Group::inGroup($user1, $group1), 'Asserting that user1 is not in group1'); + $this->assertFalse(OC_Group::inGroup($user2, $group1), 'Asserting that user2 is not in group1'); + $this->assertFalse(OC_Group::inGroup($user1, $group2), 'Asserting that user1 is not in group2'); + $this->assertFalse(OC_Group::inGroup($user2, $group2), 'Asserting that user2 is not in group2'); $this->assertTrue(OC_Group::addToGroup($user1, $group1)); - $this->assertTrue(OC_Group::inGroup($user1, $group1)); - $this->assertFalse(OC_Group::inGroup($user2, $group1)); - $this->assertFalse(OC_Group::inGroup($user1, $group2)); - $this->assertFalse(OC_Group::inGroup($user2, $group2)); + $this->assertTrue(OC_Group::inGroup($user1, $group1), 'Asserting that user1 is in group1'); + $this->assertFalse(OC_Group::inGroup($user2, $group1), 'Asserting that user2 is not in group1'); + $this->assertFalse(OC_Group::inGroup($user1, $group2), 'Asserting that user1 is not in group2'); + $this->assertFalse(OC_Group::inGroup($user2, $group2), 'Asserting that user2 is not in group2'); $this->assertTrue(OC_Group::addToGroup($user1, $group1)); @@ -80,7 +81,7 @@ class Test_Group extends PHPUnit_Framework_TestCase { public function testNoGroupsTwice() { OC_Group::useBackend(new OC_Group_Dummy()); - $group = uniqid(); + $group = $this->getUniqueID(); OC_Group::createGroup($group); $groupCopy = $group; @@ -103,7 +104,7 @@ class Test_Group extends PHPUnit_Framework_TestCase { public function testDontAddUserToNonexistentGroup() { OC_Group::useBackend(new OC_Group_Dummy()); $groupNonExistent = 'notExistent'; - $user = uniqid(); + $user = $this->getUniqueID(); $this->assertEquals(false, OC_Group::addToGroup($user, $groupNonExistent)); $this->assertEquals(array(), OC_Group::getGroups()); @@ -114,12 +115,12 @@ class Test_Group extends PHPUnit_Framework_TestCase { $userBackend = new \OC_User_Dummy(); \OC_User::getManager()->registerBackend($userBackend); - $group1 = uniqid(); - $group2 = uniqid(); - $group3 = uniqid(); - $user1 = uniqid(); - $user2 = uniqid(); - $user3 = uniqid(); + $group1 = $this->getUniqueID(); + $group2 = $this->getUniqueID(); + $group3 = $this->getUniqueID(); + $user1 = $this->getUniqueID(); + $user2 = $this->getUniqueID(); + $user3 = $this->getUniqueID(); OC_Group::createGroup($group1); OC_Group::createGroup($group2); OC_Group::createGroup($group3); @@ -139,8 +140,7 @@ class Test_Group extends PHPUnit_Framework_TestCase { // FIXME: needs more parameter variation } - - function testMultiBackend() { + public function testMultiBackend() { $userBackend = new \OC_User_Dummy(); \OC_User::getManager()->registerBackend($userBackend); $backend1 = new OC_Group_Dummy(); @@ -148,8 +148,8 @@ class Test_Group extends PHPUnit_Framework_TestCase { OC_Group::useBackend($backend1); OC_Group::useBackend($backend2); - $group1 = uniqid(); - $group2 = uniqid(); + $group1 = $this->getUniqueID(); + $group2 = $this->getUniqueID(); OC_Group::createGroup($group1); //groups should be added to the first registered backend @@ -166,8 +166,8 @@ class Test_Group extends PHPUnit_Framework_TestCase { $this->assertTrue(OC_Group::groupExists($group1)); $this->assertTrue(OC_Group::groupExists($group2)); - $user1 = uniqid(); - $user2 = uniqid(); + $user1 = $this->getUniqueID(); + $user2 = $this->getUniqueID(); $userBackend->createUser($user1, ''); $userBackend->createUser($user2, ''); diff --git a/tests/lib/group/backend.php b/tests/lib/group/backend.php index 95a5cf5f49c..62c189489d7 100644 --- a/tests/lib/group/backend.php +++ b/tests/lib/group/backend.php @@ -20,7 +20,7 @@ * */ -abstract class Test_Group_Backend extends PHPUnit_Framework_TestCase { +abstract class Test_Group_Backend extends \Test\TestCase { /** * @var OC_Group_Backend $backend */ @@ -33,7 +33,7 @@ abstract class Test_Group_Backend extends PHPUnit_Framework_TestCase { */ public function getGroupName($name = null) { if(is_null($name)) { - return uniqid('test_'); + return $this->getUniqueID('test_'); } else { return $name; } @@ -45,7 +45,7 @@ abstract class Test_Group_Backend extends PHPUnit_Framework_TestCase { * @return string */ public function getUserName() { - return uniqid('test_'); + return $this->getUniqueID('test_'); } public function testAddRemove() { @@ -138,6 +138,4 @@ abstract class Test_Group_Backend extends PHPUnit_Framework_TestCase { $result = $this->backend->countUsersInGroup($group, 'bar'); $this->assertSame(2, $result); } - - } diff --git a/tests/lib/group/database.php b/tests/lib/group/database.php index 9b39ac00452..10958a6ccdc 100644 --- a/tests/lib/group/database.php +++ b/tests/lib/group/database.php @@ -22,36 +22,27 @@ class Test_Group_Database extends Test_Group_Backend { private $groups=array(); - + /** * get a new unique group name * test cases can override this in order to clean up created groups * @return string */ public function getGroupName($name = null) { - if(is_null($name)) { - $name=uniqid('test_'); - } - $this->groups[]=$name; + $name = parent::getGroupName($name); + $this->groups[] = $name; return $name; } - /** - * get a new unique user name - * test cases can override this in order to clean up created user - * @return string - */ - public function getUserName() { - return uniqid('test_'); - } - - public function setUp() { + protected function setUp() { + parent::setUp(); $this->backend=new OC_Group_Database(); } - public function tearDown() { + protected function tearDown() { foreach($this->groups as $group) { $this->backend->deleteGroup($group); } + parent::tearDown(); } } diff --git a/tests/lib/group/dummy.php b/tests/lib/group/dummy.php index 287d6f1a977..b4456c8f7e1 100644 --- a/tests/lib/group/dummy.php +++ b/tests/lib/group/dummy.php @@ -21,7 +21,8 @@ */ class Test_Group_Dummy extends Test_Group_Backend { - public function setUp() { + protected function setUp() { + parent::setUp(); $this->backend=new OC_Group_Dummy(); } } diff --git a/tests/lib/group/group.php b/tests/lib/group/group.php index 4d15999a826..d758e5959d0 100644 --- a/tests/lib/group/group.php +++ b/tests/lib/group/group.php @@ -11,7 +11,7 @@ namespace Test\Group; use OC\User\User; -class Group extends \PHPUnit_Framework_TestCase { +class Group extends \Test\TestCase { /** * @return \OC\User\Manager | \OC\User\Manager */ diff --git a/tests/lib/group/manager.php b/tests/lib/group/manager.php index 8fd19513c0a..f72ea8e912f 100644 --- a/tests/lib/group/manager.php +++ b/tests/lib/group/manager.php @@ -11,7 +11,7 @@ namespace Test\Group; use OC\User\User; -class Manager extends \PHPUnit_Framework_TestCase { +class Manager extends \Test\TestCase { public function testGet() { /** * @var \PHPUnit_Framework_MockObject_MockObject | \OC_Group_Backend $backend diff --git a/tests/lib/group/metadata.php b/tests/lib/group/metadata.php index 7ef2d6b35ff..94944189cad 100644 --- a/tests/lib/group/metadata.php +++ b/tests/lib/group/metadata.php @@ -9,7 +9,7 @@ namespace Test\Group; -class Test_MetaData extends \PHPUnit_Framework_TestCase { +class Test_MetaData extends \Test\TestCase { private function getGroupManagerMock() { return $this->getMockBuilder('\OC\Group\Manager') ->disableOriginalConstructor() diff --git a/tests/lib/helper.php b/tests/lib/helper.php index 520a3e0e669..53a3e1a0ec8 100644 --- a/tests/lib/helper.php +++ b/tests/lib/helper.php @@ -6,7 +6,7 @@ * See the COPYING-README file. */ -class Test_Helper extends PHPUnit_Framework_TestCase { +class Test_Helper extends \Test\TestCase { /** * @dataProvider humanFileSizeProvider @@ -115,6 +115,10 @@ class Test_Helper extends PHPUnit_Framework_TestCase { } function testGetStringMimeType() { + if (\OC_Util::runningOnWindows()) { + $this->markTestSkipped('[Windows] Strings have mimetype application/octet-stream on Windows'); + } + $result = OC_Helper::getStringMimeType("/data/data.tar.gz"); $expected = 'text/plain; charset=us-ascii'; $this->assertEquals($result, $expected); diff --git a/tests/lib/helperstorage.php b/tests/lib/helperstorage.php index 4fdd9dd6b9b..9f3bd8824f7 100644 --- a/tests/lib/helperstorage.php +++ b/tests/lib/helperstorage.php @@ -9,14 +9,22 @@ /** * Test the storage functions of OC_Helper */ -class Test_Helper_Storage extends PHPUnit_Framework_TestCase { + +class Test_Helper_Storage extends \Test\TestCase { + /** @var string */ private $user; + /** @var \OC\Files\Storage\Storage */ private $storageMock; + /** @var \OC\Files\Storage\Storage */ + private $storage; + + protected function setUp() { + parent::setUp(); - public function setUp() { - $this->user = 'user_' . uniqid(); + $this->user = $this->getUniqueID('user_'); \OC_User::createUser($this->user, $this->user); + $this->storage = \OC\Files\Filesystem::getStorage('/'); \OC\Files\Filesystem::tearDown(); \OC_User::setUserId($this->user); \OC\Files\Filesystem::init($this->user, '/' . $this->user . '/files'); @@ -25,7 +33,7 @@ class Test_Helper_Storage extends PHPUnit_Framework_TestCase { $this->storageMock = null; } - public function tearDown() { + protected function tearDown() { $this->user = null; if ($this->storageMock) { @@ -33,10 +41,13 @@ class Test_Helper_Storage extends PHPUnit_Framework_TestCase { $this->storageMock = null; } \OC\Files\Filesystem::tearDown(); + \OC\Files\Filesystem::mount($this->storage, array(), '/'); \OC_User::setUserId(''); \OC_User::deleteUser($this->user); \OC_Preferences::deleteUser($this->user); + + parent::tearDown(); } /** diff --git a/tests/lib/hooks/basicemitter.php b/tests/lib/hooks/basicemitter.php index 0eae730d030..899d3ecd3b3 100644 --- a/tests/lib/hooks/basicemitter.php +++ b/tests/lib/hooks/basicemitter.php @@ -31,13 +31,14 @@ class DummyEmitter extends \OC\Hooks\BasicEmitter { class EmittedException extends \Exception { } -class BasicEmitter extends \PHPUnit_Framework_TestCase { +class BasicEmitter extends \Test\TestCase { /** * @var \OC\Hooks\Emitter $emitter */ protected $emitter; - public function setUp() { + protected function setUp() { + parent::setUp(); $this->emitter = new DummyEmitter(); } diff --git a/tests/lib/hooks/legacyemitter.php b/tests/lib/hooks/legacyemitter.php index a7bed879a72..f030afbc090 100644 --- a/tests/lib/hooks/legacyemitter.php +++ b/tests/lib/hooks/legacyemitter.php @@ -26,7 +26,9 @@ class LegacyEmitter extends BasicEmitter { //we can't use exceptions here since OC_Hooks catches all exceptions private static $emitted = false; - public function setUp() { + protected function setUp() { + parent::setUp(); + $this->emitter = new DummyLegacyEmitter(); self::$emitted = false; \OC_Hook::clear('Test','test'); diff --git a/tests/lib/httphelper.php b/tests/lib/httphelper.php index 191200aee3d..eb58508f158 100644 --- a/tests/lib/httphelper.php +++ b/tests/lib/httphelper.php @@ -6,14 +6,16 @@ * See the COPYING-README file. */ -class TestHTTPHelper extends \PHPUnit_Framework_TestCase { +class TestHTTPHelper extends \Test\TestCase { /** @var \OC\AllConfig*/ private $config; /** @var \OC\HTTPHelper */ private $httpHelperMock; - function setUp() { + protected function setUp() { + parent::setUp(); + $this->config = $this->getMockBuilder('\OC\AllConfig') ->disableOriginalConstructor()->getMock(); $this->httpHelperMock = $this->getMockBuilder('\OC\HTTPHelper') @@ -22,7 +24,7 @@ class TestHTTPHelper extends \PHPUnit_Framework_TestCase { ->getMock(); } - public function testIsHTTPProvider() { + public function isHttpTestData() { return array( array('http://wwww.owncloud.org/enterprise/', true), array('https://wwww.owncloud.org/enterprise/', true), @@ -79,7 +81,7 @@ class TestHTTPHelper extends \PHPUnit_Framework_TestCase { } /** - * @dataProvider testIsHTTPProvider + * @dataProvider isHttpTestData */ public function testIsHTTP($url, $expected) { $this->assertSame($expected, $this->httpHelperMock->isHTTPURL($url)); diff --git a/tests/lib/image.php b/tests/lib/image.php index 795bc464159..e0009b9710e 100644 --- a/tests/lib/image.php +++ b/tests/lib/image.php @@ -6,10 +6,12 @@ * See the COPYING-README file. */ -class Test_Image extends PHPUnit_Framework_TestCase { +class Test_Image extends \Test\TestCase { public static function tearDownAfterClass() { @unlink(OC::$SERVERROOT.'/tests/data/testimage2.png'); @unlink(OC::$SERVERROOT.'/tests/data/testimage2.jpg'); + + parent::tearDownAfterClass(); } public function testGetMimeTypeForFile() { @@ -62,14 +64,18 @@ class Test_Image extends PHPUnit_Framework_TestCase { $img = new \OC_Image(OC::$SERVERROOT.'/tests/data/testimage.png'); $this->assertEquals('image/png', $img->mimeType()); + $img = new \OC_Image(null); + $this->assertEquals('', $img->mimeType()); + + if (\OC_Util::runningOnWindows()) { + $this->markTestSkipped('[Windows] Images created with imagecreate() are pngs on windows'); + } + $img = new \OC_Image(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.jpg')); $this->assertEquals('image/jpeg', $img->mimeType()); $img = new \OC_Image(base64_encode(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.gif'))); $this->assertEquals('image/gif', $img->mimeType()); - - $img = new \OC_Image(null); - $this->assertEquals('', $img->mimeType()); } public function testWidth() { diff --git a/tests/lib/installer.php b/tests/lib/installer.php index 5e267245200..b58a71b5a08 100644 --- a/tests/lib/installer.php +++ b/tests/lib/installer.php @@ -6,20 +6,24 @@ * See the COPYING-README file. */ -class Test_Installer extends PHPUnit_Framework_TestCase { +class Test_Installer extends \Test\TestCase { private static $appid = 'testapp'; private $appstore; - public function setUp() { + protected function setUp() { + parent::setUp(); + $this->appstore = OC_Config::getValue('appstoreenabled', true); OC_Config::setValue('appstoreenabled', true); OC_Installer::removeApp(self::$appid); } - public function tearDown() { + protected function tearDown() { OC_Installer::removeApp(self::$appid); OC_Config::setValue('appstoreenabled', $this->appstore); + + parent::tearDown(); } public function testInstallApp() { diff --git a/tests/lib/l10n.php b/tests/lib/l10n.php index df86fcfda81..68f43b76f51 100644 --- a/tests/lib/l10n.php +++ b/tests/lib/l10n.php @@ -6,7 +6,7 @@ * See the COPYING-README file. */ -class Test_L10n extends PHPUnit_Framework_TestCase { +class Test_L10n extends \Test\TestCase { public function testGermanPluralTranslations() { $l = new OC_L10N('test'); diff --git a/tests/lib/largefilehelper.php b/tests/lib/largefilehelper.php index 5db1f9c5a74..1267a8c5833 100644 --- a/tests/lib/largefilehelper.php +++ b/tests/lib/largefilehelper.php @@ -8,10 +8,10 @@ namespace Test; -class LargeFileHelper extends \PHPUnit_Framework_TestCase { +class LargeFileHelper extends TestCase { protected $helper; - public function setUp() { + protected function setUp() { parent::setUp(); $this->helper = new \OC\LargeFileHelper; } diff --git a/tests/lib/largefilehelpergetfilesize.php b/tests/lib/largefilehelpergetfilesize.php index 58571d641e0..c97b7b32b0f 100644 --- a/tests/lib/largefilehelpergetfilesize.php +++ b/tests/lib/largefilehelpergetfilesize.php @@ -12,59 +12,78 @@ namespace Test; * Tests whether LargeFileHelper is able to determine file size at all. * Large files are not considered yet. */ -class LargeFileHelperGetFileSize extends \PHPUnit_Framework_TestCase { - protected $filename; - protected $fileSize; +class LargeFileHelperGetFileSize extends TestCase { + /** @var \OC\LargeFileHelper */ protected $helper; - public function setUp() { + protected function setUp() { parent::setUp(); - $ds = DIRECTORY_SEPARATOR; - $this->filename = dirname(__DIR__) . "{$ds}data{$ds}strängé filename (duplicate #2).txt"; - $this->fileSize = 446; - $this->helper = new \OC\LargeFileHelper; + $this->helper = new \OC\LargeFileHelper(); } - public function testGetFileSizeViaCurl() { + public function dataFileNameProvider() { + $path = dirname(__DIR__) . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR; + + $filePaths = array(array($path . 'lorem.txt', 446)); + if (!\OC_Util::runningOnWindows()) { + $filePaths[] = array($path . 'strängé filename (duplicate #2).txt', 446); + } + + return $filePaths; + } + + /** + * @dataProvider dataFileNameProvider + */ + public function testGetFileSizeViaCurl($filename, $fileSize) { if (!extension_loaded('curl')) { $this->markTestSkipped( 'The PHP curl extension is required for this test.' ); } $this->assertSame( - $this->fileSize, - $this->helper->getFileSizeViaCurl($this->filename) + $fileSize, + $this->helper->getFileSizeViaCurl($filename) ); } - public function testGetFileSizeViaCOM() { + /** + * @dataProvider dataFileNameProvider + */ + public function testGetFileSizeViaCOM($filename, $fileSize) { if (!extension_loaded('COM')) { $this->markTestSkipped( 'The PHP Windows COM extension is required for this test.' ); } $this->assertSame( - $this->fileSize, - $this->helper->getFileSizeViaCOM($this->filename) + $fileSize, + $this->helper->getFileSizeViaCOM($filename) ); } - public function testGetFileSizeViaExec() { + /** + * @dataProvider dataFileNameProvider + */ + public function testGetFileSizeViaExec($filename, $fileSize) { if (!\OC_Helper::is_function_enabled('exec')) { $this->markTestSkipped( 'The exec() function needs to be enabled for this test.' ); } $this->assertSame( - $this->fileSize, - $this->helper->getFileSizeViaExec($this->filename) + $fileSize, + $this->helper->getFileSizeViaExec($filename) ); } - public function testGetFileSizeNative() { + /** + * @dataProvider dataFileNameProvider + */ + public function testGetFileSizeNative($filename, $fileSize) { $this->assertSame( - $this->fileSize, - $this->helper->getFileSizeNative($this->filename) + $fileSize, + $this->helper->getFileSizeNative($filename) ); } } diff --git a/tests/lib/logger.php b/tests/lib/logger.php index fcdf5b58670..700a847917b 100644 --- a/tests/lib/logger.php +++ b/tests/lib/logger.php @@ -10,14 +10,16 @@ namespace Test; use OC\Log; -class Logger extends \PHPUnit_Framework_TestCase { +class Logger extends TestCase { /** * @var \OCP\ILogger */ private $logger; static private $logs = array(); - public function setUp() { + protected function setUp() { + parent::setUp(); + self::$logs = array(); $this->logger = new Log('Test\Logger'); } diff --git a/tests/lib/mail.php b/tests/lib/mail.php index 3cc9868e25e..568ecff52b0 100644 --- a/tests/lib/mail.php +++ b/tests/lib/mail.php @@ -6,10 +6,12 @@ * See the COPYING-README file. */ -class Test_Mail extends PHPUnit_Framework_TestCase { +class Test_Mail extends \Test\TestCase { protected function setUp() { + parent::setUp(); + if (!function_exists('idn_to_ascii')) { $this->markTestSkipped( 'The intl extension is not available.' diff --git a/tests/lib/memcache/apc.php b/tests/lib/memcache/apc.php index e5d753a4fa5..550d5068dc1 100644 --- a/tests/lib/memcache/apc.php +++ b/tests/lib/memcache/apc.php @@ -10,7 +10,9 @@ namespace Test\Memcache; class APC extends Cache { - public function setUp() { + protected function setUp() { + parent::setUp(); + if(!\OC\Memcache\APC::isAvailable()) { $this->markTestSkipped('The apc extension is not available.'); return; diff --git a/tests/lib/memcache/apcu.php b/tests/lib/memcache/apcu.php index 7b99e7cd5e0..1b849e1c54d 100644 --- a/tests/lib/memcache/apcu.php +++ b/tests/lib/memcache/apcu.php @@ -10,7 +10,9 @@ namespace Test\Memcache; class APCu extends Cache { - public function setUp() { + protected function setUp() { + parent::setUp(); + if(!\OC\Memcache\APCu::isAvailable()) { $this->markTestSkipped('The APCu extension is not available.'); return; diff --git a/tests/lib/memcache/cache.php b/tests/lib/memcache/cache.php index d07c492cef0..8a4a708e4b7 100644 --- a/tests/lib/memcache/cache.php +++ b/tests/lib/memcache/cache.php @@ -50,9 +50,11 @@ abstract class Cache extends \Test_Cache { $this->assertFalse($this->instance->hasKey('foo')); } - public function tearDown() { + protected function tearDown() { if ($this->instance) { $this->instance->clear(); } + + parent::tearDown(); } } diff --git a/tests/lib/memcache/memcached.php b/tests/lib/memcache/memcached.php index fdab32693ff..a94b809a7b5 100644 --- a/tests/lib/memcache/memcached.php +++ b/tests/lib/memcache/memcached.php @@ -11,6 +11,8 @@ namespace Test\Memcache; class Memcached extends Cache { static public function setUpBeforeClass() { + parent::setUpBeforeClass(); + if (!\OC\Memcache\Memcached::isAvailable()) { self::markTestSkipped('The memcached extension is not available.'); } @@ -20,7 +22,8 @@ class Memcached extends Cache { } } - public function setUp() { + protected function setUp() { + parent::setUp(); $this->instance = new \OC\Memcache\Memcached(uniqid()); } } diff --git a/tests/lib/memcache/xcache.php b/tests/lib/memcache/xcache.php index f59afda3966..b97d5545c6e 100644 --- a/tests/lib/memcache/xcache.php +++ b/tests/lib/memcache/xcache.php @@ -10,7 +10,9 @@ namespace Test\Memcache; class XCache extends Cache { - public function setUp() { + protected function setUp() { + parent::setUp(); + if (!\OC\Memcache\XCache::isAvailable()) { $this->markTestSkipped('The xcache extension is not available.'); return; diff --git a/tests/lib/migrate.php b/tests/lib/migrate.php deleted file mode 100644 index c4442511e1f..00000000000 --- a/tests/lib/migrate.php +++ /dev/null @@ -1,90 +0,0 @@ -<?php -/** - * Copyright (c) 2014 Tom Needham <tom@owncloud.com> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - -class Test_Migrate extends PHPUnit_Framework_TestCase { - - public $users; - public $tmpfiles = array(); - - /** - * Generates a test user and sets up their file system - * @return string the test users id - */ - public function generateUser() { - $username = uniqid(); - \OC_User::createUser($username, 'password'); - \OC_Util::tearDownFS(); - \OC_User::setUserId(''); - \OC\Files\Filesystem::tearDown(); - \OC_Util::setupFS($username); - $this->users[] = $username; - return $username; - } - - /** - * validates an export for a user - * checks for existence of export_info.json and file folder - * @param string $exportedUser the user that was exported - * @param string $path the path to the .zip export - * @param string $exportedBy - */ - public function validateUserExport($exportedBy, $exportedUser, $path) { - $this->assertTrue(file_exists($path)); - // Extract - $extract = get_temp_dir() . '/oc_import_' . uniqid(); - //mkdir($extract); - $this->tmpfiles[] = $extract; - $zip = new ZipArchive; - $zip->open($path); - $zip->extractTo($extract); - $zip->close(); - $this->assertTrue(file_exists($extract.'/export_info.json')); - $exportInfo = file_get_contents($extract.'/export_info.json'); - $exportInfo = json_decode($exportInfo); - $this->assertNotNull($exportInfo); - $this->assertEquals($exportedUser, $exportInfo->exporteduser); - $this->assertEquals($exportedBy, $exportInfo->exportedby); - $this->assertTrue(file_exists($extract.'/'.$exportedUser.'/files')); - } - - public function testUserSelfExport() { - // Create a user - $user = $this->generateUser(); - \OC_User::setUserId($user); - $export = \OC_Migrate::export($user); - // Check it succeeded and exists - $this->assertTrue(json_decode($export)->success); - // Validate the export - $this->validateUserExport($user, $user, json_decode($export)->data); - } - - public function testUserOtherExport() { - $user = $this->generateUser(); - $user2 = $this->generateUser(); - \OC_User::setUserId($user2); - $export = \OC_Migrate::export($user); - // Check it succeeded and exists - $this->assertTrue(json_decode($export)->success); - // Validate the export - $this->validateUserExport($user2, $user, json_decode($export)->data); - } - - public function tearDown() { - $u = new OC_User(); - foreach($this->users as $user) { - $u->deleteUser($user); - } - foreach($this->tmpfiles as $file) { - \OC_Helper::rmdirr($file); - } - } - - - - -} diff --git a/tests/lib/naturalsort.php b/tests/lib/naturalsort.php index 09a0e6a5f9d..e022a855309 100644 --- a/tests/lib/naturalsort.php +++ b/tests/lib/naturalsort.php @@ -6,9 +6,11 @@ * See the COPYING-README file. */ -class Test_NaturalSort extends PHPUnit_Framework_TestCase { +class Test_NaturalSort extends \Test\TestCase { public function setUp() { + parent::setUp(); + if(!class_exists('Collator')) { $this->markTestSkipped('The intl module is not available, natural sorting will not work as expected.'); return; diff --git a/tests/lib/ocs/privatedata.php b/tests/lib/ocs/privatedata.php index 534fc21b07a..20f1dd38362 100644 --- a/tests/lib/ocs/privatedata.php +++ b/tests/lib/ocs/privatedata.php @@ -20,19 +20,15 @@ * */ -class Test_OC_OCS_Privatedata extends PHPUnit_Framework_TestCase -{ - +class Test_OC_OCS_Privatedata extends \Test\TestCase { private $appKey; - public function setUp() { + protected function setUp() { + parent::setUp(); \OC::$server->getSession()->set('user_id', 'user1'); $this->appKey = uniqid('app'); } - public function tearDown() { - } - public function testGetEmptyOne() { $params = array('app' => $this->appKey, 'key' => '123'); $result = OC_OCS_Privatedata::get($params); diff --git a/tests/lib/preferences-singleton.php b/tests/lib/preferences-singleton.php index 7abf5a6be36..01e15acdfe1 100644 --- a/tests/lib/preferences-singleton.php +++ b/tests/lib/preferences-singleton.php @@ -7,8 +7,10 @@ * See the COPYING-README file. */ -class Test_Preferences extends PHPUnit_Framework_TestCase { +class Test_Preferences extends \Test\TestCase { public static function setUpBeforeClass() { + parent::setUpBeforeClass(); + $query = \OC_DB::prepare('INSERT INTO `*PREFIX*preferences` VALUES(?, ?, ?, ?)'); $query->execute(array("Someuser", "someapp", "somekey", "somevalue")); @@ -34,6 +36,8 @@ class Test_Preferences extends PHPUnit_Framework_TestCase { $query->execute(array('Someuser')); $query->execute(array('Anotheruser')); $query->execute(array('Anuser')); + + parent::tearDownAfterClass(); } public function testGetUsers() { diff --git a/tests/lib/preferences.php b/tests/lib/preferences.php index fe8e3e8b48c..193b1f80280 100644 --- a/tests/lib/preferences.php +++ b/tests/lib/preferences.php @@ -7,7 +7,7 @@ * See the COPYING-README file. */ -class Test_Preferences_Object extends PHPUnit_Framework_TestCase { +class Test_Preferences_Object extends \Test\TestCase { public function testGetUsers() { $statementMock = $this->getMock('\Doctrine\DBAL\Statement', array(), array(), '', false); diff --git a/tests/lib/preview.php b/tests/lib/preview.php index 2febe524cba..2a6761403f4 100644 --- a/tests/lib/preview.php +++ b/tests/lib/preview.php @@ -8,7 +8,7 @@ namespace Test; -class Preview extends \PHPUnit_Framework_TestCase { +class Preview extends TestCase { /** * @var string @@ -20,14 +20,34 @@ class Preview extends \PHPUnit_Framework_TestCase { */ private $rootView; - public function setUp() { - $this->user = $this->initFS(); + /** @var \OC\Files\Storage\Storage */ + private $originalStorage; + + protected function setUp() { + parent::setUp(); + + $this->originalStorage = \OC\Files\Filesystem::getStorage('/'); + + // create a new user with his own filesystem view + // this gets called by each test in this test class + $this->user = $this->getUniqueID(); + \OC_User::setUserId($this->user); + \OC\Files\Filesystem::init($this->user, '/' . $this->user . '/files'); + + \OC\Files\Filesystem::mount('OC\Files\Storage\Temporary', array(), '/'); $this->rootView = new \OC\Files\View(''); $this->rootView->mkdir('/'.$this->user); $this->rootView->mkdir('/'.$this->user.'/files'); } + protected function tearDown() { + \OC\Files\Filesystem::clearMounts(); + \OC\Files\Filesystem::mount($this->originalStorage, array(), '/'); + + parent::tearDown(); + } + public function testIsPreviewDeleted() { $sampleFile = '/'.$this->user.'/files/test.txt'; @@ -184,16 +204,4 @@ class Preview extends \PHPUnit_Framework_TestCase { $this->assertEquals($this->user . '/' . \OC\Preview::THUMBNAILS_FOLDER . '/' . $fileId . '/150-150.png', $isCached); } */ - - private function initFS() { - // create a new user with his own filesystem view - // this gets called by each test in this test class - $user=uniqid(); - \OC_User::setUserId($user); - \OC\Files\Filesystem::init($user, '/'.$user.'/files'); - - \OC\Files\Filesystem::mount('OC\Files\Storage\Temporary', array(), '/'); - - return $user; - } } diff --git a/tests/lib/public/contacts.php b/tests/lib/public/contacts.php index d6008876a00..151e98d3905 100644 --- a/tests/lib/public/contacts.php +++ b/tests/lib/public/contacts.php @@ -19,17 +19,12 @@ * License along with this library. If not, see <http://www.gnu.org/licenses/>. */ -class Test_Contacts extends PHPUnit_Framework_TestCase -{ - - public function setUp() { - +class Test_Contacts extends \Test\TestCase { + protected function setUp() { + parent::setUp(); OCP\Contacts::clear(); } - public function tearDown() { - } - public function testDisabledIfEmpty() { // pretty simple $this->assertFalse(OCP\Contacts::isEnabled()); diff --git a/tests/lib/public/ocpconfig.php b/tests/lib/public/ocpconfig.php index 43a9ca625ee..947d2b3c9ef 100644 --- a/tests/lib/public/ocpconfig.php +++ b/tests/lib/public/ocpconfig.php @@ -19,12 +19,11 @@ * License along with this library. If not, see <http://www.gnu.org/licenses/>. */ -class Test_OCPConfig extends PHPUnit_Framework_TestCase -{ +class Test_OCPConfig extends \Test\TestCase { public function testSetAppValueIfSetToNull() { - $key = uniqid("key-"); + $key = $this->getUniqueID('key-'); $result = \OCP\Config::setAppValue('unit-test', $key, null); $this->assertTrue($result); diff --git a/tests/lib/repair.php b/tests/lib/repair.php index 121f41dedd9..248db382140 100644 --- a/tests/lib/repair.php +++ b/tests/lib/repair.php @@ -29,7 +29,7 @@ class TestRepairStep extends BasicEmitter implements \OC\RepairStep{ } } -class Test_Repair extends PHPUnit_Framework_TestCase { +class Test_Repair extends \Test\TestCase { public function testRunRepairStep() { $output = array(); diff --git a/tests/lib/repair/repaircollation.php b/tests/lib/repair/repaircollation.php index 362feb8463f..e711fcd9d83 100644 --- a/tests/lib/repair/repaircollation.php +++ b/tests/lib/repair/repaircollation.php @@ -21,7 +21,7 @@ class TestCollationRepair extends \OC\Repair\Collation { * * @see \OC\Repair\RepairMimeTypes */ -class TestRepairCollation extends PHPUnit_Framework_TestCase { +class TestRepairCollation extends \Test\TestCase { /** * @var TestCollationRepair @@ -43,7 +43,9 @@ class TestRepairCollation extends PHPUnit_Framework_TestCase { */ private $config; - public function setUp() { + protected function setUp() { + parent::setUp(); + $this->connection = \OC_DB::getConnection(); $this->config = \OC::$server->getConfig(); if (!$this->connection->getDatabasePlatform() instanceof \Doctrine\DBAL\Platforms\MySqlPlatform) { @@ -57,8 +59,9 @@ class TestRepairCollation extends PHPUnit_Framework_TestCase { $this->repair = new TestCollationRepair($this->config, $this->connection); } - public function tearDown() { + protected function tearDown() { $this->connection->getSchemaManager()->dropTable($this->tableName); + parent::tearDown(); } public function testCollationConvert() { diff --git a/tests/lib/repair/repairinnodb.php b/tests/lib/repair/repairinnodb.php index e7d2442f127..21d7d978821 100644 --- a/tests/lib/repair/repairinnodb.php +++ b/tests/lib/repair/repairinnodb.php @@ -11,7 +11,7 @@ * * @see \OC\Repair\RepairMimeTypes */ -class TestRepairInnoDB extends PHPUnit_Framework_TestCase { +class TestRepairInnoDB extends \Test\TestCase { /** @var \OC\RepairStep */ private $repair; @@ -22,7 +22,9 @@ class TestRepairInnoDB extends PHPUnit_Framework_TestCase { /** @var string */ private $tableName; - public function setUp() { + protected function setUp() { + parent::setUp(); + $this->connection = \OC_DB::getConnection(); if (!$this->connection->getDatabasePlatform() instanceof \Doctrine\DBAL\Platforms\MySqlPlatform) { $this->markTestSkipped("Test only relevant on MySql"); @@ -35,8 +37,9 @@ class TestRepairInnoDB extends PHPUnit_Framework_TestCase { $this->repair = new \OC\Repair\InnoDB(); } - public function tearDown() { + protected function tearDown() { $this->connection->getSchemaManager()->dropTable($this->tableName); + parent::tearDown(); } public function testInnoDBConvert() { diff --git a/tests/lib/repair/repairlegacystorage.php b/tests/lib/repair/repairlegacystorage.php index 4528c5288df..ac845657cd9 100644 --- a/tests/lib/repair/repairlegacystorage.php +++ b/tests/lib/repair/repairlegacystorage.php @@ -11,7 +11,7 @@ * * @see \OC\Repair\RepairLegacyStorages */ -class TestRepairLegacyStorages extends PHPUnit_Framework_TestCase { +class TestRepairLegacyStorages extends \Test\TestCase { private $user; private $repair; @@ -22,7 +22,9 @@ class TestRepairLegacyStorages extends PHPUnit_Framework_TestCase { private $legacyStorageId; private $newStorageId; - public function setUp() { + protected function setUp() { + parent::setUp(); + $this->config = \OC::$server->getConfig(); $this->connection = \OC_DB::getConnection(); $this->oldDataDir = $this->config->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data/'); @@ -30,7 +32,7 @@ class TestRepairLegacyStorages extends PHPUnit_Framework_TestCase { $this->repair = new \OC\Repair\RepairLegacyStorages($this->config, $this->connection); } - public function tearDown() { + protected function tearDown() { \OC_User::deleteUser($this->user); $sql = 'DELETE FROM `*PREFIX*storages`'; @@ -39,6 +41,8 @@ class TestRepairLegacyStorages extends PHPUnit_Framework_TestCase { $this->connection->executeQuery($sql); \OCP\Config::setSystemValue('datadirectory', $this->oldDataDir); $this->config->setAppValue('core', 'repairlegacystoragesdone', 'no'); + + parent::tearDown(); } function prepareSettings($dataDir, $userId) { diff --git a/tests/lib/repair/repairmimetypes.php b/tests/lib/repair/repairmimetypes.php index 7754864a69e..6eaf68d8a44 100644 --- a/tests/lib/repair/repairmimetypes.php +++ b/tests/lib/repair/repairmimetypes.php @@ -11,26 +11,29 @@ * * @see \OC\Repair\RepairMimeTypes */ -class TestRepairMimeTypes extends PHPUnit_Framework_TestCase { +class TestRepairMimeTypes extends \Test\TestCase { /** @var \OC\RepairStep */ private $repair; private $storage; - public function setUp() { + protected function setUp() { + parent::setUp(); $this->storage = new \OC\Files\Storage\Temporary(array()); $this->repair = new \OC\Repair\RepairMimeTypes(); } - public function tearDown() { + protected function tearDown() { $this->storage->getCache()->clear(); $sql = 'DELETE FROM `*PREFIX*storages` WHERE `id` = ?'; \OC_DB::executeAudited($sql, array($this->storage->getId())); $this->clearMimeTypes(); DummyFileCache::clearCachedMimeTypes(); + + parent::tearDown(); } private function clearMimeTypes() { diff --git a/tests/lib/request.php b/tests/lib/request.php index b89bf92ece7..254048723e7 100644 --- a/tests/lib/request.php +++ b/tests/lib/request.php @@ -6,19 +6,23 @@ * See the COPYING-README file. */ -class Test_Request extends PHPUnit_Framework_TestCase { +class Test_Request extends \Test\TestCase { + + protected function setUp() { + parent::setUp(); - public function setUp() { OC::$server->getConfig()->setSystemValue('overwritewebroot', '/domain.tld/ownCloud'); OC::$server->getConfig()->setSystemValue('trusted_proxies', array()); OC::$server->getConfig()->setSystemValue('forwarded_for_headers', array()); } - public function tearDown() { + protected function tearDown() { OC::$server->getConfig()->setSystemValue('overwritewebroot', ''); OC::$server->getConfig()->setSystemValue('trusted_proxies', array()); OC::$server->getConfig()->setSystemValue('forwarded_for_headers', array()); + + parent::tearDown(); } public function testScriptNameOverWrite() { @@ -240,7 +244,7 @@ class Test_Request extends PHPUnit_Framework_TestCase { } public function trustedDomainDataProvider() { - $trustedHostTestList = array('host.one.test:8080', 'host.two.test:8080'); + $trustedHostTestList = array('host.one.test', 'host.two.test', '[1fff:0:a88:85a3::ac1f]'); return array( // empty defaults to true array(null, 'host.one.test:8080', true), @@ -249,8 +253,12 @@ class Test_Request extends PHPUnit_Framework_TestCase { // trust list when defined array($trustedHostTestList, 'host.two.test:8080', true), - array($trustedHostTestList, 'host.two.test:9999', false), + array($trustedHostTestList, 'host.two.test:9999', true), array($trustedHostTestList, 'host.three.test:8080', false), + array($trustedHostTestList, 'host.two.test:8080:aa:222', false), + array($trustedHostTestList, '[1fff:0:a88:85a3::ac1f]', true), + array($trustedHostTestList, '[1fff:0:a88:85a3::ac1f]:801', true), + array($trustedHostTestList, '[1fff:0:a88:85a3::ac1f]:801:34', false), // trust localhost regardless of trust list array($trustedHostTestList, 'localhost', true), diff --git a/tests/lib/security/certificate.php b/tests/lib/security/certificate.php index 898f583a43c..361f2f8c38d 100644 --- a/tests/lib/security/certificate.php +++ b/tests/lib/security/certificate.php @@ -8,7 +8,7 @@ use \OC\Security\Certificate; -class CertificateTest extends \PHPUnit_Framework_TestCase { +class CertificateTest extends \Test\TestCase { /** @var Certificate That contains a valid certificate */ protected $goodCertificate; @@ -17,7 +17,9 @@ class CertificateTest extends \PHPUnit_Framework_TestCase { /** @var Certificate That contains an expired certificate */ protected $expiredCertificate; - function setUp() { + protected function setUp() { + parent::setUp(); + $goodCertificate = file_get_contents(__DIR__ . '/../../data/certificates/goodCertificate.crt'); $this->goodCertificate = new Certificate($goodCertificate, 'GoodCertificate'); $badCertificate = file_get_contents(__DIR__ . '/../../data/certificates/badCertificate.crt'); diff --git a/tests/lib/security/certificatemanager.php b/tests/lib/security/certificatemanager.php index 5baf9e16e81..cff6932b670 100644 --- a/tests/lib/security/certificatemanager.php +++ b/tests/lib/security/certificatemanager.php @@ -8,7 +8,7 @@ use \OC\Security\CertificateManager; -class CertificateManagerTest extends \PHPUnit_Framework_TestCase { +class CertificateManagerTest extends \Test\TestCase { /** @var CertificateManager */ private $certificateManager; @@ -17,9 +17,11 @@ class CertificateManagerTest extends \PHPUnit_Framework_TestCase { /** @var \OC\User\User */ private $user; - function setUp() { - $this->username = OC_Util::generateRandomBytes(20); - OC_User::createUser($this->username, OC_Util::generateRandomBytes(20)); + protected function setUp() { + parent::setUp(); + + $this->username = $this->getUniqueID('', 20); + OC_User::createUser($this->username, $this->getUniqueID('', 20)); \OC_Util::tearDownFS(); \OC_User::setUserId(''); @@ -31,8 +33,9 @@ class CertificateManagerTest extends \PHPUnit_Framework_TestCase { $this->certificateManager = new CertificateManager($this->user); } - function tearDown() { + protected function tearDown() { \OC_User::deleteUser($this->username); + parent::tearDown(); } protected function assertEqualsArrays($expected, $actual) { diff --git a/tests/lib/security/crypto.php b/tests/lib/security/crypto.php index 0f89253839e..1571cf89248 100644 --- a/tests/lib/security/crypto.php +++ b/tests/lib/security/crypto.php @@ -8,7 +8,7 @@ use \OC\Security\Crypto; -class CryptoTest extends \PHPUnit_Framework_TestCase { +class CryptoTest extends \Test\TestCase { public function defaultEncryptionProvider() { @@ -23,6 +23,7 @@ class CryptoTest extends \PHPUnit_Framework_TestCase { protected $crypto; protected function setUp() { + parent::setUp(); $this->crypto = new Crypto(\OC::$server->getConfig(), \OC::$server->getSecureRandom()); } diff --git a/tests/lib/security/securerandom.php b/tests/lib/security/securerandom.php index 2920077fa1d..d9bbd0e71e5 100644 --- a/tests/lib/security/securerandom.php +++ b/tests/lib/security/securerandom.php @@ -8,7 +8,7 @@ use \OC\Security\SecureRandom; -class SecureRandomTest extends \PHPUnit_Framework_TestCase { +class SecureRandomTest extends \Test\TestCase { public function stringGenerationProvider() { return array( @@ -34,6 +34,7 @@ class SecureRandomTest extends \PHPUnit_Framework_TestCase { protected $rng; protected function setUp() { + parent::setUp(); $this->rng = new \OC\Security\SecureRandom(); } diff --git a/tests/lib/security/stringutils.php b/tests/lib/security/stringutils.php index 039f3d3756a..060315debb4 100644 --- a/tests/lib/security/stringutils.php +++ b/tests/lib/security/stringutils.php @@ -8,7 +8,7 @@ use \OC\Security\StringUtils; -class StringUtilsTest extends \PHPUnit_Framework_TestCase { +class StringUtilsTest extends \Test\TestCase { public function dataProvider() { diff --git a/tests/lib/session/memory.php b/tests/lib/session/memory.php index 2dc236b73bf..84dee548a1e 100644 --- a/tests/lib/session/memory.php +++ b/tests/lib/session/memory.php @@ -10,7 +10,8 @@ namespace Test\Session; class Memory extends Session { - public function setUp() { + protected function setUp() { + parent::setUp(); $this->instance = new \OC\Session\Memory(uniqid()); } } diff --git a/tests/lib/session/session.php b/tests/lib/session/session.php index 9ce11274c84..a1ed01b2ec8 100644 --- a/tests/lib/session/session.php +++ b/tests/lib/session/session.php @@ -9,14 +9,15 @@ namespace Test\Session; -abstract class Session extends \PHPUnit_Framework_TestCase { +abstract class Session extends \Test\TestCase { /** * @var \OC\Session\Session */ protected $instance; - public function tearDown() { + protected function tearDown() { $this->instance->clear(); + parent::tearDown(); } public function testNotExistsEmpty() { diff --git a/tests/lib/setup.php b/tests/lib/setup.php index 2c1569dd800..8373ba316d6 100644 --- a/tests/lib/setup.php +++ b/tests/lib/setup.php @@ -8,14 +8,16 @@ use OCP\IConfig; -class Test_OC_Setup extends PHPUnit_Framework_TestCase { +class Test_OC_Setup extends \Test\TestCase { /** @var IConfig */ protected $config; /** @var \OC_Setup */ protected $setupClass; - public function setUp() { + protected function setUp() { + parent::setUp(); + $this->config = $this->getMock('\OCP\IConfig'); $this->setupClass = $this->getMock('\OC_Setup', array('class_exists', 'is_callable'), array($this->config)); } diff --git a/tests/lib/share/helper.php b/tests/lib/share/helper.php index 367507417a0..7a546410aea 100644 --- a/tests/lib/share/helper.php +++ b/tests/lib/share/helper.php @@ -19,7 +19,7 @@ * License along with this library. If not, see <http://www.gnu.org/licenses/>. */ -class Test_Share_Helper extends PHPUnit_Framework_TestCase { +class Test_Share_Helper extends \Test\TestCase { public function expireDateProvider() { return array( @@ -27,8 +27,8 @@ class Test_Share_Helper extends PHPUnit_Framework_TestCase { array(array('defaultExpireDateSet' => false), 2000000000, 2000010000, 2000010000), // no default expire date and no user defined expire date, return false array(array('defaultExpireDateSet' => false), 2000000000, null, false), - // unenforced expire data and no user defined expire date, take default expire date - array(array('defaultExpireDateSet' => true, 'expireAfterDays' => 1, 'enforceExpireDate' => false), 2000000000, null, 2000086400), + // unenforced expire data and no user defined expire date, return false (because the default is not enforced) + array(array('defaultExpireDateSet' => true, 'expireAfterDays' => 1, 'enforceExpireDate' => false), 2000000000, null, false), // enforced expire date and no user defined expire date, take default expire date array(array('defaultExpireDateSet' => true, 'expireAfterDays' => 1, 'enforceExpireDate' => true), 2000000000, null, 2000086400), // unenforced expire date and user defined date > default expire date, take users expire date @@ -49,6 +49,4 @@ class Test_Share_Helper extends PHPUnit_Framework_TestCase { $result = \OC\Share\Helper::calculateExpireDate($defaultExpireSettings, $creationTime, $userExpireDate); $this->assertSame($expected, $result); } - - } diff --git a/tests/lib/share/searchresultsorter.php b/tests/lib/share/searchresultsorter.php index eaf93400a7d..97ef0f9478a 100644 --- a/tests/lib/share/searchresultsorter.php +++ b/tests/lib/share/searchresultsorter.php @@ -19,7 +19,7 @@ * License along with this library. If not, see <http://www.gnu.org/licenses/>. */ -class Test_Share_Search extends \PHPUnit_Framework_TestCase { +class Test_Share_Search extends \Test\TestCase { public function testSort() { $search = 'lin'; $sorter = new \OC\Share\SearchResultSorter($search, 'foobar'); diff --git a/tests/lib/share/share.php b/tests/lib/share/share.php index 3d99883f2de..1f95502919d 100644 --- a/tests/lib/share/share.php +++ b/tests/lib/share/share.php @@ -19,7 +19,7 @@ * License along with this library. If not, see <http://www.gnu.org/licenses/>. */ -class Test_Share extends PHPUnit_Framework_TestCase { +class Test_Share extends \Test\TestCase { protected $itemType; protected $userBackend; @@ -27,6 +27,7 @@ class Test_Share extends PHPUnit_Framework_TestCase { protected $user2; protected $user3; protected $user4; + protected $groupAndUser; protected $groupBackend; protected $group1; protected $group2; @@ -34,29 +35,36 @@ class Test_Share extends PHPUnit_Framework_TestCase { protected $dateInFuture; protected $dateInPast; - public function setUp() { + protected function setUp() { + parent::setUp(); + OC_User::clearBackends(); OC_User::useBackend('dummy'); - $this->user1 = uniqid('user1_'); - $this->user2 = uniqid('user2_'); - $this->user3 = uniqid('user3_'); - $this->user4 = uniqid('user4_'); + $this->user1 = $this->getUniqueID('user1_'); + $this->user2 = $this->getUniqueID('user2_'); + $this->user3 = $this->getUniqueID('user3_'); + $this->user4 = $this->getUniqueID('user4_'); + $this->groupAndUser = $this->getUniqueID('groupAndUser_'); OC_User::createUser($this->user1, 'pass'); OC_User::createUser($this->user2, 'pass'); OC_User::createUser($this->user3, 'pass'); OC_User::createUser($this->user4, 'pass'); + OC_User::createUser($this->groupAndUser, 'pass'); OC_User::setUserId($this->user1); OC_Group::clearBackends(); OC_Group::useBackend(new OC_Group_Dummy); - $this->group1 = uniqid('group1_'); - $this->group2 = uniqid('group2_'); + $this->group1 = $this->getUniqueID('group1_'); + $this->group2 = $this->getUniqueID('group2_'); OC_Group::createGroup($this->group1); OC_Group::createGroup($this->group2); + OC_Group::createGroup($this->groupAndUser); OC_Group::addToGroup($this->user1, $this->group1); OC_Group::addToGroup($this->user2, $this->group1); OC_Group::addToGroup($this->user3, $this->group1); OC_Group::addToGroup($this->user2, $this->group2); OC_Group::addToGroup($this->user4, $this->group2); + OC_Group::addToGroup($this->user2, $this->groupAndUser); + OC_Group::addToGroup($this->user3, $this->groupAndUser); OCP\Share::registerBackend('test', 'Test_Share_Backend'); OC_Hook::clear('OCP\\Share'); OC::registerShareHooks(); @@ -70,16 +78,18 @@ class Test_Share extends PHPUnit_Framework_TestCase { $this->dateInFuture = date($dateFormat, $now + 20 * 60); } - public function tearDown() { + protected function tearDown() { $query = OC_DB::prepare('DELETE FROM `*PREFIX*share` WHERE `item_type` = ?'); $query->execute(array('test')); OC_Appconfig::setValue('core', 'shareapi_allow_resharing', $this->resharing); + + parent::tearDown(); } public function testShareInvalidShareType() { $message = 'Share type foobar is not valid for test.txt'; try { - OCP\Share::shareItem('test', 'test.txt', 'foobar', $this->user2, OCP\PERMISSION_READ); + OCP\Share::shareItem('test', 'test.txt', 'foobar', $this->user2, \OCP\Constants::PERMISSION_READ); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } @@ -88,7 +98,7 @@ class Test_Share extends PHPUnit_Framework_TestCase { public function testInvalidItemType() { $message = 'Sharing backend for foobar not found'; try { - OCP\Share::shareItem('foobar', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ); + OCP\Share::shareItem('foobar', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); @@ -124,7 +134,7 @@ class Test_Share extends PHPUnit_Framework_TestCase { $this->assertEquals($message, $exception->getMessage()); } try { - OCP\Share::setPermissions('foobar', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_UPDATE); + OCP\Share::setPermissions('foobar', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_UPDATE); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); @@ -134,7 +144,7 @@ class Test_Share extends PHPUnit_Framework_TestCase { protected function shareUserOneTestFileWithUserTwo() { OC_User::setUserId($this->user1); $this->assertTrue( - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ), + OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ), 'Failed asserting that user 1 successfully shared text.txt with user 2.' ); $this->assertContains( @@ -153,7 +163,7 @@ class Test_Share extends PHPUnit_Framework_TestCase { protected function shareUserTestFileAsLink() { OC_User::setUserId($this->user1); - $result = OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_LINK, null, OCP\PERMISSION_READ); + $result = OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_LINK, null, \OCP\Constants::PERMISSION_READ); $this->assertTrue(is_string($result)); } @@ -164,7 +174,7 @@ class Test_Share extends PHPUnit_Framework_TestCase { protected function shareUserTestFileWithUser($sharer, $receiver) { OC_User::setUserId($sharer); $this->assertTrue( - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $receiver, OCP\PERMISSION_READ | OCP\PERMISSION_SHARE), + OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $receiver, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE), 'Failed asserting that ' . $sharer . ' successfully shared text.txt with ' . $receiver . '.' ); $this->assertContains( @@ -185,21 +195,21 @@ class Test_Share extends PHPUnit_Framework_TestCase { // Invalid shares $message = 'Sharing test.txt failed, because the user '.$this->user1.' is the item owner'; try { - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user1, OCP\PERMISSION_READ); + OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user1, \OCP\Constants::PERMISSION_READ); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } $message = 'Sharing test.txt failed, because the user foobar does not exist'; try { - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, 'foobar', OCP\PERMISSION_READ); + OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, 'foobar', \OCP\Constants::PERMISSION_READ); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } $message = 'Sharing foobar failed, because the sharing backend for test could not find its source'; try { - OCP\Share::shareItem('test', 'foobar', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ); + OCP\Share::shareItem('test', 'foobar', OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); @@ -212,7 +222,7 @@ class Test_Share extends PHPUnit_Framework_TestCase { OC_User::setUserId($this->user1); $message = 'Sharing test.txt failed, because this item is already shared with '.$this->user2; try { - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ); + OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); @@ -222,7 +232,7 @@ class Test_Share extends PHPUnit_Framework_TestCase { OC_User::setUserId($this->user2); $message = 'Sharing test.txt failed, because the user '.$this->user1.' is the original sharer'; try { - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user1, OCP\PERMISSION_READ); + OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user1, \OCP\Constants::PERMISSION_READ); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); @@ -233,11 +243,11 @@ class Test_Share extends PHPUnit_Framework_TestCase { $this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2)); // Attempt reshare without share permission - $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ)); + $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ)); OC_User::setUserId($this->user2); $message = 'Sharing test.txt failed, because resharing is not allowed'; try { - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, OCP\PERMISSION_READ); + OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, \OCP\Constants::PERMISSION_READ); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); @@ -245,30 +255,30 @@ class Test_Share extends PHPUnit_Framework_TestCase { // Owner grants share and update permission OC_User::setUserId($this->user1); - $this->assertTrue(OCP\Share::setPermissions('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ | OCP\PERMISSION_UPDATE | OCP\PERMISSION_SHARE)); + $this->assertTrue(OCP\Share::setPermissions('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_SHARE)); // Attempt reshare with escalated permissions OC_User::setUserId($this->user2); $message = 'Sharing test.txt failed, because the permissions exceed permissions granted to '.$this->user2; try { - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, OCP\PERMISSION_READ | OCP\PERMISSION_DELETE); + OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_DELETE); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); } // Valid reshare - $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, OCP\PERMISSION_READ | OCP\PERMISSION_UPDATE)); + $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE)); $this->assertEquals(array('test.txt'), OCP\Share::getItemShared('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE)); OC_User::setUserId($this->user3); $this->assertEquals(array('test.txt'), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE)); - $this->assertEquals(array(OCP\PERMISSION_READ | OCP\PERMISSION_UPDATE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); + $this->assertEquals(array(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); // Attempt to escalate permissions OC_User::setUserId($this->user2); $message = 'Setting permissions for test.txt failed, because the permissions exceed permissions granted to '.$this->user2; try { - OCP\Share::setPermissions('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, OCP\PERMISSION_READ | OCP\PERMISSION_DELETE); + OCP\Share::setPermissions('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_DELETE); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); @@ -276,25 +286,25 @@ class Test_Share extends PHPUnit_Framework_TestCase { // Remove update permission OC_User::setUserId($this->user1); - $this->assertTrue(OCP\Share::setPermissions('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ | OCP\PERMISSION_SHARE)); + $this->assertTrue(OCP\Share::setPermissions('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE)); OC_User::setUserId($this->user2); - $this->assertEquals(array(OCP\PERMISSION_READ | OCP\PERMISSION_SHARE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); + $this->assertEquals(array(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); OC_User::setUserId($this->user3); - $this->assertEquals(array(OCP\PERMISSION_READ), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); + $this->assertEquals(array(\OCP\Constants::PERMISSION_READ), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); // Remove share permission OC_User::setUserId($this->user1); - $this->assertTrue(OCP\Share::setPermissions('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ)); + $this->assertTrue(OCP\Share::setPermissions('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ)); OC_User::setUserId($this->user2); - $this->assertEquals(array(OCP\PERMISSION_READ), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); + $this->assertEquals(array(\OCP\Constants::PERMISSION_READ), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); OC_User::setUserId($this->user3); $this->assertSame(array(), OCP\Share::getItemSharedWith('test', 'test.txt')); // Reshare again, and then have owner unshare OC_User::setUserId($this->user1); - $this->assertTrue(OCP\Share::setPermissions('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ | OCP\PERMISSION_SHARE)); + $this->assertTrue(OCP\Share::setPermissions('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE)); OC_User::setUserId($this->user2); - $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, OCP\PERMISSION_READ)); + $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, \OCP\Constants::PERMISSION_READ)); OC_User::setUserId($this->user1); $this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2)); OC_User::setUserId($this->user2); @@ -304,9 +314,9 @@ class Test_Share extends PHPUnit_Framework_TestCase { // Attempt target conflict OC_User::setUserId($this->user1); - $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ)); + $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ)); OC_User::setUserId($this->user3); - $this->assertTrue(OCP\Share::shareItem('test', 'share.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ)); + $this->assertTrue(OCP\Share::shareItem('test', 'share.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ)); OC_User::setUserId($this->user2); $to_test = OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET); @@ -323,9 +333,9 @@ class Test_Share extends PHPUnit_Framework_TestCase { $this->assertEquals(array(), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); OC_User::setUserId($this->user1); - $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ)); + $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ)); OC_User::setUserId($this->user3); - $this->assertTrue(OCP\Share::shareItem('test', 'share.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ)); + $this->assertTrue(OCP\Share::shareItem('test', 'share.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ)); OC_User::setUserId($this->user2); $to_test = OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET); @@ -402,7 +412,7 @@ class Test_Share extends PHPUnit_Framework_TestCase { OC_User::setUserId($this->user1); $this->assertTrue( - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user4, OCP\PERMISSION_ALL), + OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user4, \OCP\Constants::PERMISSION_ALL), 'Failed asserting that user 1 successfully shared text.txt with user 4.' ); $this->assertContains( @@ -419,7 +429,7 @@ class Test_Share extends PHPUnit_Framework_TestCase { $share = OCP\Share::getItemSharedWith('test', 'test.txt'); - $this->assertSame(\OCP\PERMISSION_ALL & ~OCP\PERMISSION_SHARE, $share['permissions'], + $this->assertSame(\OCP\Constants::PERMISSION_ALL & ~\OCP\Constants::PERMISSION_SHARE, $share['permissions'], 'Failed asserting that user 4 is excluded from re-sharing'); \OC_Appconfig::deleteKey('core', 'shareapi_exclude_groups_list'); @@ -430,7 +440,7 @@ class Test_Share extends PHPUnit_Framework_TestCase { protected function shareUserOneTestFileWithGroupOne() { OC_User::setUserId($this->user1); $this->assertTrue( - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\PERMISSION_READ), + OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, \OCP\Constants::PERMISSION_READ), 'Failed asserting that user 1 successfully shared text.txt with group 1.' ); $this->assertContains( @@ -458,7 +468,7 @@ class Test_Share extends PHPUnit_Framework_TestCase { // Invalid shares $message = 'Sharing test.txt failed, because the group foobar does not exist'; try { - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, 'foobar', OCP\PERMISSION_READ); + OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, 'foobar', \OCP\Constants::PERMISSION_READ); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); @@ -467,7 +477,7 @@ class Test_Share extends PHPUnit_Framework_TestCase { OC_Appconfig::setValue('core', 'shareapi_only_share_with_group_members', 'yes'); $message = 'Sharing test.txt failed, because '.$this->user1.' is not a member of the group '.$this->group2; try { - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group2, OCP\PERMISSION_READ); + OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group2, \OCP\Constants::PERMISSION_READ); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); @@ -481,7 +491,7 @@ class Test_Share extends PHPUnit_Framework_TestCase { OC_User::setUserId($this->user1); $message = 'Sharing test.txt failed, because this item is already shared with '.$this->group1; try { - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\PERMISSION_READ); + OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, \OCP\Constants::PERMISSION_READ); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); @@ -491,7 +501,7 @@ class Test_Share extends PHPUnit_Framework_TestCase { OC_User::setUserId($this->user2); $message = 'Sharing test.txt failed, because the user '.$this->user1.' is the original sharer'; try { - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user1, OCP\PERMISSION_READ); + OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user1, \OCP\Constants::PERMISSION_READ); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); @@ -500,7 +510,7 @@ class Test_Share extends PHPUnit_Framework_TestCase { // Attempt to share back to group $message = 'Sharing test.txt failed, because this item is already shared with '.$this->group1; try { - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\PERMISSION_READ); + OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, \OCP\Constants::PERMISSION_READ); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); @@ -509,7 +519,7 @@ class Test_Share extends PHPUnit_Framework_TestCase { // Attempt to share back to member of group $message ='Sharing test.txt failed, because this item is already shared with '.$this->user3; try { - OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, OCP\PERMISSION_READ); + OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user3, \OCP\Constants::PERMISSION_READ); $this->fail('Exception was expected: '.$message); } catch (Exception $exception) { $this->assertEquals($message, $exception->getMessage()); @@ -520,18 +530,18 @@ class Test_Share extends PHPUnit_Framework_TestCase { $this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1)); // Valid share with same person - user then group - $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ | OCP\PERMISSION_DELETE | OCP\PERMISSION_SHARE)); - $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\PERMISSION_READ | OCP\PERMISSION_UPDATE)); + $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_DELETE | \OCP\Constants::PERMISSION_SHARE)); + $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE)); OC_User::setUserId($this->user2); $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); - $this->assertEquals(array(OCP\PERMISSION_READ | OCP\PERMISSION_UPDATE | OCP\PERMISSION_DELETE | OCP\PERMISSION_SHARE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); + $this->assertEquals(array(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE | \OCP\Constants::PERMISSION_SHARE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); OC_User::setUserId($this->user3); $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); - $this->assertEquals(array(OCP\PERMISSION_READ | OCP\PERMISSION_UPDATE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); + $this->assertEquals(array(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); // Valid reshare OC_User::setUserId($this->user2); - $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user4, OCP\PERMISSION_READ)); + $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user4, \OCP\Constants::PERMISSION_READ)); OC_User::setUserId($this->user4); $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); @@ -539,26 +549,26 @@ class Test_Share extends PHPUnit_Framework_TestCase { OC_User::setUserId($this->user1); $this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2)); OC_User::setUserId($this->user2); - $this->assertEquals(array(OCP\PERMISSION_READ | OCP\PERMISSION_UPDATE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); + $this->assertEquals(array(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); OC_User::setUserId($this->user4); $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); // Valid share with same person - group then user OC_User::setUserId($this->user1); - $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, OCP\PERMISSION_READ | OCP\PERMISSION_DELETE)); + $this->assertTrue(OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_DELETE)); OC_User::setUserId($this->user2); $this->assertEquals(array('test.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); - $this->assertEquals(array(OCP\PERMISSION_READ | OCP\PERMISSION_UPDATE | OCP\PERMISSION_DELETE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); + $this->assertEquals(array(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); // Unshare from group only OC_User::setUserId($this->user1); $this->assertTrue(OCP\Share::unshare('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1)); OC_User::setUserId($this->user2); - $this->assertEquals(array(OCP\PERMISSION_READ | OCP\PERMISSION_DELETE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); + $this->assertEquals(array(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_DELETE), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_PERMISSIONS)); // Attempt user specific target conflict OC_User::setUserId($this->user3); - $this->assertTrue(OCP\Share::shareItem('test', 'share.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, OCP\PERMISSION_READ | OCP\PERMISSION_SHARE)); + $this->assertTrue(OCP\Share::shareItem('test', 'share.txt', OCP\Share::SHARE_TYPE_GROUP, $this->group1, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE)); OC_User::setUserId($this->user2); $to_test = OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET); $this->assertEquals(2, count($to_test)); @@ -566,7 +576,7 @@ class Test_Share extends PHPUnit_Framework_TestCase { $this->assertTrue(in_array('test1.txt', $to_test)); // Valid reshare - $this->assertTrue(OCP\Share::shareItem('test', 'share.txt', OCP\Share::SHARE_TYPE_USER, $this->user4, OCP\PERMISSION_READ | OCP\PERMISSION_SHARE)); + $this->assertTrue(OCP\Share::shareItem('test', 'share.txt', OCP\Share::SHARE_TYPE_USER, $this->user4, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE)); OC_User::setUserId($this->user4); $this->assertEquals(array('test1.txt'), OCP\Share::getItemsSharedWith('test', Test_Share_Backend::FORMAT_TARGET)); @@ -600,6 +610,41 @@ class Test_Share extends PHPUnit_Framework_TestCase { $this->assertEquals(array(), OCP\Share::getItemsShared('test')); } + + public function testShareWithGroupAndUserBothHaveTheSameId() { + + $this->shareUserTestFileWithUser($this->user1, $this->groupAndUser); + + OC_User::setUserId($this->groupAndUser); + + $this->assertEquals(array('test.txt'), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE), + '"groupAndUser"-User does not see the file but it was shared with him'); + + OC_User::setUserId($this->user2); + $this->assertEquals(array(), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE), + 'User2 sees test.txt but it was only shared with the user "groupAndUser" and not with group'); + + OC_User::setUserId($this->user1); + $this->assertTrue(OCP\Share::unshareAll('test', 'test.txt')); + + $this->assertTrue( + OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_GROUP, $this->groupAndUser, \OCP\Constants::PERMISSION_READ), + 'Failed asserting that user 1 successfully shared text.txt with group 1.' + ); + + OC_User::setUserId($this->groupAndUser); + $this->assertEquals(array(), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE), + '"groupAndUser"-User sees test.txt but it was only shared with the group "groupAndUser" and not with the user'); + + OC_User::setUserId($this->user2); + $this->assertEquals(array('test.txt'), OCP\Share::getItemSharedWith('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE), + 'User2 does not see test.txt but it was shared with the group "groupAndUser"'); + + OC_User::setUserId($this->user1); + $this->assertTrue(OCP\Share::unshareAll('test', 'test.txt')); + + } + /** * @param boolean|string $token */ @@ -613,9 +658,53 @@ class Test_Share extends PHPUnit_Framework_TestCase { return $row; } + public function testGetItemSharedWithUser() { + OC_User::setUserId($this->user1); + + //add dummy values to the share table + $query = \OC_DB::prepare('INSERT INTO `*PREFIX*share` (' + .' `item_type`, `item_source`, `item_target`, `share_type`,' + .' `share_with`, `uid_owner`) VALUES (?,?,?,?,?,?)'); + $args = array('test', 99, 'target1', OCP\Share::SHARE_TYPE_USER, $this->user2, $this->user1); + $query->execute($args); + $args = array('test', 99, 'target2', OCP\Share::SHARE_TYPE_USER, $this->user4, $this->user1); + $query->execute($args); + $args = array('test', 99, 'target3', OCP\Share::SHARE_TYPE_USER, $this->user3, $this->user2); + $query->execute($args); + $args = array('test', 99, 'target4', OCP\Share::SHARE_TYPE_USER, $this->user3, $this->user4); + $query->execute($args); + + + $result1 = \OCP\Share::getItemSharedWithUser('test', 99, $this->user2, $this->user1); + $this->assertSame(1, count($result1)); + $this->verifyResult($result1, array('target1')); + + $result2 = \OCP\Share::getItemSharedWithUser('test', 99, null, $this->user1); + $this->assertSame(2, count($result2)); + $this->verifyResult($result2, array('target1', 'target2')); + + $result3 = \OCP\Share::getItemSharedWithUser('test', 99, $this->user3); + $this->assertSame(2, count($result3)); + $this->verifyResult($result3, array('target3', 'target4')); + + $result4 = \OCP\Share::getItemSharedWithUser('test', 99, null, null); + $this->assertSame(4, count($result4)); + $this->verifyResult($result4, array('target1', 'target2', 'target3', 'target4')); + } + + public function verifyResult($result, $expected) { + foreach ($result as $r) { + if (in_array($r['item_target'], $expected)) { + $key = array_search($r['item_target'], $expected); + unset($expected[$key]); + } + } + $this->assertEmpty($expected, 'did not found all expected values'); + } + public function testShareItemWithLink() { OC_User::setUserId($this->user1); - $token = OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_LINK, null, OCP\PERMISSION_READ); + $token = OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_LINK, null, \OCP\Constants::PERMISSION_READ); $this->assertInternalType( 'string', $token, @@ -661,7 +750,7 @@ class Test_Share extends PHPUnit_Framework_TestCase { \OC_Appconfig::setValue('core', 'shareapi_default_expire_date', 'yes'); \OC_Appconfig::setValue('core', 'shareapi_expire_after_n_days', '2'); - $token = OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_LINK, null, OCP\PERMISSION_READ); + $token = OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_LINK, null, \OCP\Constants::PERMISSION_READ); $this->assertInternalType( 'string', $token, @@ -787,20 +876,20 @@ class Test_Share extends PHPUnit_Framework_TestCase { // one array with one share array( array( // input - array('item_source' => 1, 'permissions' => \OCP\PERMISSION_ALL, 'item_target' => 't1')), + array('item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_ALL, 'item_target' => 't1')), array( // expected result - array('item_source' => 1, 'permissions' => \OCP\PERMISSION_ALL, 'item_target' => 't1'))), + array('item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_ALL, 'item_target' => 't1'))), // two shares both point to the same source array( array( // input - array('item_source' => 1, 'permissions' => \OCP\PERMISSION_READ, 'item_target' => 't1'), - array('item_source' => 1, 'permissions' => \OCP\PERMISSION_UPDATE, 'item_target' => 't1'), + array('item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_READ, 'item_target' => 't1'), + array('item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_UPDATE, 'item_target' => 't1'), ), array( // expected result - array('item_source' => 1, 'permissions' => \OCP\PERMISSION_READ | \OCP\PERMISSION_UPDATE, 'item_target' => 't1', + array('item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE, 'item_target' => 't1', 'grouped' => array( - array('item_source' => 1, 'permissions' => \OCP\PERMISSION_READ, 'item_target' => 't1'), - array('item_source' => 1, 'permissions' => \OCP\PERMISSION_UPDATE, 'item_target' => 't1'), + array('item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_READ, 'item_target' => 't1'), + array('item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_UPDATE, 'item_target' => 't1'), ) ), ) @@ -808,29 +897,29 @@ class Test_Share extends PHPUnit_Framework_TestCase { // two shares both point to the same source but with different targets array( array( // input - array('item_source' => 1, 'permissions' => \OCP\PERMISSION_READ, 'item_target' => 't1'), - array('item_source' => 1, 'permissions' => \OCP\PERMISSION_UPDATE, 'item_target' => 't2'), + array('item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_READ, 'item_target' => 't1'), + array('item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_UPDATE, 'item_target' => 't2'), ), array( // expected result - array('item_source' => 1, 'permissions' => \OCP\PERMISSION_READ, 'item_target' => 't1'), - array('item_source' => 1, 'permissions' => \OCP\PERMISSION_UPDATE, 'item_target' => 't2'), + array('item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_READ, 'item_target' => 't1'), + array('item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_UPDATE, 'item_target' => 't2'), ) ), // three shares two point to the same source array( array( // input - array('item_source' => 1, 'permissions' => \OCP\PERMISSION_READ, 'item_target' => 't1'), - array('item_source' => 2, 'permissions' => \OCP\PERMISSION_CREATE, 'item_target' => 't2'), - array('item_source' => 1, 'permissions' => \OCP\PERMISSION_UPDATE, 'item_target' => 't1'), + array('item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_READ, 'item_target' => 't1'), + array('item_source' => 2, 'permissions' => \OCP\Constants::PERMISSION_CREATE, 'item_target' => 't2'), + array('item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_UPDATE, 'item_target' => 't1'), ), array( // expected result - array('item_source' => 1, 'permissions' => \OCP\PERMISSION_READ | \OCP\PERMISSION_UPDATE, 'item_target' => 't1', + array('item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_UPDATE, 'item_target' => 't1', 'grouped' => array( - array('item_source' => 1, 'permissions' => \OCP\PERMISSION_READ, 'item_target' => 't1'), - array('item_source' => 1, 'permissions' => \OCP\PERMISSION_UPDATE, 'item_target' => 't1'), + array('item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_READ, 'item_target' => 't1'), + array('item_source' => 1, 'permissions' => \OCP\Constants::PERMISSION_UPDATE, 'item_target' => 't1'), ) ), - array('item_source' => 2, 'permissions' => \OCP\PERMISSION_CREATE, 'item_target' => 't2'), + array('item_source' => 2, 'permissions' => \OCP\Constants::PERMISSION_CREATE, 'item_target' => 't2'), ) ), ); diff --git a/tests/lib/streamwrappers.php b/tests/lib/streamwrappers.php index 1b61446f4dc..9a3b6bc9266 100644 --- a/tests/lib/streamwrappers.php +++ b/tests/lib/streamwrappers.php @@ -20,7 +20,7 @@ * */ -class Test_StreamWrappers extends PHPUnit_Framework_TestCase { +class Test_StreamWrappers extends \Test\TestCase { public function testFakeDir() { $items = array('foo', 'bar'); \OC\Files\Stream\Dir::register('test', $items); @@ -65,7 +65,9 @@ class Test_StreamWrappers extends PHPUnit_Framework_TestCase { } public function testOC() { + $originalStorage = \OC\Files\Filesystem::getStorage('/'); \OC\Files\Filesystem::clearMounts(); + $storage = new \OC\Files\Storage\Temporary(array()); $storage->file_put_contents('foo.txt', 'asd'); \OC\Files\Filesystem::mount($storage, array(), '/'); @@ -91,5 +93,8 @@ class Test_StreamWrappers extends PHPUnit_Framework_TestCase { unlink('oc:///foo.txt'); $this->assertEquals(array('.', '..', 'bar.txt'), scandir('oc:///')); + + \OC\Files\Filesystem::clearMounts(); + \OC\Files\Filesystem::mount($originalStorage, array(), '/'); } } diff --git a/tests/lib/tags.php b/tests/lib/tags.php index 57b64f1cd36..3f0c52d19ea 100644 --- a/tests/lib/tags.php +++ b/tests/lib/tags.php @@ -20,13 +20,14 @@ * */ -class Test_Tags extends PHPUnit_Framework_TestCase { +class Test_Tags extends \Test\TestCase { protected $objectType; protected $user; protected $backupGlobals = FALSE; - public function setUp() { + protected function setUp() { + parent::setUp(); OC_User::clearBackends(); OC_User::useBackend('dummy'); @@ -39,9 +40,11 @@ class Test_Tags extends PHPUnit_Framework_TestCase { } - public function tearDown() { + protected function tearDown() { //$query = OC_DB::prepare('DELETE FROM `*PREFIX*vcategories` WHERE `item_type` = ?'); //$query->execute(array('test')); + + parent::tearDown(); } public function testInstantiateWithDefaults() { @@ -211,7 +214,7 @@ class Test_Tags extends PHPUnit_Framework_TestCase { $this->assertFalse($other_tagger->hasTag($test_tag)); OC_User::setUserId($this->user); - OCP\Share::shareItem('test', 1, OCP\Share::SHARE_TYPE_USER, $other_user, OCP\PERMISSION_READ); + OCP\Share::shareItem('test', 1, OCP\Share::SHARE_TYPE_USER, $other_user, \OCP\Constants::PERMISSION_READ); OC_User::setUserId($other_user); $other_tagger = $other_tagMgr->load('test', array(), true); // Update tags, load shared ones. diff --git a/tests/lib/template.php b/tests/lib/template.php index 819d592aacf..d77284a5bf2 100644 --- a/tests/lib/template.php +++ b/tests/lib/template.php @@ -20,9 +20,11 @@ * */ -class Test_TemplateFunctions extends PHPUnit_Framework_TestCase { +class Test_TemplateFunctions extends \Test\TestCase { + + protected function setUp() { + parent::setUp(); - public function setUp() { $loader = new \OC\Autoloader(); $loader->load('OC_Template'); } diff --git a/tests/lib/template/resourcelocator.php b/tests/lib/template/resourcelocator.php index 619560643fe..f350fd144e1 100644 --- a/tests/lib/template/resourcelocator.php +++ b/tests/lib/template/resourcelocator.php @@ -6,23 +6,21 @@ * See the COPYING-README file. */ -class Test_ResourceLocator extends PHPUnit_Framework_TestCase { +class Test_ResourceLocator extends \Test\TestCase { /** * @param string $theme - * @param string $form_factor */ - public function getResourceLocator( $theme, $form_factor, $core_map, $party_map, $appsroots ) { + public function getResourceLocator( $theme, $core_map, $party_map, $appsroots ) { return $this->getMockForAbstractClass('OC\Template\ResourceLocator', - array( $theme, $form_factor, $core_map, $party_map, $appsroots ), + array( $theme, $core_map, $party_map, $appsroots ), '', true, true, true, array()); } public function testConstructor() { - $locator = $this->getResourceLocator('theme', 'form_factor', + $locator = $this->getResourceLocator('theme', array('core'=>'map'), array('3rd'=>'party'), array('foo'=>'bar')); $this->assertAttributeEquals('theme', 'theme', $locator); - $this->assertAttributeEquals('form_factor', 'form_factor', $locator); $this->assertAttributeEquals('core', 'serverroot', $locator); $this->assertAttributeEquals(array('core'=>'map','3rd'=>'party'), 'mapping', $locator); $this->assertAttributeEquals('3rd', 'thirdpartyroot', $locator); @@ -31,7 +29,7 @@ class Test_ResourceLocator extends PHPUnit_Framework_TestCase { } public function testFind() { - $locator = $this->getResourceLocator('theme', 'form_factor', + $locator = $this->getResourceLocator('theme', array('core'=>'map'), array('3rd'=>'party'), array('foo'=>'bar')); $locator->expects($this->once()) ->method('doFind') @@ -41,7 +39,7 @@ class Test_ResourceLocator extends PHPUnit_Framework_TestCase { ->with('foo'); $locator->find(array('foo')); - $locator = $this->getResourceLocator('theme', 'form_factor', + $locator = $this->getResourceLocator('theme', array('core'=>'map'), array('3rd'=>'party'), array('foo'=>'bar')); $locator->expects($this->once()) ->method('doFind') @@ -50,12 +48,12 @@ class Test_ResourceLocator extends PHPUnit_Framework_TestCase { try { $locator->find(array('foo')); } catch (\Exception $e) { - $this->assertEquals('test formfactor:form_factor serverroot:core', $e->getMessage()); + $this->assertEquals('test serverroot:core', $e->getMessage()); } } public function testAppendIfExist() { - $locator = $this->getResourceLocator('theme', 'form_factor', + $locator = $this->getResourceLocator('theme', array(__DIR__=>'map'), array('3rd'=>'party'), array('foo'=>'bar')); $method = new ReflectionMethod($locator, 'appendIfExist'); $method->setAccessible(true); diff --git a/tests/lib/templatelayout.php b/tests/lib/templatelayout.php index 0335c7c88ee..1035dae122d 100644 --- a/tests/lib/templatelayout.php +++ b/tests/lib/templatelayout.php @@ -11,23 +11,27 @@ namespace OC\Test; /** * @package OC\Test */ -class OC_TemplateLayout extends \PHPUnit_Framework_TestCase { +class OC_TemplateLayout extends \Test\TestCase { - private $oldServerUri; + private $oldServerURI; private $oldScriptName; - public function setUp() { + protected function setUp() { + parent::setUp(); + $this->oldServerURI = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : null; $this->oldScriptName = $_SERVER['SCRIPT_NAME']; } - public function tearDown() { + protected function tearDown() { if ($this->oldServerURI === null) { unset($_SERVER['REQUEST_URI']); } else { $_SERVER['REQUEST_URI'] = $this->oldServerURI; } $_SERVER['SCRIPT_NAME'] = $this->oldScriptName; + + parent::tearDown(); } /** diff --git a/tests/lib/tempmanager.php b/tests/lib/tempmanager.php index f16fbce2c7c..c030eef2c9e 100644 --- a/tests/lib/tempmanager.php +++ b/tests/lib/tempmanager.php @@ -21,22 +21,25 @@ class NullLogger extends Log { } } -class TempManager extends \PHPUnit_Framework_TestCase { +class TempManager extends \Test\TestCase { protected $baseDir; - public function setUp() { - $this->baseDir = get_temp_dir() . '/oc_tmp_test'; + protected function setUp() { + parent::setUp(); + + $this->baseDir = get_temp_dir() . $this->getUniqueID('/oc_tmp_test'); if (!is_dir($this->baseDir)) { mkdir($this->baseDir); } } - public function tearDown() { + protected function tearDown() { \OC_Helper::rmdirr($this->baseDir); + parent::tearDown(); } /** - * @param \Psr\Log\LoggerInterface $logger + * @param \OCP\ILogger $logger * @return \OC\TempManager */ protected function getManager($logger = null) { @@ -122,6 +125,10 @@ class TempManager extends \PHPUnit_Framework_TestCase { } public function testLogCantCreateFile() { + if (\OC_Util::runningOnWindows()) { + $this->markTestSkipped('[Windows] chmod() does not work as intended on Windows.'); + } + $logger = $this->getMock('\Test\NullLogger'); $manager = $this->getManager($logger); chmod($this->baseDir, 0500); @@ -132,6 +139,10 @@ class TempManager extends \PHPUnit_Framework_TestCase { } public function testLogCantCreateFolder() { + if (\OC_Util::runningOnWindows()) { + $this->markTestSkipped('[Windows] chmod() does not work as intended on Windows.'); + } + $logger = $this->getMock('\Test\NullLogger'); $manager = $this->getManager($logger); chmod($this->baseDir, 0500); diff --git a/tests/lib/testcase.php b/tests/lib/testcase.php new file mode 100644 index 00000000000..e6f5ca71dac --- /dev/null +++ b/tests/lib/testcase.php @@ -0,0 +1,149 @@ +<?php +/** + * ownCloud + * + * @author Joas Schilling + * @copyright 2014 Joas Schilling nickvergessen@owncloud.com + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE + * License as published by the Free Software Foundation; either + * version 3 of the License, or any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with this library. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace Test; + +abstract class TestCase extends \PHPUnit_Framework_TestCase { + /** + * Returns a unique identifier as uniqid() is not reliable sometimes + * + * @param string $prefix + * @param int $length + * @return string + */ + protected function getUniqueID($prefix = '', $length = 13) { + return $prefix . \OC::$server->getSecureRandom()->getLowStrengthGenerator()->generate( + $length, + // Do not use dots and slashes as we use the value for file names + '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' + ); + } + + public static function tearDownAfterClass() { + $dataDir = \OC::$server->getConfig()->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data-autotest'); + + self::tearDownAfterClassCleanFileMapper($dataDir); + self::tearDownAfterClassCleanStorages(); + self::tearDownAfterClassCleanFileCache(); + self::tearDownAfterClassCleanStrayDataFiles($dataDir); + self::tearDownAfterClassCleanStrayHooks(); + self::tearDownAfterClassCleanProxies(); + + parent::tearDownAfterClass(); + } + + /** + * Remove all entries from the files map table + * @param string $dataDir + */ + static protected function tearDownAfterClassCleanFileMapper($dataDir) { + if (\OC_Util::runningOnWindows()) { + $mapper = new \OC\Files\Mapper($dataDir); + $mapper->removePath($dataDir, true, true); + } + } + + /** + * Remove all entries from the storages table + * @throws \DatabaseException + */ + static protected function tearDownAfterClassCleanStorages() { + $sql = 'DELETE FROM `*PREFIX*storages`'; + $query = \OC_DB::prepare($sql); + $query->execute(); + } + + /** + * Remove all entries from the filecache table + * @throws \DatabaseException + */ + static protected function tearDownAfterClassCleanFileCache() { + $sql = 'DELETE FROM `*PREFIX*filecache`'; + $query = \OC_DB::prepare($sql); + $query->execute(); + } + + /** + * Remove all unused files from the data dir + * + * @param string $dataDir + */ + static protected function tearDownAfterClassCleanStrayDataFiles($dataDir) { + $knownEntries = array( + 'owncloud.log' => true, + 'owncloud.db' => true, + '.ocdata' => true, + '..' => true, + '.' => true, + ); + + if ($dh = opendir($dataDir)) { + while (($file = readdir($dh)) !== false) { + if (!isset($knownEntries[$file])) { + self::tearDownAfterClassCleanStrayDataUnlinkDir($dataDir . '/' . $file); + } + } + closedir($dh); + } + } + + /** + * Recursive delete files and folders from a given directory + * + * @param string $dir + */ + static protected function tearDownAfterClassCleanStrayDataUnlinkDir($dir) { + if ($dh = @opendir($dir)) { + while (($file = readdir($dh)) !== false) { + if ($file === '..' || $file === '.') { + continue; + } + $path = $dir . '/' . $file; + if (is_dir($path)) { + self::tearDownAfterClassCleanStrayDataUnlinkDir($path); + } + else { + @unlink($path); + } + } + closedir($dh); + } + @rmdir($dir); + } + + /** + * Clean up the list of hooks + */ + static protected function tearDownAfterClassCleanStrayHooks() { + \OC_Hook::clear(); + } + + /** + * Clean up the list of file proxies + * + * Also reenables file proxies, in case a test disabled them + */ + static protected function tearDownAfterClassCleanProxies() { + \OC_FileProxy::$enabled = true; + \OC_FileProxy::clearProxies(); + } +} diff --git a/tests/lib/updater.php b/tests/lib/updater.php index 4488744fa1d..155dccf78a7 100644 --- a/tests/lib/updater.php +++ b/tests/lib/updater.php @@ -8,9 +8,9 @@ namespace OC; -class UpdaterTest extends \PHPUnit_Framework_TestCase { +class UpdaterTest extends \Test\TestCase { - public function testVersionCompatbility() { + public function versionCompatibilityTestData() { return array( array('1.0.0.0', '2.2.0', true), array('1.1.1.1', '2.0.0', true), @@ -24,7 +24,7 @@ class UpdaterTest extends \PHPUnit_Framework_TestCase { } /** - * @dataProvider testVersionCompatbility + * @dataProvider versionCompatibilityTestData */ function testIsUpgradePossible($oldVersion, $newVersion, $result) { $updater = new Updater(); diff --git a/tests/lib/urlgenerator.php b/tests/lib/urlgenerator.php index 066272731ee..a92aaddeb4c 100644 --- a/tests/lib/urlgenerator.php +++ b/tests/lib/urlgenerator.php @@ -6,7 +6,7 @@ * See the COPYING-README file. */ -class Test_Urlgenerator extends PHPUnit_Framework_TestCase { +class Test_Urlgenerator extends \Test\TestCase { /** * @small diff --git a/tests/lib/user.php b/tests/lib/user.php index e2c3282a19f..cb0c661b2a4 100644 --- a/tests/lib/user.php +++ b/tests/lib/user.php @@ -9,13 +9,15 @@ namespace Test; -class User extends \PHPUnit_Framework_TestCase { +class User extends TestCase { /** * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend */ private $backend; protected function setUp(){ + parent::setUp(); + $this->backend = $this->getMock('\OC_User_Dummy'); $manager = \OC_User::getManager(); $manager->registerBackend($this->backend); diff --git a/tests/lib/user/backend.php b/tests/lib/user/backend.php index 0d3914c7ca6..c2040f4e3be 100644 --- a/tests/lib/user/backend.php +++ b/tests/lib/user/backend.php @@ -30,7 +30,7 @@ * For an example see /tests/lib/user/dummy.php */ -abstract class Test_User_Backend extends PHPUnit_Framework_TestCase { +abstract class Test_User_Backend extends \Test\TestCase { /** * @var OC_User_Backend $backend */ @@ -42,7 +42,7 @@ abstract class Test_User_Backend extends PHPUnit_Framework_TestCase { * @return string */ public function getUser() { - return uniqid('test_'); + return $this->getUniqueID('test_'); } public function testAddRemove() { @@ -68,29 +68,29 @@ abstract class Test_User_Backend extends PHPUnit_Framework_TestCase { $this->assertTrue((array_search($name1, $this->backend->getUsers())!==false)); $this->assertFalse((array_search($name2, $this->backend->getUsers())!==false)); } - + public function testLogin() { $name1=$this->getUser(); $name2=$this->getUser(); - + $this->assertFalse($this->backend->userExists($name1)); $this->assertFalse($this->backend->userExists($name2)); - + $this->backend->createUser($name1, 'pass1'); $this->backend->createUser($name2, 'pass2'); - + $this->assertTrue($this->backend->userExists($name1)); $this->assertTrue($this->backend->userExists($name2)); - + $this->assertSame($name1, $this->backend->checkPassword($name1, 'pass1')); $this->assertSame($name2, $this->backend->checkPassword($name2, 'pass2')); - + $this->assertFalse($this->backend->checkPassword($name1, 'pass2')); $this->assertFalse($this->backend->checkPassword($name2, 'pass1')); - + $this->assertFalse($this->backend->checkPassword($name1, 'dummy')); $this->assertFalse($this->backend->checkPassword($name2, 'foobar')); - + $this->backend->setPassword($name1, 'newpass1'); $this->assertFalse($this->backend->checkPassword($name1, 'pass1')); $this->assertSame($name1, $this->backend->checkPassword($name1, 'newpass1')); @@ -112,5 +112,4 @@ abstract class Test_User_Backend extends PHPUnit_Framework_TestCase { $result = $this->backend->getDisplayNames('bar'); $this->assertSame(2, count($result)); } - } diff --git a/tests/lib/user/database.php b/tests/lib/user/database.php index a8e497720c2..3a6be1ceee5 100644 --- a/tests/lib/user/database.php +++ b/tests/lib/user/database.php @@ -21,22 +21,27 @@ */ class Test_User_Database extends Test_User_Backend { + /** @var array */ + private $users; + public function getUser() { $user = parent::getUser(); $this->users[]=$user; return $user; } - - public function setUp() { + + protected function setUp() { + parent::setUp(); $this->backend=new OC_User_Database(); } - - public function tearDown() { + + protected function tearDown() { if(!isset($this->users)) { return; } foreach($this->users as $user) { $this->backend->deleteUser($user); } + parent::tearDown(); } } diff --git a/tests/lib/user/dummy.php b/tests/lib/user/dummy.php index e417fd97603..fcc921de4b1 100644 --- a/tests/lib/user/dummy.php +++ b/tests/lib/user/dummy.php @@ -21,7 +21,8 @@ */ class Test_User_Dummy extends Test_User_Backend { - public function setUp() { + protected function setUp() { + parent::setUp(); $this->backend=new OC_User_Dummy(); } } diff --git a/tests/lib/user/manager.php b/tests/lib/user/manager.php index 15b28e61bd5..c825ec05775 100644 --- a/tests/lib/user/manager.php +++ b/tests/lib/user/manager.php @@ -9,7 +9,7 @@ namespace Test\User; -class Manager extends \PHPUnit_Framework_TestCase { +class Manager extends \Test\TestCase { public function testUserExistsSingleBackendExists() { /** * @var \OC_User_Dummy | \PHPUnit_Framework_MockObject_MockObject $backend diff --git a/tests/lib/user/session.php b/tests/lib/user/session.php index 5126049d77f..8d9d024197c 100644 --- a/tests/lib/user/session.php +++ b/tests/lib/user/session.php @@ -12,7 +12,7 @@ namespace Test\User; use OC\Session\Memory; use OC\User\User; -class Session extends \PHPUnit_Framework_TestCase { +class Session extends \Test\TestCase { public function testGetUser() { $session = $this->getMock('\OC\Session\Memory', array(), array('')); $session->expects($this->once()) diff --git a/tests/lib/user/user.php b/tests/lib/user/user.php index 7a1db861c98..6aa7243a75a 100644 --- a/tests/lib/user/user.php +++ b/tests/lib/user/user.php @@ -12,7 +12,7 @@ namespace Test\User; use OC\AllConfig; use OC\Hooks\PublicEmitter; -class User extends \PHPUnit_Framework_TestCase { +class User extends \Test\TestCase { public function testDisplayName() { /** * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend diff --git a/tests/lib/util.php b/tests/lib/util.php index 9a3185b3f79..6de599b070e 100644 --- a/tests/lib/util.php +++ b/tests/lib/util.php @@ -6,7 +6,7 @@ * See the COPYING-README file. */ -class Test_Util extends PHPUnit_Framework_TestCase { +class Test_Util extends \Test\TestCase { public function testGetVersion() { $version = \OC_Util::getVersion(); $this->assertTrue(is_array($version)); diff --git a/tests/lib/utilcheckserver.php b/tests/lib/utilcheckserver.php index be5596c1900..bb9b7a24452 100644 --- a/tests/lib/utilcheckserver.php +++ b/tests/lib/utilcheckserver.php @@ -9,7 +9,7 @@ /** * Tests for server check functions */ -class Test_Util_CheckServer extends PHPUnit_Framework_TestCase { +class Test_Util_CheckServer extends \Test\TestCase { private $datadir; @@ -32,16 +32,19 @@ class Test_Util_CheckServer extends PHPUnit_Framework_TestCase { return $config; } - public function setUp() { + protected function setUp() { + parent::setUp(); + $this->datadir = \OC_Helper::tmpFolder(); file_put_contents($this->datadir . '/.ocdata', ''); \OC::$server->getSession()->set('checkServer_succeeded', false); } - public function tearDown() { + protected function tearDown() { // clean up @unlink($this->datadir . '/.ocdata'); + parent::tearDown(); } /** @@ -138,6 +141,10 @@ class Test_Util_CheckServer extends PHPUnit_Framework_TestCase { * Tests an error is given when the datadir is not writable */ public function testDataDirNotWritable() { + if (\OC_Util::runningOnWindows()) { + $this->markTestSkipped('[Windows] chmod() does not work as intended on Windows.'); + } + chmod($this->datadir, 0300); $result = \OC_Util::checkServer($this->getConfig(array( 'installed' => true, diff --git a/tests/lib/vobject.php b/tests/lib/vobject.php index db5b0f99f06..6fabf30e48f 100644 --- a/tests/lib/vobject.php +++ b/tests/lib/vobject.php @@ -6,9 +6,11 @@ * See the COPYING-README file. */ -class Test_VObject extends PHPUnit_Framework_TestCase { +class Test_VObject extends \Test\TestCase { + + protected function setUp() { + parent::setUp(); - public function setUp() { Sabre\VObject\Property::$classMap['SUMMARY'] = 'OC\VObject\StringProperty'; Sabre\VObject\Property::$classMap['ORG'] = 'OC\VObject\CompoundProperty'; } diff --git a/tests/phpunit-autotest.xml b/tests/phpunit-autotest.xml index 3805bb1ac79..9fba824bc7d 100644 --- a/tests/phpunit-autotest.xml +++ b/tests/phpunit-autotest.xml @@ -9,6 +9,7 @@ <testsuite name='ownCloud'> <directory suffix='.php'>lib/</directory> <directory suffix='.php'>settings/</directory> + <directory suffix='.php'>core/</directory> <file>apps.php</file> </testsuite> <!-- filters for code coverage --> @@ -38,11 +39,6 @@ </filter> <listeners> <listener class="StartSessionListener" file="startsessionlistener.php" /> - <listener class="TestCleanupListener" file="testcleanuplistener.php"> - <arguments> - <string>detail</string> - </arguments> - </listener> </listeners> </phpunit> diff --git a/tests/phpunit.xml.dist b/tests/phpunit.xml.dist index 21c63ea0469..95abe473965 100644 --- a/tests/phpunit.xml.dist +++ b/tests/phpunit.xml.dist @@ -2,6 +2,8 @@ <phpunit bootstrap="bootstrap.php"> <testsuite name='ownCloud'> <directory suffix='.php'>lib/</directory> + <directory suffix='.php'>settings/</directory> + <directory suffix='.php'>core/</directory> <file>apps.php</file> </testsuite> <!-- filters for code coverage --> diff --git a/tests/preseed-config.php b/tests/preseed-config.php index 3fd5b3cb7fc..3f41573bf29 100644 --- a/tests/preseed-config.php +++ b/tests/preseed-config.php @@ -1,22 +1,21 @@ <?php $CONFIG = array ( - "appstoreenabled" => false, - 'apps_paths' => - array ( - 0 => - array ( - 'path' => OC::$SERVERROOT.'/apps', - 'url' => '/apps', - 'writable' => true, - ), - 1 => - array ( - 'path' => OC::$SERVERROOT.'/apps2', - 'url' => '/apps2', - 'writable' => false, - ) - ), - + "appstoreenabled" => false, + 'apps_paths' => + array ( + 0 => + array ( + 'path' => OC::$SERVERROOT.'/apps', + 'url' => '/apps', + 'writable' => true, + ), + 1 => + array ( + 'path' => OC::$SERVERROOT.'/apps2', + 'url' => '/apps2', + 'writable' => false, + ) + ), ); if(substr(strtolower(PHP_OS), 0, 3) == "win") { diff --git a/tests/settings/controller/mailsettingscontrollertest.php b/tests/settings/controller/mailsettingscontrollertest.php index ff3d1d93a1b..f6ebade7b17 100644 --- a/tests/settings/controller/mailsettingscontrollertest.php +++ b/tests/settings/controller/mailsettingscontrollertest.php @@ -14,11 +14,13 @@ use \OC\Settings\Application; /** * @package OC\Settings\Controller */ -class MailSettingscontrollerTest extends \PHPUnit_Framework_TestCase { +class MailSettingsControllerTest extends \Test\TestCase { private $container; protected function setUp() { + parent::setUp(); + $app = new Application(); $this->container = $app->getContainer(); $this->container['Config'] = $this->getMockBuilder('\OCP\IConfig') @@ -147,6 +149,12 @@ class MailSettingscontrollerTest extends \PHPUnit_Framework_TestCase { } public function testSendTestMail() { + /** + * FIXME: Disabled due to missing DI on mail class. + * TODO: Re-enable when https://github.com/owncloud/core/pull/12085 is merged. + */ + $this->markTestSkipped('Disable test until OC_Mail is rewritten.'); + $user = $this->getMockBuilder('\OC\User\User') ->disableOriginalConstructor() ->getMock(); diff --git a/tests/settings/controller/securitysettingscontrollertest.php b/tests/settings/controller/securitysettingscontrollertest.php new file mode 100644 index 00000000000..d89e4932368 --- /dev/null +++ b/tests/settings/controller/securitysettingscontrollertest.php @@ -0,0 +1,138 @@ +<?php +/** + * @author Lukas Reschke + * @copyright 2014 Lukas Reschke lukas@owncloud.com + * + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ +namespace OC\Settings\Controller; + +use \OC\Settings\Application; + +/** + * @package OC\Settings\Controller + */ +class SecuritySettingsControllerTest extends \PHPUnit_Framework_TestCase { + + /** @var \OCP\AppFramework\IAppContainer */ + private $container; + + /** @var SecuritySettingsController */ + private $securitySettingsController; + + protected function setUp() { + $app = new Application(); + $this->container = $app->getContainer(); + $this->container['Config'] = $this->getMockBuilder('\OCP\IConfig') + ->disableOriginalConstructor()->getMock(); + $this->container['AppName'] = 'settings'; + $this->securitySettingsController = $this->container['SecuritySettingsController']; + } + + + public function testEnforceSSLEmpty() { + $this->container['Config'] + ->expects($this->once()) + ->method('setSystemValue') + ->with('forcessl', false); + + $response = $this->securitySettingsController->enforceSSL(); + $expectedResponse = array('status' => 'success'); + + $this->assertSame($expectedResponse, $response); + } + + public function testEnforceSSL() { + $this->container['Config'] + ->expects($this->once()) + ->method('setSystemValue') + ->with('forcessl', true); + + $response = $this->securitySettingsController->enforceSSL(true); + $expectedResponse = array('status' => 'success'); + + $this->assertSame($expectedResponse, $response); + } + + public function testEnforceSSLInvalid() { + $this->container['Config'] + ->expects($this->exactly(0)) + ->method('setSystemValue'); + + $response = $this->securitySettingsController->enforceSSL('blah'); + $expectedResponse = array('status' => 'error'); + + $this->assertSame($expectedResponse, $response); + } + + public function testEnforceSSLForSubdomainsEmpty() { + $this->container['Config'] + ->expects($this->once()) + ->method('setSystemValue') + ->with('forceSSLforSubdomains', false); + + $response = $this->securitySettingsController->enforceSSLForSubdomains(); + $expectedResponse = array('status' => 'success'); + + $this->assertSame($expectedResponse, $response); + } + + public function testEnforceSSLForSubdomains() { + $this->container['Config'] + ->expects($this->once()) + ->method('setSystemValue') + ->with('forceSSLforSubdomains', true); + + $response = $this->securitySettingsController->enforceSSLForSubdomains(true); + $expectedResponse = array('status' => 'success'); + + $this->assertSame($expectedResponse, $response); + } + + public function testEnforceSSLForSubdomainsInvalid() { + $this->container['Config'] + ->expects($this->exactly(0)) + ->method('setSystemValue'); + + $response = $this->securitySettingsController->enforceSSLForSubdomains('blah'); + $expectedResponse = array('status' => 'error'); + + $this->assertSame($expectedResponse, $response); + } + + public function testTrustedDomainsWithExistingValues() { + $this->container['Config'] + ->expects($this->once()) + ->method('setSystemValue') + ->with('trusted_domains', array('owncloud.org', 'owncloud.com', 'newdomain.com')); + $this->container['Config'] + ->expects($this->once()) + ->method('getSystemValue') + ->with('trusted_domains') + ->will($this->returnValue(array('owncloud.org', 'owncloud.com'))); + + $response = $this->securitySettingsController->trustedDomains('newdomain.com'); + $expectedResponse = array('status' => 'success'); + + $this->assertSame($expectedResponse, $response); + } + + public function testTrustedDomainsEmpty() { + $this->container['Config'] + ->expects($this->once()) + ->method('setSystemValue') + ->with('trusted_domains', array('newdomain.com')); + $this->container['Config'] + ->expects($this->once()) + ->method('getSystemValue') + ->with('trusted_domains') + ->will($this->returnValue('')); + + $response = $this->securitySettingsController->trustedDomains('newdomain.com'); + $expectedResponse = array('status' => 'success'); + + $this->assertSame($expectedResponse, $response); + } +} diff --git a/tests/testcleanuplistener.php b/tests/testcleanuplistener.php deleted file mode 100644 index 7b442bbd4f7..00000000000 --- a/tests/testcleanuplistener.php +++ /dev/null @@ -1,176 +0,0 @@ -<?php -/** - * Copyright (c) 2013 Vincent Petry <pvince81@owncloud.com> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - -/** - * Detects tests that didn't clean up properly, show a warning, then clean up after them. - */ -class TestCleanupListener implements PHPUnit_Framework_TestListener { - private $verbosity; - - public function __construct($verbosity = 'verbose') { - $this->verbosity = $verbosity; - } - - public function addError(PHPUnit_Framework_Test $test, Exception $e, $time) { - } - - public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time) { - } - - public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time) { - } - - public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time) { - } - - public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time) { - } - - public function startTest(PHPUnit_Framework_Test $test) { - } - - public function endTest(PHPUnit_Framework_Test $test, $time) { - } - - public function startTestSuite(PHPUnit_Framework_TestSuite $suite) { - } - - public function endTestSuite(PHPUnit_Framework_TestSuite $suite) { - // don't clean up the test environment if a data provider finished - if (!($suite instanceof PHPUnit_Framework_TestSuite_DataProvider)) { - if ($this->cleanStorages() && $this->isShowSuiteWarning()) { - printf("TestSuite '%s': Did not clean up storages\n", $suite->getName()); - } - if ($this->cleanFileCache() && $this->isShowSuiteWarning()) { - printf("TestSuite '%s': Did not clean up file cache\n", $suite->getName()); - } - if ($this->cleanStrayDataFiles() && $this->isShowSuiteWarning()) { - printf("TestSuite '%s': Did not clean up data dir\n", $suite->getName()); - } - if ($this->cleanStrayHooks() && $this->isShowSuiteWarning()) { - printf("TestSuite '%s': Did not clean up hooks\n", $suite->getName()); - } - if ($this->cleanProxies() && $this->isShowSuiteWarning()) { - printf("TestSuite '%s': Did not clean up proxies\n", $suite->getName()); - } - } - } - - private function isShowSuiteWarning() { - return $this->verbosity === 'suite' || $this->verbosity === 'detail'; - } - - private function isShowDetail() { - return $this->verbosity === 'detail'; - } - - /** - * @param string $dir - */ - private function unlinkDir($dir) { - if ($dh = @opendir($dir)) { - while (($file = readdir($dh)) !== false) { - if ($file === '..' || $file === '.') { - continue; - } - $path = $dir . '/' . $file; - if (is_dir($path)) { - $this->unlinkDir($path); - } - else { - @unlink($path); - } - } - closedir($dh); - } - @rmdir($dir); - } - - private function cleanStrayDataFiles() { - $knownEntries = array( - 'owncloud.log' => true, - 'owncloud.db' => true, - '.ocdata' => true, - '..' => true, - '.' => true - ); - $datadir = \OC_Config::getValue('datadirectory', \OC::$SERVERROOT . '/data'); - $entries = array(); - if ($dh = opendir($datadir)) { - while (($file = readdir($dh)) !== false) { - if (!isset($knownEntries[$file])) { - $entries[] = $file; - } - } - closedir($dh); - } - - if (count($entries) > 0) { - foreach ($entries as $entry) { - $this->unlinkDir($datadir . '/' . $entry); - if ($this->isShowDetail()) { - printf("Stray datadir entry: %s\n", $entry); - } - } - return true; - } - - return false; - } - - private function cleanStorages() { - $sql = 'DELETE FROM `*PREFIX*storages`'; - $query = \OC_DB::prepare( $sql ); - $result = $query->execute(); - if ($result > 0) { - return true; - } - return false; - } - - private function cleanFileCache() { - $sql = 'DELETE FROM `*PREFIX*filecache`'; - $query = \OC_DB::prepare( $sql ); - $result = $query->execute(); - if ($result > 0) { - return true; - } - return false; - } - - private function cleanStrayHooks() { - $hasHooks = false; - $hooks = OC_Hook::getHooks(); - if (!$hooks || sizeof($hooks) === 0) { - return false; - } - - foreach ($hooks as $signalClass => $signals) { - if (sizeof($signals)) { - foreach ($signals as $signalName => $handlers ) { - if (sizeof($handlers) > 0) { - $hasHooks = true; - OC_Hook::clear($signalClass, $signalName); - if ($this->isShowDetail()) { - printf("Stray hook: \"%s\" \"%s\"\n", $signalClass, $signalName); - } - } - } - } - } - return $hasHooks; - } - - private function cleanProxies() { - $proxies = OC_FileProxy::getProxies(); - OC_FileProxy::clearProxies(); - // reenable in case some test failed to reenable them - OC_FileProxy::$enabled = true; - return count($proxies) > 0; - } -} |