diff --git a/apps/files/js/fileactions.js b/apps/files/js/fileactions.js
index 871a2149c883241f64292fd24bae4767f6eacf7e..67125f1570f46852569ad968a9609d6f80eab1dd 100644
--- a/apps/files/js/fileactions.js
+++ b/apps/files/js/fileactions.js
@@ -617,7 +617,16 @@
 
 			this.registerAction({
 				name: 'Delete',
-				displayName: t('files', 'Delete'),
+				displayName: function(context) {
+					var mountType = context.$file.attr('data-mounttype');
+					var deleteTitle = t('files', 'Delete');
+					if (mountType === 'external-root') {
+						deleteTitle = t('files', 'Disconnect storage');
+					} else if (mountType === 'shared-root') {
+						deleteTitle = t('files', 'Unshare');
+					}
+					return deleteTitle;
+				},
 				mime: 'all',
 				order: 1000,
 				// permission is READ because we show a hint instead if there is no permission
@@ -668,8 +677,9 @@
 	 * @typedef {Object} OCA.Files.FileAction
 	 *
 	 * @property {String} name identifier of the action
-	 * @property {String} displayName display name of the action, defaults
-	 * to the name given in name property
+	 * @property {(String|OCA.Files.FileActions~displayNameFunction)} displayName
+	 * display name string for the action, or function that returns the display name.
+	 * Defaults to the name given in name property
 	 * @property {String} mime mime type
 	 * @property {int} permissions permissions
 	 * @property {(Function|String)} icon icon path to the icon or function
@@ -702,6 +712,16 @@
 	 * @return {Object} jQuery link object
 	 */
 
+	/**
+	 * Display name function for actions.
+	 * The function returns the display name of the action using
+	 * the given context information..
+	 *
+	 * @callback OCA.Files.FileActions~displayNameFunction
+	 * @param {OCA.Files.FileActionContext} context action context
+	 * @return {String} display name
+	 */
+
 	/**
 	 * Action handler function for file actions
 	 *
diff --git a/apps/files/js/fileactionsmenu.js b/apps/files/js/fileactionsmenu.js
index 67cbb48c9651988347410f5ea81462baa02a2cec..9e51d8f1f1fe58bf16da97fc9111b840a3cbcfd1 100644
--- a/apps/files/js/fileactionsmenu.js
+++ b/apps/files/js/fileactionsmenu.js
@@ -81,6 +81,7 @@
 		 * Renders the menu with the currently set items
 		 */
 		render: function() {
+			var self = this;
 			var fileActions = this._context.fileActions;
 			var actions = fileActions.getActions(
 				fileActions.getCurrentMimeType(),
@@ -100,6 +101,13 @@
 					(!defaultAction || actionSpec.name !== defaultAction.name)
 				);
 			});
+			items = _.map(items, function(item) {
+				if (_.isFunction(item.displayName)) {
+					item = _.extend({}, item);
+					item.displayName = item.displayName(self._context);
+				}
+				return item;
+			});
 			items = items.sort(function(actionA, actionB) {
 				var orderA = actionA.order || 0;
 				var orderB = actionB.order || 0;
diff --git a/apps/files/tests/js/fileactionsmenuSpec.js b/apps/files/tests/js/fileactionsmenuSpec.js
index 747a746a602522d5aa915d9baee0f489bc32a93e..3028db2b3ac675ec9e735e2768f5de5a0841a6c8 100644
--- a/apps/files/tests/js/fileactionsmenuSpec.js
+++ b/apps/files/tests/js/fileactionsmenuSpec.js
@@ -20,7 +20,7 @@
 */
 
 describe('OCA.Files.FileActionsMenu tests', function() {
-	var fileList, fileActions, menu, actionStub, $tr;
+	var fileList, fileActions, menu, actionStub, menuContext, $tr;
 
 	beforeEach(function() {
 		// init horrible parameters
@@ -80,7 +80,7 @@ describe('OCA.Files.FileActionsMenu tests', function() {
 		};
 		$tr = fileList.add(fileData);
 
-		var menuContext = {
+		menuContext = {
 			$file: $tr,
 			fileList: fileList,
 			fileActions: fileActions,
@@ -189,6 +189,22 @@ describe('OCA.Files.FileActionsMenu tests', function() {
 			var yactionIndex = menu.$el.find('a[data-action=Yaction]').closest('li').index();
 			expect(wactionIndex).toBeLessThan(yactionIndex);
 		});
+		it('calls displayName function', function() {
+			var displayNameStub = sinon.stub().returns('Test');
+
+			fileActions.registerAction({
+				name: 'Something',
+				displayName: displayNameStub,
+				mime: 'text/plain',
+				permissions: OC.PERMISSION_ALL
+			});
+
+			menu.render();
+
+			expect(displayNameStub.calledOnce).toEqual(true);
+			expect(displayNameStub.calledWith(menuContext)).toEqual(true);
+			expect(menu.$el.find('a[data-action=Something]').text()).toEqual('Test');
+		});
 	});
 
 	describe('action handler', function() {