Browse Source

6.5.7 release

Gaudenz Alder 8 years ago
parent
commit
49c97d16b2
80 changed files with 2457 additions and 1051 deletions
  1. 8 0
      ChangeLog
  2. 1 1
      VERSION
  3. 5 5
      etc/mxgraph/mxClient.js
  4. 19 3
      src/com/mxgraph/io/vsdx/VsdxShape.java
  5. 1 5
      war/WEB-INF/appengine-web.xml
  6. 1 1
      war/cache.manifest
  7. 4 3
      war/electron.js
  8. 3 0
      war/index.html
  9. 227 226
      war/js/app.min.js
  10. 158 158
      war/js/atlas-viewer.min.js
  11. 225 224
      war/js/atlas.min.js
  12. 30 8
      war/js/diagramly/App.js
  13. 5 5
      war/js/diagramly/Dialogs.js
  14. 1 1
      war/js/diagramly/DriveRealtime.js
  15. 18 8
      war/js/diagramly/EditorUi.js
  16. 55 29
      war/js/diagramly/ElectronApp.js
  17. 1 0
      war/js/diagramly/Init.js
  18. 8 7
      war/js/diagramly/Menus.js
  19. 27 27
      war/js/embed-static.min.js
  20. 9 4
      war/js/mxgraph/Dialogs.js
  21. 20 1
      war/js/mxgraph/Graph.js
  22. 27 27
      war/js/reader.min.js
  23. 158 158
      war/js/viewer.min.js
  24. 6 1
      war/open.html
  25. BIN
      war/plugins/mind/handle-move.gif
  26. 487 0
      war/plugins/mind/mind.js
  27. 2 0
      war/resources/dia.txt
  28. 2 0
      war/resources/dia_am.txt
  29. 2 0
      war/resources/dia_ar.txt
  30. 2 0
      war/resources/dia_bg.txt
  31. 2 0
      war/resources/dia_bn.txt
  32. 2 0
      war/resources/dia_bs.txt
  33. 2 0
      war/resources/dia_ca.txt
  34. 151 149
      war/resources/dia_cs.txt
  35. 2 0
      war/resources/dia_da.txt
  36. 2 0
      war/resources/dia_de.txt
  37. 2 0
      war/resources/dia_el.txt
  38. 698 0
      war/resources/dia_eo.txt
  39. 2 0
      war/resources/dia_es.txt
  40. 2 0
      war/resources/dia_et.txt
  41. 2 0
      war/resources/dia_fa.txt
  42. 2 0
      war/resources/dia_fi.txt
  43. 2 0
      war/resources/dia_fil.txt
  44. 2 0
      war/resources/dia_fr.txt
  45. 2 0
      war/resources/dia_gu.txt
  46. 2 0
      war/resources/dia_he.txt
  47. 2 0
      war/resources/dia_hi.txt
  48. 2 0
      war/resources/dia_hr.txt
  49. 2 0
      war/resources/dia_hu.txt
  50. 2 0
      war/resources/dia_i18n.txt
  51. 2 0
      war/resources/dia_id.txt
  52. 2 0
      war/resources/dia_it.txt
  53. 2 0
      war/resources/dia_ja.txt
  54. 2 0
      war/resources/dia_kn.txt
  55. 2 0
      war/resources/dia_ko.txt
  56. 2 0
      war/resources/dia_lt.txt
  57. 2 0
      war/resources/dia_lv.txt
  58. 2 0
      war/resources/dia_ml.txt
  59. 2 0
      war/resources/dia_mr.txt
  60. 2 0
      war/resources/dia_ms.txt
  61. 2 0
      war/resources/dia_nl.txt
  62. 2 0
      war/resources/dia_no.txt
  63. 2 0
      war/resources/dia_pl.txt
  64. 2 0
      war/resources/dia_pt-br.txt
  65. 2 0
      war/resources/dia_pt.txt
  66. 2 0
      war/resources/dia_ro.txt
  67. 2 0
      war/resources/dia_ru.txt
  68. 2 0
      war/resources/dia_sk.txt
  69. 2 0
      war/resources/dia_sl.txt
  70. 2 0
      war/resources/dia_sr.txt
  71. 2 0
      war/resources/dia_sv.txt
  72. 2 0
      war/resources/dia_sw.txt
  73. 2 0
      war/resources/dia_ta.txt
  74. 2 0
      war/resources/dia_te.txt
  75. 2 0
      war/resources/dia_th.txt
  76. 2 0
      war/resources/dia_tr.txt
  77. 2 0
      war/resources/dia_uk.txt
  78. 2 0
      war/resources/dia_vi.txt
  79. 2 0
      war/resources/dia_zh-tw.txt
  80. 2 0
      war/resources/dia_zh.txt

+ 8 - 0
ChangeLog

@@ -1,3 +1,11 @@
+29-APR-2017: 6.5.7
+
+- Fixes default and button labels for lost changes dialog
+- Fixes event handling for overlapping edge handles
+- Adds library export to local storage
+- Ignores auth files in local storage picker
+- Uses mxGraph 3.7.3 beta 3
+
 27-APR-2017: 6.5.6
 
 - Adds arrows and textbox to general sidebar

+ 1 - 1
VERSION

@@ -1 +1 @@
-6.5.6
+6.5.7

File diff suppressed because it is too large
+ 5 - 5
etc/mxgraph/mxClient.js


+ 19 - 3
src/com/mxgraph/io/vsdx/VsdxShape.java

@@ -27,6 +27,7 @@ import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 
+import com.mxgraph.io.mxVsdxCodec;
 import com.mxgraph.io.vsdx.theme.Color;
 import com.mxgraph.io.vsdx.theme.QuickStyleVals;
 import com.mxgraph.model.mxCell;
@@ -2231,11 +2232,14 @@ public class VsdxShape extends Shape
 			//image should be set for the parent shape only
 			styleMap.remove("image");
 			//styleMap.put("html", "1");
-
+			
+			double rotation = getRotation();
+			
 			if (txtAngleV != 0)
 			{
-				double labRot = txtAngleV * 180 / Math.PI;
-				labRot = Math.round((labRot + getRotation()) * 100.0) / 100.0;
+				double labRot = 360 - Math.toDegrees(txtAngleV);
+				
+				labRot = Math.round(((labRot + rotation) % 360.0) * 100.0) / 100.0;
 
 				if (labRot != 0.0)
 				{
@@ -2249,6 +2253,18 @@ public class VsdxShape extends Shape
 			double y = parent.getGeometry().getHeight() - (txtPinYV + txtHV - txtLocPinYV);
 			double x = txtPinXV - txtLocPinXV;
 
+			
+			
+			if (rotation > 0)
+			{
+				mxGeometry tmpGeo = new mxGeometry(x, y, txtWV, txtHV);
+				mxGeometry pgeo = parent.getGeometry();
+				double hw = pgeo.getWidth() / 2, hh = pgeo.getHeight() / 2;
+				mxVsdxCodec.rotatedPoint(tmpGeo, rotation, hw, hh);
+				x = tmpGeo.getX();
+				y = tmpGeo.getY();
+			}
+			
 			mxCell v1 = (mxCell) graph.insertVertex(parent, null, textLabel, x, y, txtWV, txtHV, style + ";html=1;");
 
 			return v1;

+ 1 - 5
war/WEB-INF/appengine-web.xml

@@ -25,11 +25,7 @@
     	</include>
     	<include path="/**" />
 	</static-files>
-	
-	<resource-files>
-        <exclude path="/node_modules/**" />
-    </resource-files>
-	
+
 	<instance-class>F2</instance-class>
 	<automatic-scaling>
     	<min-idle-instances>1</min-idle-instances>

+ 1 - 1
war/cache.manifest

@@ -1,7 +1,7 @@
 CACHE MANIFEST
 
 # THIS FILE WAS GENERATED. DO NOT MODIFY!
-# 04/27/2017 09:16 AM
+# 04/29/2017 11:28 AM
 
 app.html
 index.html?offline=1

+ 4 - 3
war/electron.js

@@ -42,6 +42,7 @@ function createWindow (opt = {}) {
 			'db': 0,
 			'gapi': 0,
 			'od': 0,
+			'gh': 0,
 			'analytics': 0,
 			'picker': 0,
 			'mode': 'device',
@@ -72,11 +73,11 @@ function createWindow (opt = {}) {
 							win,
 							{
 								type: 'question',
-								buttons: ['Yes', 'No'],
+								buttons: ['Cancel', 'Discard Changes'],
 								title: 'Confirm',
-								message: 'All Changes will be lost' //mxResources.get('allChangesLost')
+								message: 'The document has unsaved changes. Do you really want to quit without saving?' //mxResources.get('allChangesLost')
 							})
-						if (choice === 0) {
+						if (choice === 1) {
 							win.destroy()
 						}
 					} else {

+ 3 - 0
war/index.html

@@ -294,6 +294,9 @@
 			if (document.location.protocol == 'file:')
 			{
 				mxDevUrl = '../../mxgraph2';
+				
+				// Forces includes for dev environment in node.js
+				mxForceIncludes = true;
 			}
 
 			var geBasePath = mxDevUrl + '/javascript/examples/grapheditor/www/js';

File diff suppressed because it is too large
+ 227 - 226
war/js/app.min.js


File diff suppressed because it is too large
+ 158 - 158
war/js/atlas-viewer.min.js


File diff suppressed because it is too large
+ 225 - 224
war/js/atlas.min.js


+ 30 - 8
war/js/diagramly/App.js

@@ -71,7 +71,7 @@ App = function(editor, container, lightbox)
 	// Sets help link for placeholders
 	if (!this.isOffline())
 	{
-		EditDataDialog.placeholderHelpLink = 'https://desk.draw.io/support/solutions/articles/16000051979-how-to-work-with-placeholders-';
+		EditDataDialog.placeholderHelpLink = 'https://desk.draw.io/support/solutions/articles/16000051979';
 	}
 
 	// Gets recent colors from settings
@@ -183,7 +183,8 @@ App.pluginRegistry = {'4xAKTrabTpTzahoLthkwPNUn': '/plugins/explore.js',
 	'doors': '/plugins/doors.js', 'electron': 'plugins/electron.js',
 	'number': '/plugins/number.js', 'sql': '/plugins/sql.js',
 	'props': '/plugins/props.js', 'text': '/plugins/text.js',
-	'anim': '/plugins/animation.js', 'update': '/plugins/update.js'};
+	'anim': '/plugins/animation.js', 'update': '/plugins/update.js',
+	'mind': '/plugins/mind/mind.js'};
 
 /**
  * Function: authorize
@@ -2958,7 +2959,7 @@ App.prototype.saveFile = function(forceDialog)
 				this.hideDialog();
 			}), mxResources.get('saveAs'), mxResources.get('download'), null, null, allowTab,
 				(this.isOffline()) ? null :
-				'https://desk.draw.io/support/solutions/articles/16000042485-what-file-extensions-are-supported-',
+				'https://desk.draw.io/support/solutions/articles/16000042485',
 				true, rowLimit);
 			this.showDialog(dlg.container, 460, (serviceCount > rowLimit) ? 390 : 270, true, true);
 			dlg.init();
@@ -3296,7 +3297,8 @@ App.prototype.fileCreated = function(file, libs, replace, done)
 				}
 				else
 				{
-					this.confirm(mxResources.get('allChangesLost'), fn3);
+					this.confirm(mxResources.get('allChangesLost'), null, fn3,
+						mxResources.get('cancel'), mxResources.get('discardChanges'));
 				}
 			});
 
@@ -3585,7 +3587,8 @@ App.prototype.loadFile = function(id, sameWindow, file)
 		}
 		else
 		{
-			this.confirm(mxResources.get('allChangesLost'), fn2);
+			this.confirm(mxResources.get('allChangesLost'), null, fn2,
+				mxResources.get('cancel'), mxResources.get('discardChanges'));
 		}
 	});
 	
@@ -4088,6 +4091,22 @@ App.prototype.exportFile = function(data, filename, mimeType, base64Encoded, mod
 			}), true, folderId, base64Encoded);
 		}
 	}
+	else if (mode == App.MODE_BROWSER)
+	{
+		var fn = mxUtils.bind(this, function()
+		{
+			localStorage.setItem(filename, data);
+		});
+		
+		if (localStorage.getItem(filename) == null)
+		{
+			fn();
+		}
+		else
+		{
+			this.confirm(mxResources.get('replaceIt', [filename]), fn);
+		}
+	}
 };
 
 /**
@@ -4934,7 +4953,8 @@ App.prototype.updateUserElement = function()
 								}
 								else
 								{
-									this.confirm(mxResources.get('allChangesLost'), doLogout);
+									this.confirm(mxResources.get('allChangesLost'), null, doLogout,
+										mxResources.get('cancel'), mxResources.get('discardChanges'));
 								}
 							}
 							else
@@ -4964,7 +4984,8 @@ App.prototype.updateUserElement = function()
 								}
 								else
 								{
-									this.confirm(mxResources.get('allChangesLost'), doLogout);
+									this.confirm(mxResources.get('allChangesLost'), null, doLogout,
+										mxResources.get('cancel'), mxResources.get('discardChanges'));
 								}
 							}
 							else
@@ -4994,7 +5015,8 @@ App.prototype.updateUserElement = function()
 								}
 								else
 								{
-									this.confirm(mxResources.get('allChangesLost'), doLogout);
+									this.confirm(mxResources.get('allChangesLost'), null, doLogout,
+										mxResources.get('cancel'), mxResources.get('discardChanges'));
 								}
 							}
 							else

+ 5 - 5
war/js/diagramly/Dialogs.js

@@ -4190,14 +4190,14 @@ PrintDialog.prototype.create = function(editorUi, titleText)
 	{
 		var helpBtn = mxUtils.button(mxResources.get('help'), function()
 		{
-			window.open('https://desk.draw.io/support/solutions/articles/16000048947-how-to-print-');
+			window.open('https://desk.draw.io/support/solutions/articles/16000048947');
 		});
 		
 		helpBtn.className = 'geBtn';
 		buttons.appendChild(helpBtn);
 	}
 	
-	if (!mxClient.IS_CHROMEAPP)
+	if (PrintDialog.previewEnabled)
 	{
 		var previewBtn = mxUtils.button(mxResources.get('preview'), function()
 		{
@@ -4208,7 +4208,7 @@ PrintDialog.prototype.create = function(editorUi, titleText)
 		buttons.appendChild(previewBtn);
 	}
 	
-	var printBtn = mxUtils.button(mxResources.get((mxClient.IS_CHROMEAPP) ? 'ok' : 'print'), function()
+	var printBtn = mxUtils.button(mxResources.get((!PrintDialog.previewEnabled) ? 'ok' : 'print'), function()
 	{
 		editorUi.hideDialog();
 		preview(true);
@@ -7506,7 +7506,7 @@ var LibraryDialog = function(editorUi, name, library, initialImages, file, mode)
 	    	
 	    	if (editorUi.isLocalFileSave())
 	    	{
-	    		editorUi.saveLocalFile(data, filename, 'text/xml');
+	    		editorUi.saveLocalFile(data, filename, 'text/xml', null, null, true);
 	    	}
 	    	else
 	    	{
@@ -7725,7 +7725,7 @@ var EditShapeDialog = function(editorUi, cell, title, w, h)
 	{
 		var helpBtn = mxUtils.button(mxResources.get('help'), function()
 		{
-			window.open('https://desk.draw.io/support/solutions/articles/16000052874-how-to-create-and-edit-shapes-');
+			window.open('https://desk.draw.io/support/solutions/articles/16000052874');
 		});
 		
 		helpBtn.className = 'geBtn';

+ 1 - 1
war/js/diagramly/DriveRealtime.js

@@ -411,7 +411,7 @@ DriveRealtime.prototype.start = function()
 					}), null, mxResources.get('show'), mxUtils.bind(this, function()
 					{
 						// Show FAQ entry
-						window.open('https://desk.draw.io/support/solutions/articles/16000041695-what-does-the-error-message-file-nearly-full-please-see-faq-mean');
+						window.open('https://desk.draw.io/support/solutions/articles/16000041695');
 					})
 				);
 			}

+ 18 - 8
war/js/diagramly/EditorUi.js

@@ -78,7 +78,13 @@
 	/**
 	 * Switch to disable logging for mode and search terms.
 	 */
-	EditorUi.prototype.enableLogging = true;
+	EditorUi.prototype.enableLogging = /.*\.draw\.io$/.test(window.location.hostname);
+
+	/**
+	 * Specifies if PDF export should be done via print dialog. Default is
+	 * false which uses the PhantomJS backend to create the PDF.
+	 */
+	EditorUi.prototype.printPdfExport = false;
 	
 	/**
 	 * Specifies if PDF export with pages is enabled.
@@ -1664,7 +1670,8 @@
 				
 				if (saveBtn != null)
 				{
-					this.confirm(mxResources.get('allChangesLost'), fn);
+					this.confirm(mxResources.get('allChangesLost'), null, fn,
+						mxResources.get('cancel'), mxResources.get('discardChanges'));
 				}
 				else
 				{
@@ -2605,8 +2612,9 @@
 	 * @param {number} dx X-coordinate of the translation.
 	 * @param {number} dy Y-coordinate of the translation.
 	 */
-	EditorUi.prototype.saveLocalFile = function(data, filename, mimeType, base64Encoded, format)
+	EditorUi.prototype.saveLocalFile = function(data, filename, mimeType, base64Encoded, format, allowBrowser)
 	{
+		allowBrowser = (allowBrowser != null) ? allowBrowser : false;
 		var allowTab = !mxClient.IS_IOS || !navigator.standalone;
 		
 		var dlg = new CreateDialog(this, filename, mxUtils.bind(this, function(newTitle, mode)
@@ -2683,8 +2691,9 @@
 		}), mxUtils.bind(this, function()
 		{
 			this.hideDialog();
-		}), mxResources.get('saveAs'), mxResources.get('download'), false, false, allowTab, null, null, 4);
-		this.showDialog(dlg.container, 380, (this.getServiceCount(false) - 1 < 5) ? 270 : 390, true, true);
+		}), mxResources.get('saveAs'), mxResources.get('download'), false, allowBrowser, allowTab, null, null, (allowBrowser) ? 3 : 4);
+		this.showDialog(dlg.container, 380, (this.getServiceCount(allowBrowser) - 1 <
+			((allowBrowser) ? 4 : 5)) ? 270 : 390, true, true);
 		dlg.init();
 	};
 
@@ -3312,13 +3321,13 @@
 		div.appendChild(hd);
 		
 		var file = this.getCurrentFile();
-		var helpLink = 'https://desk.draw.io/support/solutions/articles/16000051941-how-to-publicly-publish-a-copy-of-your-draw-io-diagram';
+		var helpLink = 'https://desk.draw.io/support/solutions/articles/16000051941';
 		var dy = 0;
 		
 		if (file != null && file.constructor == window.DriveFile && !hideShare)
 		{
 			dy = 80;
-			helpLink = 'https://desk.draw.io/support/solutions/articles/16000039384-how-to-publicly-publish-a-copy-of-your-draw-io-diagram-stored-in-google-drive';
+			helpLink = 'https://desk.draw.io/support/solutions/articles/16000039384';
 			var hintSection = document.createElement('div');
 			hintSection.style.cssText = 'border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;';
 			
@@ -6754,7 +6763,8 @@
 				window.openFile.setData(data, name);
 				window.openWindow(this.getUrl(), null, mxUtils.bind(this, function()
 				{
-					this.confirm(mxResources.get('allChangesLost'), fn);
+					this.confirm(mxResources.get('allChangesLost'), null, fn,
+						mxResources.get('cancel'), mxResources.get('discardChanges'));
 				}));
 			}
 		}

+ 55 - 29
war/js/diagramly/ElectronApp.js

@@ -5,31 +5,74 @@ FeedbackDialog.feedbackUrl = 'https://log.draw.io/email';
 {
 	// Overrides default mode
 	App.mode = App.MODE_DEVICE;
-	
+
 	// Redirects printing to iframe to avoid document.write
-	PrintDialog.showPreview = function(preview, print)
+	var printDialogCreatePrintPreview = PrintDialog.createPrintPreview; 
+	
+	PrintDialog.createPrintPreview = function()
 	{
 		var iframe = document.createElement('iframe');
 		document.body.appendChild(iframe);
-		
+
+		var result = printDialogCreatePrintPreview.apply(this, arguments);
+		result.wnd = iframe.contentWindow;
+		result.iframe = iframe;
+				
 		// Workaround for lost gradients in print output
-		var getBaseUrl = mxSvgCanvas2D.prototype.getBaseUrl;
+		result.previousGetBaseUrl = mxSvgCanvas2D.prototype.getBaseUrl;
 		
 		mxSvgCanvas2D.prototype.getBaseUrl = function()
 		{
 			return '';
 		};
+		
+		return result;
+	};
+	
+	var oldWindowOpen = window.open;
+	window.open = function(url)
+	{
+		if (url != null && url.startsWith('http'))
+		{
+			const {shell} = require('electron');
+			shell.openExternal(url);
+		}
+		else
+		{
+			return oldWindowOpen(url);
+		}
+	}
 
-		// Renders print output into iframe and prints
-		var result = preview.open(null, iframe.contentWindow);
-		iframe.contentWindow.print();
-		iframe.parentNode.removeChild(iframe);
+	mxPrintPreview.prototype.addPageBreak = function(doc)
+	{
+		// Do nothing
+	};
+
+	mxPrintPreview.prototype.closeDocument = function()
+	{
+		var doc = this.wnd.document;
 		
-		mxSvgCanvas2D.prototype.getBaseUrl = getBaseUrl;
+		// Removes all event handlers in the print output
+		mxEvent.release(doc.body);
+	};
+	
+	PrintDialog.printPreview = function(preview)
+	{
+		if (preview.iframe != null)
+		{
+			preview.iframe.contentWindow.print();
+			preview.iframe.parentNode.removeChild(preview.iframe);
 		
-		return result;
+			mxSvgCanvas2D.prototype.getBaseUrl = preview.previousGetBaseUrl;
+			preview.iframe = null;
+		}
 	};
 	
+	PrintDialog.previewEnabled = false;
+	
+	// Enables PDF export via print
+	EditorUi.prototype.printPdfExport = true;
+	
 	var menusInit = Menus.prototype.init;
 	Menus.prototype.init = function()
 	{
@@ -61,7 +104,8 @@ FeedbackDialog.feedbackUrl = 'https://log.draw.io/email';
 
 		var editorUi = this;
 		var graph = this.editor.graph;
-
+		this.editor.autosave = false;
+		
 		global.__emt_isModified = e => {
 			if (this.getCurrentFile())
 				return this.getCurrentFile().isModified()
@@ -189,24 +233,6 @@ FeedbackDialog.feedbackUrl = 'https://log.draw.io/email';
 		editorUi.keyHandler.bindAction(78, true, 'new'); // Ctrl+N
 		editorUi.keyHandler.bindAction(79, true, 'open'); // Ctrl+O
 		
-		editorUi.actions.addAction('quickStart...', function()
-		{
-			const {shell} = require('electron');
-			shell.openExternal('https://www.youtube.com/watch?v=8OaMWa4R1SE&t=1');
-		});
-
-		this.actions.addAction('support...', function()
-		{
-			const {shell} = require('electron');
-			shell.openExternal('https://support.draw.io/display/DFCC/draw.io+for+Confluence+Cloud');
-		});
-		
-		editorUi.actions.addAction('userManual...', function()
-		{
-			const {shell} = require('electron');
-			shell.openExternal('https://support.draw.io/display/DO/Draw.io+Online+User+Manual');
-		});
-		
 		editorUi.actions.addAction('keyboardShortcuts...', function()
 		{
 			const electron = require('electron');

+ 1 - 0
war/js/diagramly/Init.js

@@ -82,6 +82,7 @@ window.mxLanguageMap = window.mxLanguageMap ||
 	'et' : 'Eesti',
 	'en' : 'English',
 	'es' : 'Español',
+	'eo' : 'Esperanto',
 	'fil' : 'Filipino',
 	'fr' : 'Français',
 	'it' : 'Italiano',

+ 8 - 7
war/js/diagramly/Menus.js

@@ -848,7 +848,7 @@
 				{
 					editorUi.spinner.stop();
 					
-					editorUi.showHtmlDialog(mxResources.get('create'), 'https://desk.draw.io/support/solutions/articles/16000042542-how-to-embed-html-',
+					editorUi.showHtmlDialog(mxResources.get('create'), 'https://desk.draw.io/support/solutions/articles/16000042542',
 						url, function(publicUrl, zoomEnabled, initialZoom, linkTarget, linkColor, fit, allPages, layers, lightbox, edit)
 					{
 						editorUi.createHtml(publicUrl, zoomEnabled, initialZoom, linkTarget, linkColor,
@@ -980,7 +980,7 @@
 					});
 				}
 			}, mxResources.get('formatSvg'), mxResources.get('image'),
-				true, 'https://desk.draw.io/support/solutions/articles/16000042548-how-to-embed-svg-');
+				true, 'https://desk.draw.io/support/solutions/articles/16000042548');
 		}));
 		
 		editorUi.actions.put('embedIframe', new Action(mxResources.get('iframe') + '...', function()
@@ -1134,7 +1134,8 @@
 				}
 				else
 				{
-					editorUi.confirm(mxResources.get('allChangesLost'), fn);
+					editorUi.confirm(mxResources.get('allChangesLost'), null, fn,
+						mxResources.get('cancel'), mxResources.get('discardChanges'));
 				}
 			});
 		}
@@ -1220,7 +1221,7 @@
 			menu.addSeparator(parent);
 
 			// Redirects export to PDF to print in Chrome App
-			if (mxClient.IS_CHROMEAPP)
+			if (editorUi.printPdfExport)
 			{
 				menu.addItem(mxResources.get('formatPdf') + '...', null, this.editorUi.actions.get('exportPdf').funct, parent);
 			}
@@ -2288,7 +2289,7 @@
 				
 				if (!editorUi.isOffline() || mxClient.IS_CHROMEAPP)
 				{
-					this.addLinkToItem(item, 'https://desk.draw.io/support/solutions/articles/16000042367-how-to-use-the-scratchpad-');
+					this.addLinkToItem(item, 'https://desk.draw.io/support/solutions/articles/16000042367');
 				}
 			}
 			
@@ -2320,7 +2321,7 @@
 			if (typeof(MathJax) !== 'undefined')
 			{
 				var item = this.addMenuItem(menu, 'mathematicalTypesetting', parent);
-				this.addLinkToItem(item, 'https://desk.draw.io/support/solutions/articles/16000032875-how-to-use-mathematical-typesetting-');
+				this.addLinkToItem(item, 'https://desk.draw.io/support/solutions/articles/16000032875');
 			}
 
 			this.addMenuItems(menu, ['autosave', '-', 'createShape', 'editDiagram'], parent);
@@ -2340,7 +2341,7 @@
 				
 				if (!editorUi.isOffline() || mxClient.IS_CHROMEAPP)
 				{
-					this.addLinkToItem(item, 'https://desk.draw.io/support/solutions/articles/16000046966-how-to-use-tags');
+					this.addLinkToItem(item, 'https://desk.draw.io/support/solutions/articles/16000046966');
 				}
 				
 				this.addMenuItems(menu, ['-', 'offline'], parent);

File diff suppressed because it is too large
+ 27 - 27
war/js/embed-static.min.js


+ 9 - 4
war/js/mxgraph/Dialogs.js

@@ -446,7 +446,7 @@ ColorDialog.addRecentColor = function(color, max)
 		mxUtils.remove(color, ColorDialog.recentColors);
 		ColorDialog.recentColors.splice(0, 0, color);
 		
-		if (ColorDialog.recentColors.length > max)
+		if (ColorDialog.recentColors.length >= max)
 		{
 			ColorDialog.recentColors.pop();
 		}
@@ -1133,8 +1133,8 @@ PrintDialog.prototype.create = function(editorUi)
 	{
 		td.appendChild(cancelBtn);
 	}
-	
-	if (!mxClient.IS_CHROMEAPP)
+
+	if (PrintDialog.previewEnabled)
 	{
 		var previewBtn = mxUtils.button(mxResources.get('preview'), function()
 		{
@@ -1145,7 +1145,7 @@ PrintDialog.prototype.create = function(editorUi)
 		td.appendChild(previewBtn);
 	}
 	
-	var printBtn = mxUtils.button(mxResources.get((mxClient.IS_CHROMEAPP) ? 'ok' : 'print'), function()
+	var printBtn = mxUtils.button(mxResources.get((!PrintDialog.previewEnabled) ? 'ok' : 'print'), function()
 	{
 		editorUi.hideDialog();
 		preview(true);
@@ -1228,6 +1228,11 @@ PrintDialog.createPrintPreview = function(graph, scale, pf, border, x0, y0, auto
 	return preview;
 };
 
+/**
+ * Specifies if the preview button should be enabled. Default is true.
+ */
+PrintDialog.previewEnabled = true;
+
 /**
  * Constructs a new filename dialog.
  */

+ 20 - 1
war/js/mxgraph/Graph.js

@@ -164,6 +164,17 @@ Graph = function(container, model, renderHint, stylesheet, themes)
 			mouseDown: function(sender, me) {},
 		    mouseMove: mxUtils.bind(this, function(sender, me)
 		    {
+		    	// Checks if any other handler is active
+		    	var handlerMap = this.selectionCellsHandler.handlers.map;
+		    	
+		    	for (var key in handlerMap)
+		    	{
+		    		if (handlerMap[key].index != null)
+		    		{
+		    			return;
+		    		}
+		    	}
+		    	
 		    	if (this.isEnabled() && !this.panningHandler.isActive() && !mxEvent.isControlDown(me.getEvent()) &&
 		    		!mxEvent.isShiftDown(me.getEvent()) && !mxEvent.isAltDown(me.getEvent()))
 		    	{
@@ -2800,6 +2811,14 @@ HoverIcons.prototype.drag = function(evt, x, y)
 	}
 };
 
+/**
+ *
+ */
+HoverIcons.prototype.getStateAt = function(state, x, y)
+{
+	return this.graph.view.getState(this.graph.getCellAt(x, y));
+};
+
 /**
  *
  */
@@ -2809,7 +2828,7 @@ HoverIcons.prototype.click = function(state, dir, me)
 	var x = me.getGraphX();
 	var y = me.getGraphY();
 	
-	var tmp = this.graph.view.getState(this.graph.getCellAt(x, y));
+	var tmp = this.getStateAt(state, x, y);
 	
 	if (tmp != null && this.graph.model.isEdge(tmp.cell) && !mxEvent.isControlDown(evt) &&
 		(tmp.getVisibleTerminalState(true) == state || tmp.getVisibleTerminalState(false) == state))

File diff suppressed because it is too large
+ 27 - 27
war/js/reader.min.js


File diff suppressed because it is too large
+ 158 - 158
war/js/viewer.min.js


+ 6 - 1
war/open.html

@@ -58,8 +58,13 @@
 			for (var i = 0; i < localStorage.length; i++)
 			{
 				var key = localStorage.key(i);
+				var value = localStorage.getItem(key);
 				
-				if (key.length > 0 && key.charAt(0) != '.' && key.substring(0, 21) != 'dropbox-auth:default:')
+				console.log('key', key, value);
+				
+				if (key.length > 0 && key.charAt(0) != '.' && value.length > 0 &&
+					(value.substring(0, 8) === '<mxfile ' ||
+					value.substring(0, 11) === '<mxlibrary>'))
 				{
 					keys.push(key);
 				}

BIN
war/plugins/mind/handle-move.gif


+ 487 - 0
war/plugins/mind/mind.js

@@ -0,0 +1,487 @@
+/**
+ * Mindmaps plugin.
+ */
+Draw.loadPlugin(function(ui)
+{
+	var graph = ui.editor.graph;
+	var model = graph.getModel();
+	
+	// Global layout instance
+	var layout = new mxCompactTreeLayout(graph, true);
+	layout.edgeRouting = false;
+	layout.levelDistance = 100;
+	
+	function isMindMapCell(cell)
+	{
+		var result = false;
+		
+		if (cell != null)
+		{
+			graph.traverse(cell, true, function(vertex)
+			{
+				var tmp = graph.view.getState(vertex);
+				result = tmp.style['mindmapRoot'] == '1';
+				
+				return !result;
+			}, null, null, true);
+		}
+		
+		return result;
+	};
+	
+	var graphFoldCells = graph.foldCells;
+	
+	graph.foldCells = function(collapse, recurse, cells, checkFoldable, evt)
+	{
+		//console.log('cells', cells, collapse);
+		this.stopEditing();
+		
+		this.model.beginUpdate();
+		try
+		{
+			var newCells = cells.splice();
+			var tmp = [];
+			
+			for (var i = 0; i < cells.length; i++)
+			{
+				if (isMindMapCell(cells[i]))
+				{
+					graph.traverse(cells[i], true, function(vertex, edge)
+					{
+						if (edge != null)
+						{
+							tmp.push(edge);
+						}
+						
+						if (vertex != cells[i])
+						{
+							tmp.push(vertex);
+						}
+						
+						return true;
+					});
+					
+					graph.model.setCollapsed(cells[i], collapse);
+					
+					//mxUtils.remove(cells[i], newCells);
+				}
+			}
+
+			for (var i = 0; i < tmp.length; i++)
+			{
+				graph.model.setVisible(tmp[i], !collapse);
+			}
+			
+			cells = newCells;
+			graphFoldCells.apply(this, arguments);
+		}
+		finally
+		{
+			this.model.endUpdate();
+		}
+	};
+	
+	var graphRemoveCells = graph.removeCells;
+	
+	graph.removeCells = function(cells, includeEdges)
+	{
+		var tmp = [];
+		
+		for (var i = 0; i < cells.length; i++)
+		{
+			if (isMindMapCell(cells[i]))
+			{
+				graph.traverse(cells[i], true, function(vertex, edge)
+				{
+					tmp.push(edge);
+					tmp.push(vertex);
+					
+					return true;
+				});
+				
+				var edges = graph.getIncomingEdges(cells[i]);
+				cells = cells.concat(edges);
+			}
+			else
+			{
+				tmp.push(cells[i]);
+			}
+		}
+		
+		cells = tmp;
+		
+		graphRemoveCells.apply(this, arguments);
+	};
+	
+	var graphConnectVertex = graph.connectVertex;
+	
+	ui.hoverIcons.getStateAt = function(state, x, y)
+	{
+		return (isMindMapCell(state.cell)) ? null : this.graph.view.getState(this.graph.getCellAt(x, y));
+	};
+	
+	graph.connectVertex = function(source, direction, length, evt, forceClone)
+	{
+		var state = graph.view.getState(source);
+		
+		if (isMindMapCell(state.cell))
+		{
+			var sw = parseInt(state.style['strokeWidth'] || 1);
+			
+	    	var cell = new mxCell('Sub Topic', new mxGeometry(0, 0, 80, 20),
+	    		'shape=partialRectangle;top=0;left=0;bottom=1;right=0;autosize=1;points=[[0,1],[1,1]];snapToPoint=1;' +
+	    		'strokeColor=#000000;fillColor=none;align=center;verticalAlign=middle;collapsible=1;spacingLeft=14;' +
+	    		'strokeWidth=' + sw + ';');
+	    	cell.vertex = true;
+
+	    	var edge = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=entityRelationEdgeStyle;curved=1;' +
+				'startArrow=none;endArrow=none;endFill=0;jettySize=auto;entryX=0;entryY=1;' +
+	    		'strokeWidth=' + sw + ';' + ((state.style['mindmapRoot'] == '1') ? '' : 'exitX=1;exitY=1;'));
+			edge.geometry.setTerminalPoint(new mxPoint(-100, 60), true);
+			edge.geometry.relative = true;
+			edge.edge = true;
+			
+			cell.insertEdge(edge, false);
+	    				
+			model.beginUpdate();
+			try
+			{
+				graph.addCell(cell, model.getParent(source));
+				graph.addEdge(edge, model.getParent(source), source, cell);
+				
+				if (state.style['mindmapRoot'] != '1' && graph.getOutgoingEdges(source).length > 1)
+				{
+					graph.moveCells([state.cell], 0, 30);
+				}
+				
+				layout.execute(model.getParent(source), source);
+
+				this.fireEvent(new mxEventObject('cellsInserted', 'cells', [cell, edge]));
+			}
+			finally
+			{
+				model.endUpdate();
+			}
+			
+			graph.startEditingAtCell(cell);
+			
+			// Selects only vertex
+			return [cell];
+		}
+		else
+		{
+			return graphConnectVertex.apply(this, arguments);
+		}
+	};
+	
+	var graphHandlerGetCells = graph.graphHandler.getCells;
+
+	graph.graphHandler.getCells = function(initialCell)
+	{
+		var cells = graphHandlerGetCells.apply(this, arguments);
+		var state = graph.view.getState(initialCell);
+		
+		if (state != null && isMindMapCell(state.cell))
+		{
+			// Gets the subtree from cell downwards
+			graph.traverse(initialCell, true, function(vertex)
+			{
+				// TODO: Use dictionary to avoid duplicates
+				if (mxUtils.indexOf(cells, vertex) < 0)
+				{
+					cells.push(vertex);
+				}
+				
+				return true;
+			});
+		}
+		
+		return cells;
+	};
+	
+//	var ignoreMove = false;
+//	
+//	graph.addListener(mxEvent.MOVE_CELLS, function(sender, evt)
+//	{
+//		if (!ignoreMove)
+//		{
+//			var cells = evt.getProperty('cells');
+//			var dx = evt.getProperty('dx');
+//			var dy = evt.getProperty('dy');
+//			ignoreMove = true;
+//			
+//			for (var i = 0; i < cells.length; i++)
+//			{
+//				var state = graph.view.getState(cells[i]);
+//				
+//				if (state != null && state.style['mindmapRoot'] == '1')
+//				{
+//					// TODO: Move subtree by same dx/dy
+//					//layout.execute(model.getParent(state.cell), state.cell);
+//					
+//					// Gets the subtree from cell downwards
+//					var tmp = [];
+//					graph.traverse(cells[i], true, function(vertex)
+//					{
+//						tmp.push(vertex);
+//						
+//						return true;
+//					});
+//					
+//					mxUtils.remove(cells[i], tmp);
+//					graph.moveCells(tmp, dx, dy);
+//				}
+//			}
+//
+//			ignoreMove = false;
+//		}
+//	});
+	
+	// Defines a new class for all icons
+	function mxIconSet(state)
+	{
+		this.images = [];
+		var graph = state.view.graph;
+		
+		// Icon1
+//		var img = mxUtils.createImage('images/handle-connect.png');
+//		img.setAttribute('title', 'Duplicate');
+//		img.style.position = 'absolute';
+//		img.style.cursor = 'pointer';
+//		img.style.width = '26px';
+//		img.style.height = '26px';
+//		img.style.left = (state.x - 13) + 'px';
+//		img.style.top = (state.getCenterY() - 13) + 'px';
+//		
+//		mxEvent.addGestureListeners(img,
+//			mxUtils.bind(this, function(evt)
+//			{
+//				var s = graph.gridSize;
+//				graph.setSelectionCells(graph.moveCells([state.cell], s, s, true));
+//				mxEvent.consume(evt);
+//				this.destroy();
+//			})
+//		);
+//		
+//		state.view.graph.container.appendChild(img);
+//		this.images.push(img);
+		
+		// Delete
+		var img = mxUtils.createImage('plugins/mind/handle-move.gif');
+		img.setAttribute('title', 'Move Cell without Subtree');
+		img.style.position = 'absolute';
+		img.style.cursor = 'pointer';
+		img.style.width = '26px';
+		img.style.height = '26px';
+		img.style.left = (state.getCenterX() - 13) + 'px';
+		img.style.top = (state.getCenterY() - 13) + 'px';
+		
+		mxEvent.addGestureListeners(img,
+			mxUtils.bind(this, function(evt)
+			{
+				graph.stopEditing(false);
+				graph.graphHandler.start(state.cell,
+					mxEvent.getClientX(evt), mxEvent.getClientY(evt));
+				
+//				var tmp = [];
+//				graph.traverse(state.cell, true, function(vertex)
+//				{
+//					tmp.push(vertex);
+//					
+//					return true;
+//				});
+				
+				graph.graphHandler.cells = [state.cell];
+				graph.graphHandler.bounds = graph.graphHandler.graph.getView().getBounds(graph.graphHandler.cells);
+				graph.graphHandler.pBounds = graph.graphHandler.getPreviewBounds(graph.graphHandler.cells);
+				
+				
+				graph.graphHandler.cellWasClicked = true;
+				graph.isMouseDown = true;
+				graph.isMouseTrigger = mxEvent.isMouseEvent(evt);
+				mxEvent.consume(evt);
+				
+				// Disables dragging the image
+				mxEvent.consume(evt);
+				this.destroy();
+			})
+		);
+		
+//		mxEvent.addListener(img, 'click',
+//			mxUtils.bind(this, function(evt)
+//			{
+//				//graph.removeCells([state.cell]);
+//				mxEvent.consume(evt);
+//				this.destroy();
+//			})
+//		);
+		
+		state.view.graph.container.appendChild(img);
+		this.images.push(img);
+	};
+	
+	mxIconSet.prototype.destroy = function()
+	{
+		if (this.images != null)
+		{
+			for (var i = 0; i < this.images.length; i++)
+			{
+				var img = this.images[i];
+				img.parentNode.removeChild(img);
+			}
+		}
+		
+		this.images = null;
+	};
+	
+	// Defines the tolerance before removing the icons
+	var iconTolerance = 20;
+
+	// Shows icons if the mouse is over a cell
+	graph.addMouseListener(
+	{
+	    currentState: null,
+	    currentIconSet: null,
+	    mouseDown: function(sender, me)
+	    {
+	    	// Hides icons on mouse down
+        	if (this.currentState != null)
+        	{
+          		this.dragLeave(me.getEvent(), this.currentState);
+          		this.currentState = null;
+        	}
+	    },
+	    mouseMove: function(sender, me)
+	    {
+	    	if (this.currentState != null && (me.getState() == this.currentState ||
+	    		me.getState() == null))
+	    	{
+	    		var tol = iconTolerance;
+	    		var tmp = new mxRectangle(me.getGraphX() - tol,
+	    			me.getGraphY() - tol, 2 * tol, 2 * tol);
+
+	    		if (mxUtils.intersects(tmp, this.currentState))
+	    		{
+	    			return;
+	    		}
+	    	}
+	    	
+			var tmp = graph.view.getState(me.getCell());
+			
+	    	// Ignores everything but vertices
+			if (graph.isMouseDown || graph.isEditing() || (tmp != null &&
+				(!graph.getModel().isVertex(tmp.cell) || !isMindMapCell(me.getCell()))))
+			{
+				tmp = null;
+			}
+
+	      	if (tmp != this.currentState)
+	      	{
+	        	if (this.currentState != null)
+	        	{
+	          		this.dragLeave(me.getEvent(), this.currentState);
+	        	}
+	        
+        		this.currentState = tmp;
+	        
+	        	if (this.currentState != null)
+	        	{
+	          		this.dragEnter(me.getEvent(), this.currentState);
+	        	}
+	      	}
+	    },
+	    mouseUp: function(sender, me) { },
+	    dragEnter: function(evt, state)
+	    {
+	    	if (this.currentIconSet == null)
+	    	{
+    			this.currentIconSet = new mxIconSet(state);
+	    	}
+	    },
+	    dragLeave: function(evt, state)
+	    {
+	    	if (this.currentIconSet != null)
+	    	{
+    			this.currentIconSet.destroy();
+    			this.currentIconSet = null;
+	    	}
+	    }
+	});
+	
+	// Animates the changes in the graph model
+	// TODO: Avoid geometry change if not needed
+//	model.addListener(mxEvent.BEFORE_UNDO, function(sender, evt)
+//	{
+//		// TODO: State may not exist at this point
+//		var states = graph.view.getStates();
+//		
+//		states.visit(function(id, state)
+//		{
+//			if (state.style['mindmapRoot'] == '1')
+//			{
+//				layout.execute(model.getParent(state.cell), state.cell);
+//			}
+//		});
+//	});
+	
+	// Implements additional styles
+//	graph.isCellDisconnectable = function(cell, terminal, source)
+//	{
+//		var state = this.view.getState(cell);
+//		var style = (state != null) ? state.style : this.getCellStyle(cell);
+//		
+//		return style['disconnectable'] != '0';
+//	};
+
+	// Adds sidebar entries
+	var sb = ui.sidebar;
+	
+    sb.addPalette('mindmaps', 'Mindmaps', true, function(content)
+    {
+    	content.appendChild(ui.sidebar.createVertexTemplate('shape=cloud;mindmapRoot=1;fontSize=15;fontStyle=1;strokeWidth=2;' +
+        	'align=center;points=[[0.16,0.55,0],[0.875,0.5,0]];snapToPoint=1;collapsible=1;', 120, 80, 'Main Idea', 'Mindmap Root'));
+        
+        (function()
+        {
+	    	var cell = new mxCell('Main Topic', new mxGeometry(0, 0, 80, 20),
+	    		'shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];snapToPoint=1;autosize=1;' +
+	    		'strokeColor=#000000;fillColor=none;align=center;verticalAlign=middle;fontSize=14;fontStyle=1;strokeWidth=2;');
+	    	cell.vertex = true;
+	    	
+			var edge = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=entityRelationEdgeStyle;curved=1;' +
+				'startArrow=none;endArrow=none;endFill=0;jettySize=auto;strokeWidth=2;');
+			edge.geometry.setTerminalPoint(new mxPoint(-100, 60), true);
+			edge.geometry.relative = true;
+			edge.edge = true;
+			
+			cell.insertEdge(edge, false);
+	
+			content.appendChild(sb.createVertexTemplateFromCells([cell, edge], 80, 20, 'Main Branch'));
+        })();
+        
+        (function()
+        {
+	    	var cell = new mxCell('Sub Topic', new mxGeometry(0, 0, 80, 20),
+	    		'shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];snapToPoint=1;autosize=1;' +
+	    		'strokeColor=#000000;fillColor=none;align=center;verticalAlign=middle;fontSize=12;fontStyle=0;');
+	    	cell.vertex = true;
+	    	
+			var edge = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=entityRelationEdgeStyle;curved=1;' +
+				'startArrow=none;endArrow=none;endFill=0;jettySize=auto;');
+			edge.geometry.setTerminalPoint(new mxPoint(-100, 60), true);
+			edge.geometry.relative = true;
+			edge.edge = true;
+			
+			cell.insertEdge(edge, false);
+	
+			content.appendChild(sb.createVertexTemplateFromCells([cell, edge], 80, 20, 'Sub Branch'));
+        })();
+    });
+    
+    // Collapses default sidebar entry and inserts this before
+    var c = ui.sidebar.container;
+    var general = c.getElementsByTagName('a')[0];
+    general.click();
+    c.insertBefore(c.lastChild.previousSibling, general);
+    c.insertBefore(c.lastChild, general);
+});

+ 2 - 0
war/resources/dia.txt

@@ -156,6 +156,7 @@ direction=Direction
 discard=Discard
 discardChangesAndReconnect=Discard Changes and Reconnect
 googleDriveMissingClickHere=Google Drive missing? Click here!
+discardChanges=Discard Changes
 disconnected=Disconnected
 distribute=Distribute
 done=Done
@@ -320,6 +321,7 @@ home=Home
 horizontal=Horizontal
 horizontalFlow=Horizontal Flow
 horizontalTree=Horizontal Tree
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML Text
 iframe=IFrame

+ 2 - 0
war/resources/dia_am.txt

@@ -156,6 +156,7 @@ direction=Direction
 discard=Discard
 discardChangesAndReconnect=Discard Changes and Reconnect
 googleDriveMissingClickHere=Google Drive missing? Click here!
+discardChanges=Discard Changes
 disconnected=Disconnected
 distribute=Distribute
 done=Done
@@ -320,6 +321,7 @@ home=Home
 horizontal=Horizontal
 horizontalFlow=Horizontal Flow
 horizontalTree=Horizontal Tree
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML Text
 iframe=IFrame

+ 2 - 0
war/resources/dia_ar.txt

@@ -156,6 +156,7 @@ direction=‫إتجاه‬
 discard=Discard
 discardChangesAndReconnect=‫تجاهل التغييرات و إعادة الاتصال‬
 googleDriveMissingClickHere=‫Google Drive غير متوفر؟‬
+discardChanges=Discard Changes
 disconnected=‫غير متصل‬
 distribute=‫توزيع‬
 done=‫تم‬
@@ -320,6 +321,7 @@ home=‫الرئيسية‬
 horizontal=‫أفقي‬
 horizontalFlow=‫تدفق أفقي‬
 horizontalTree=‫شجرة أفقية‬
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=‫نص HTML‬
 iframe=IFrame

+ 2 - 0
war/resources/dia_bg.txt

@@ -156,6 +156,7 @@ direction=Direction
 discard=Discard
 discardChangesAndReconnect=Discard Changes and Reconnect
 googleDriveMissingClickHere=Google Drive missing? Click here!
+discardChanges=Discard Changes
 disconnected=Disconnected
 distribute=Distribute
 done=Done
@@ -320,6 +321,7 @@ home=Home
 horizontal=Horizontal
 horizontalFlow=Horizontal Flow
 horizontalTree=Horizontal Tree
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML Text
 iframe=IFrame

+ 2 - 0
war/resources/dia_bn.txt

@@ -156,6 +156,7 @@ direction=Direction
 discard=Discard
 discardChangesAndReconnect=Discard Changes and Reconnect
 googleDriveMissingClickHere=Google Drive missing? Click here!
+discardChanges=Discard Changes
 disconnected=Disconnected
 distribute=Distribute
 done=Done
@@ -320,6 +321,7 @@ home=Home
 horizontal=Horizontal
 horizontalFlow=Horizontal Flow
 horizontalTree=Horizontal Tree
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML Text
 iframe=IFrame

+ 2 - 0
war/resources/dia_bs.txt

@@ -156,6 +156,7 @@ direction=Pravac
 discard=Discard
 discardChangesAndReconnect=Discard Changes and Reconnect
 googleDriveMissingClickHere=Google Drive missing? Click here!
+discardChanges=Discard Changes
 disconnected=Disconnected
 distribute=Distribute
 done=Završeno
@@ -320,6 +321,7 @@ home=Dom
 horizontal=Vodoravan
 horizontalFlow=Vodoravni tok
 horizontalTree=Vodoravno drvo
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML Text
 iframe=IFrame

+ 2 - 0
war/resources/dia_ca.txt

@@ -156,6 +156,7 @@ direction=Direcció
 discard=Discard
 discardChangesAndReconnect=Descartar canvis i torna a connectar 
 googleDriveMissingClickHere=No trobeu Google Drive?
+discardChanges=Discard Changes
 disconnected=Desconnectant
 distribute=Distribueix
 done=Finalitzat
@@ -320,6 +321,7 @@ home=Inici
 horizontal=Horitzontal
 horizontalFlow=Flux horitzontal
 horizontalTree=Arbre horitzontal
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=Text HTML
 iframe=IFrame

+ 151 - 149
war/resources/dia_cs.txt

@@ -1,34 +1,34 @@
 # *DO NOT DIRECTLY EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND IT IS BASED ON:*
 # https://docs.google.com/spreadsheet/ccc?key=0AmQEO36liL4FdDJLWVNMaVV2UmRKSnpXU09MYkdGbEE
 aboutDrawio=O aplikaci draw.io
-accessDenied=Access Denied
+accessDenied=Přístup odepřen
 actualSize=Skutečná velikost
 add=Přidat
-addedFile=Added {1}
+addedFile=Přidáno: {1}
 addImages=Přidat obrázky
 addImageUrl=Přidat URL obrázku
 addLayer=Přidat vrstvu
 addProperty=Přidat vlastnost
-address=Address
+address=Adresa
 addToExistingDrawing=Přidat do existujícího výkresu
 addWaypoint=Přidat waypoint
-adjustTo=Adjust to
+adjustTo=Přizpůsobit
 advanced=Pokročilé
 align=Zarovnat
 alignment=Zarovnání
 allChangesLost=Všechny změny budou ztraceny!
-allPages=All Pages
-allProjects=All Projects
-allSpaces=All Spaces
-allTags=All Tags
-anchor=Anchor
+allPages=Všechny stránky
+allProjects=Všechny projekty
+allSpaces=Všechny prostory
+allTags=Všechny štítky
+anchor=Kotva
 android=Android
 angle=Úhel
-areYouSure=Jste si jisti?
-ensureDataSaved=Prosím ujistěte se, že vaše data jsou uložena před uzavřením.
+areYouSure=Jste si jistí?
+ensureDataSaved=Ujistěte se prosím, že vaše data jsou před uzavřením uložena.
 allChangesSaved=Všechny změny uloženy
 allChangesSavedInDrive=Všechny změny uloženy na Disku
-allowPopups=Povolit vyskakovací okna
+allowPopups=Povolit vyskakovací okna a zabránit tak tomuto dialogu.
 alreadyConnected=Uzly jsou již spojeny
 apply=Použít
 archiMate21=ArchiMate 2.1
@@ -37,15 +37,15 @@ arrow=Šipka
 arrows=Šipky
 asNew=Jako nový
 atlas=Atlas
-author=Author
-authorizationRequired=Autorizace je vyžadována
+author=Autor
+authorizationRequired=Je vyžadována autorizace
 authorizeThisAppIn=Povolit tuto aplikaci v {1}:
 authorize=Povolit
 authorizing=Autorizuji
 automatic=Automaticky
 autosave=Automatické uložení
 autosize=Automatická velikost
-attachments=Attachments
+attachments=Přílohy
 aws=AWS
 aws3d=AWS 3D
 azure=Azure
@@ -64,14 +64,14 @@ borderColor=Barva okraje
 borderWidth=Tloušťka okraje
 bottom=Dolní
 bottomAlign=Zarovnání dolů
-bottomLeft=Bottom Left
-bottomRight=Bottom Right
+bottomLeft=Levý dolní
+bottomRight=Pravý dolní
 bpmn=BPMN
 browser=Prohlížeč
-bulletedList=Seznam v bodech
+bulletedList=Bodový seznam
 business=Business
-busy=Operation in progress
-cabinets=Cabinets
+busy=Operace probíhá
+cabinets=Skříně
 cancel=Zrušit
 center=Na střed
 cannotLoad=Pokus o načtení selhal. Prosím zkuste to znovu později.
@@ -85,20 +85,20 @@ chatJoined={1} se připojil
 chatLeft={1} se odhlásil
 chatWindowTitle=Chat
 chooseAnOption=Vyberte možnost
-chromeApp=Chrome Aplikace
-compressed=Compressed
-commitMessage=Commit Message
+chromeApp=Aplikace Chrome
+compressed=Komprimováno
+commitMessage=Odeslat zprávu
 csv=CSV
-draftFound=A draft for '{1}' has been found. Load it into the editor or discard it to continue.
-dragAndDropNotSupported=Drag and drop not supported for images. Would you like to import instead?
-dropboxCharsNotAllowed=The following characters are not allowed: \ / : ? * " |
-check=Check
+draftFound=Byl nalezen koncept pro '{1}'. Abyste mohli pokračovat, nahrajte ho do editoru nebo jej zahoďte.
+dragAndDropNotSupported=Pro obrázky není funkce Drag & Drop k dispozici. Chcete ho místo toho naimportovat?
+dropboxCharsNotAllowed=Následující znaky nejsou povoleny: \ / : ? * " |
+check=Fajfka
 circle=Kruh
 cisco=Cisco
 classic=Klasické
 clearDefaultStyle=Vymazat výchozí styl
 clearWaypoints=Vymazat waypoint
-clipart=Clipart
+clipart=Klipart
 close=Zavřít
 collaborator=Spolupracovník
 collaborators=Spolupracovníci
@@ -106,18 +106,18 @@ collapse=Sbalit
 collapseExpand=Sbalit/Rozbalit
 collapse-expand=Sbalit/Rozbalit
 collapsible=Sbalovací
-comic=Comic
-comment=Comment
+comic=Komix
+comment=Komentář
 commentsNotes=Komentáře/Poznámky
 connect=Připojit
 connecting=Připojuji
 connectWithDrive=Připojit ke službě Disk Google
 connection=Připojení
-connectionArrows=Connection Arrows
+connectionArrows=Šipky připojení
 connectionPoints=Body připojení
-constrainProportions=Omezit proporce
+constrainProportions=Zachovat rozměry
 containsValidationErrors=Obsahuje chyby ověření
-copiedToClipboard=Copied to clipboard
+copiedToClipboard=Zkopírováno do schránky
 copy=Kopírovat
 copyConnect=Zkopírovat při napojení
 copyOf=Kopie z {1}
@@ -127,63 +127,64 @@ create=Vytvořit
 createNewDiagram=Vytvořit nový diagram
 createRevision=Vytvořit revizi
 createShape=Vytvořit tvar
-crop=Crop
-curved=Kopie kresu
+crop=Oříznout
+curved=Křivkový
 custom=Vlastní
-current=Současný
+current=Aktuální
 cut=Vyjmout
 dashed=Přerušovaná
-decideLater=Zozhodnout později
+decideLater=Rozhodnout později
 default=Výchozí
 delete=Smazat
 deleteColumn=Vymazat sloupec
-deleteLibrary401=Insufficient permissions to delete this library
-deleteLibrary404=Selected library could not be found
-deleteLibrary500=Error deleting library
-deleteLibraryConfirm=You are about to permanently delete this library. Are you sure you want to do this?
+deleteLibrary401=Na smazání této knihovny nemáte dostatečná práva
+deleteLibrary404=Zvolenou knihovnu nelze nalézt
+deleteLibrary500=Chyba při odstraňování knihovny
+deleteLibraryConfirm=Chystáte se tuto knihovnu trvale odstranit. Jste si jistí?
 deleteRow=Vymazat řádek
-description=Description
+description=Popis
 device=Zařízení
 diagram=Diagram
 diagramLocked=Diagram byl uzamčen, aby se zabránilo další ztrátě dat.
-diagramName=Diagram Name
-diagramIsPublic=Diagram is public
-diagramIsNotPublic=Diagram is not public
+diagramName=Jméno diagramu
+diagramIsPublic=Diagram je veřejný
+diagramIsNotPublic=Diagram není veřejný
 diamond=Kosočtverec
 diamondThin=Kosočtverec (tenký)
 didYouKnow=Věděli jste, že...
 direction=Směr
-discard=Discard
+discard=Zahodit
 discardChangesAndReconnect=Zahodit změny a znovu se připojit
-googleDriveMissingClickHere=Google Disk chybí?
+googleDriveMissingClickHere=Google Disk chybí? Klikněte zde!
+discardChanges=Discard Changes
 disconnected=Odpojeno
 distribute=Rozložit
 done=Hotovo
-dotted=Tečkovaný
-doubleClickOrientation=Poklepejte ke změně orientace
-doubleClickTooltip=Dvojitý klik pro vložení textu
-doubleClickChangeProperty=Doubleclick to change property name
+dotted=Tečkovaná
+doubleClickOrientation=Dvojitým klepnutím změníte orientaci
+doubleClickTooltip=Dvojitým klepnutím vložíte text
+doubleClickChangeProperty=Dvojitým klepnutím změníte jméno vlastnosti
 download=Stáhnout
 downloadAs=Stáhnout jako
-clickHereToSave=Click here to save.
-draftDiscarded=Draft discarded
-draftSaved=Draft saved
-dragElementsHere=Drag elements here
-dragImagesHere=Přetáhněte obrázky nebo URL zde
-dragUrlsHere=Přetáhněte URL zde
+clickHereToSave=Uložíte klepnutím zde.
+draftDiscarded=Koncept zahozen
+draftSaved=Koncept uložen
+dragElementsHere=Přetáhněte prvky sem
+dragImagesHere=Přetáhněte obrázky nebo URL sem
+dragUrlsHere=Přetáhněte URL sem
 draw.io=draw.io
 drawing=Výkres{1}
 drawingEmpty=Výkres je prázdný
 drawingTooLarge=Výkres je příliš velký
-drawioForWork=Draw.io for Work
+drawioForWork=Draw.io pro Work
 dropbox=Dropbox
 duplicate=Duplikovat
 duplicateIt=Duplikovat {1}
 divider=Oddělovač
 east=Východ
 edit=Upravit
-editData=Edit Data
-editDiagram=Edit Diagram
+editData=Upravit data
+editDiagram=Upravit diagram
 editGeometry=Upravit geometrii
 editImage=Upravit obrázek
 editImageUrl=Upravit URL obrázku
@@ -192,87 +193,87 @@ editShape=Upravit tvar
 editStyle=Upravit styl
 editText=Upravit text
 editTooltip=Upravit tooltip
-glass=Lupa
+glass=Sklo
 googleImages=Google Obrázky
 imageSearch=Vyhledávání obrázku
 eip=EIP
-embed=Vložit do stránky
-embedImages=Embed Images
+embed=Vložit
+embedImages=Vložit obrázky
 mainEmbedNotice=Vložit toto na stránku
-electrical=Electrical
-embedNotice=Toto vložte na konec své stránky
-enterGroup=Vložit skupinu
-enterName=Vložit jméno
-enterPropertyName=Vložit název vlastnosti
-enterValue=Vložit hodnotu
+electrical=Elektrická
+embedNotice=Vložit jednou na konec stránky
+enterGroup=Zadat skupinu
+enterName=Zadat jméno
+enterPropertyName=Zadat název vlastnosti
+enterValue=Zadat hodnotu
 entityRelation=Relace entity
 error=Chyba
-errorDeletingFile=Error Deleting File
+errorDeletingFile=Chyba při mazání souboru
 errorLoadingFile=Chyba při nahrávání souboru
 errorRenamingFile=Chyba při přejmenování souboru.
 errorRenamingFileNotFound=Chyba při přejmenování souboru. Soubor nenalezen.
 errorRenamingFileForbidden=Chyba při přejmenování souboru. Nedostatečná přístupová oprávnění.
-errorSavingDraft=Error saving draft
+errorSavingDraft=Chyba při ukládání konceptu
 errorSavingFile=Chyba při ukládání souboru
-errorSavingFileUnknown=Chyba autorizace s Google servery. Prosím obnovte stránku pro opětovný pokus.
+errorSavingFileUnknown=Chyba autorizace s Google servery. Prosím obnovte stránku a zkuste to ještě jednou.
 errorSavingFileForbidden=Chyba ukládání souboru. Nedostačující přístupová práva.
-errorSavingFileNameConflict=Could not save diagram. Current page already contains file named '{1}'.
-errorSavingFileNotFound=Chyba ukládání souboru. Soubor nebyl nalezen.
-errorSavingFileSessionTimeout=Your session has ended. Please <a target='_blank' href='{1}'>{2}</a> and return to this tab to try to save again.
-errorSendingFeedback=Chyba odesílání zpětné vazby.
-errorUpdatingPreview=Error updating preview.
+errorSavingFileNameConflict=Diagram nelze uložit. Aktuální stránka už obsahuje soubor se jménem '{1}'.
+errorSavingFileNotFound=Chyba ukládání souboru. Soubor nenalezen.
+errorSavingFileSessionTimeout=Vaše připojení skončilo. Prosím <a target='_blank' href='{1}'>{2}</a>, pak se vraťte na tento panel a zkuste uložit znovu.
+errorSendingFeedback=Chyba při odesílání zpětné vazby.
+errorUpdatingPreview=Chyba při aktualizaci náhledu.
 exit=Odejít  
 exitGroup=Odejít ze skupiny
 expand=Rozšířit
-export=Export
-exporting=Exporting
+export=Exportovat
+exporting=Exportuji
 exportAs=Exportovat jako
-exportOptionsDisabled=Export options disabled
-exportOptionsDisabledDetails=The owner has disabled options to download, print or copy for commenters and viewers on this file.
+exportOptionsDisabled=Možnost exportu je vypnutá
+exportOptionsDisabledDetails=Vlastník pro komentující a diváky vypnul možnost stažení, tisku nebo kopírování.
 extras=Extra
 facebook=Facebook
-failedToSaveTryReconnect=Nepodařilo se uložit, zkouším se připojit znovu
+failedToSaveTryReconnect=Uložení se nezdařilo, zkouším se znovu připojit
 featureRequest=Požadavek na vlastnost
 feedback=Zpětná vazba
-feedbackSent=Zpětná vazby úspěšně odeslána
-floorplans=Floorplans
+feedbackSent=Zpětná vazba úspěšně odeslána
+floorplans=Půdorysy
 file=Soubor
-fileChangedOverwrite=File was changed. Overwrite changes?
-overwrite=Overwrite
+fileChangedOverwrite=Soubor by změněn. Přepsat změny?
+overwrite=Přepsat
 filename=Název souboru
 fileExists=Soubor již existuje
-fileNearlyFullSeeFaq=File nearly full, please see FAQ
-fileNotFound=Soubor nebyl nalezen
-repositoryNotFound=Repository not found
-fileNotFoundOrDenied=Soubor nebyl nalezen. Buď neexistuje a nebo nemáte k jeho čtení přístup.
+fileNearlyFullSeeFaq=Soubor je skolo plný, podívejte se do často kladených otázek (FAQ)
+fileNotFound=Soubor nenalezen
+repositoryNotFound=Repozitář nenalezen
+fileNotFoundOrDenied=Soubor nenalezen. Buď neexistuje, nebo nemáte práva ke čtení.
 fileNotLoaded=Soubor nebyl nahrán
 fileNotSaved=Soubor nebyl uložen
 fileOpenLocation=Jak si přejete otevřít tento soubor(y)?
 fileWillBeSavedInAppFolder={1} bude uloženo ve složce aplikace
 fill=Vyplnit
 fillColor=Barva výplně
-find=Find
-fit=Roztáhnout
+find=Hledat
+fit=Přizpůsobit
 fitContainer=Změnit velikost nádoby
 fitIntoContainer=Přizpůsobit nádobě
 fitPage=Roztáhnout do stránky
 fitPageWidth=Roztáhnout na šířku stránky
-fitTo=Fit to
-fitToSheetsAcross=sheet(s) across
-fitToBy=by
-fitToSheetsDown=sheet(s) down
+fitTo=Roztáhnout přes
+fitToSheetsAcross=stránek napříč
+fitToBy=a
+fitToSheetsDown=stránek dolů
 fitTwoPages=Dvě stránky
 fitWindow=Roztáhnout do okna
 flip=Převrátit
 flipH=Převrátit vodorovně
 flipV=Převrátit svisle
-flowchart=Flowchart
-folder=Folder
+flowchart=Vývojový diagram
+folder=Složka
 font=Písmo
 fontColor=Barva písma
 fontFamily=Rodina písma
 fontSize=Velikost písma
-forbidden=Nemáte povolení pro přístup k této složce
+forbidden=Pro přístup k této složce nemáte povolení
 format=Formát
 formatPanel=Panel formátu
 formatted=Formátováno
@@ -288,11 +289,11 @@ formatXmlPlain=XML (Prostý)
 formatXml=XML
 forum=Fóra s diskusí/nápovědou
 fromTemplate=Ze šablony
-fromTemplateUrl=Ze šablony URL
+fromTemplateUrl=Z URL šablony
 fromText=Z textu
-fromUrl=From URL
-fromThisPage=From this page
-fullscreen=Fullscreen
+fromUrl=Z URL
+fromThisPage=Z této stránky
+fullscreen=Přes celou obrazovku
 general=Obecné
 github=GitHub
 global=Globální
@@ -304,7 +305,7 @@ googleSites=Google Stránky
 gradient=Barevný přechod
 gradientColor=Barva
 grid=Mřížka
-gridColor=Grid Color
+gridColor=Barva mřížky
 gridSize=Velikost mřížky
 group=Skupina
 guides=Vodicí linky
@@ -320,18 +321,19 @@ home=Domů
 horizontal=Vodorovně
 horizontalFlow=Vodorovný tok
 horizontalTree=Vodorovný strom
+howTranslate=Jaká je kvalita překladu do tvého jazyka?
 html=HTML
 htmlText=HTML text
 iframe=IFrame
 ignore=Ignorovat
 image=Obrázek
-imageUrl=Image URL
+imageUrl=URL obrázku
 images=Obrázky
-imagePreviewError=This image couldn't be loaded for preview. Please check the URL.
-imageTooBig=Image too big
+imagePreviewError=Nelze načíst náhled tohoto obrázku. Zkotrolujte prosím URL.
+imageTooBig=Obrázek je příliš velký
 imgur=Imgur
-import=Import
-importFrom=Iportovat z
+import=Importovat
+importFrom=Importovat z
 includeCopyOfMyDiagram=Zahrnout kopii diagramu
 increaseIndent=Zvýšit odrážku
 decreaseIndent=Snížit odrážku
@@ -340,20 +342,20 @@ insertColumnBefore=Vložit sloupec vlevo
 insertColumnAfter=Vložit sloupec vpravo
 insertEllipse=Vložit elipsu
 insertImage=Vložit obrázek
-insertHorizontalRule=Vložit horizontální normu
+insertHorizontalRule=Vložit vodorovnou čáru
 insertLink=Vložit odkaz
-insertPage=Insert Page
+insertPage=Vložit stránku
 insertRectangle=Vložit obdélník
 insertRowBefore=Vložit řádek nad
-insertRowAfter=Vložit řádek po
+insertRowAfter=Vložit řádek za
 insertText=Vložit text
 inserting=Vkládání
-invalidFilename=Diagram names must not contain the following characters: \ / | : ; { } < > & + ? = "
-invalidLicenseSeeThisPage=Your license is invalid, please see this <a target="_blank" href="https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin">page</a>.
+invalidFilename=Jména diagramů nesmí obsahovat tyto znaky: \ / | : ; { } < > & + ? = "
+invalidLicenseSeeThisPage=Vaše licence je neplatná, podívejte se prosím na tuto <a target="_blank" href="https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin">stránku</a>.
 invalidName=Neplatný název
 invalidOrMissingFile=Neplatný nebo chybějící soubor
-invalidPublicUrl=Invalid public URL
-isometric=Isometric
+invalidPublicUrl=neplatné veřejné URL
+isometric=Isometric
 ios=iOS
 italic=Kurzíva
 kennedy=Kennedy
@@ -361,50 +363,50 @@ keyboardShortcuts=Klávesové zkratky
 layers=Vrstvy
 landscape=Na šířku
 language=Jazyk
-leanMapping=Lean Mapping
-lastChange=Poslední změny před {1}
-lessThanAMinute=méně než minuta
-licensingError=Licensing Error
-licenseHasExpired=The license for {1} has expired on {2}. Click here.
-licenseWillExpire=The license for {1} will expire on {2}. Click here.
-linkAccountRequired=If the diagram is not public a Google account is required to view the link.
+leanMapping=Lean mapování
+lastChange=naposledy změněno před {1}
+lessThanAMinute=méně než 1 min.
+licensingError=Chyba licence
+licenseHasExpired=Licence pro {1} vypršela {2}. Klepněte sem.
+licenseWillExpire=Licence pro {1} vyprší {2}. Klepněte sem.
+linkAccountRequired=Pokud je diagram neveřejný, k jeho zobrazení je potřeba účet Google.
 linkText=Link Text
-list=List
+list=Seznam
 minute=minuta
-minutes=minuty
-hours=hodina
-days=dny
-months=měsíce
-years=roky
+minutes=min.
+hours=hod.
+days=d.
+months=měs.
+years=roky(ů)
 restartForChangeRequired=Změny se projeví po obnovení stránky.
 laneColor=Barva čáry
-lastModified=Last modified
+lastModified=Naposledy změněno
 layout=Rozvržení
 left=Vlevo
-leftAlign=Podle levé hrany
+leftAlign=Zarovnat vlevo
 leftToRight=Zleva do prava
-libraryTooltip=Drag and drop shapes here or click + to insert. Double click to edit.
+libraryTooltip=Přetáhněte tvary sem nebo klepněte a vložte. Dvojitým klepnutím lze editovat. 
 lightbox=Lightbox
 line=Řádek
 lineend=Konec řádku
-lineheight=Line Height
+lineheight=Výška řádku
 linestart=Začátek řádku
 linewidth=Šířka řádku
 link=Odkaz
-links=Links
+links=Odkazy
 loading=Nahrávám
 lockUnlock=Zamknout/Odemknout
 loggedOut=Odpojeno
-logIn=log in
+logIn=Přihlásit
 loveApp=Miluji draw.io
 mathematicalTypesetting=Matematické nastavení písma
 makeCopy=Udělat kopii
 manual=Manuál
 middle=Střed
 misc=Různé
-mockups=Mockups
-modificationDate=Modification date
-modifiedBy=Modified by
+mockups=Modely
+modificationDate=Datum změny
+modifiedBy=Změněno
 more=Více
 moreResults=Další výsledky
 moreShapes=Další tvary
@@ -412,34 +414,34 @@ move=Přesunout
 moveToFolder=Přesunout do složky
 moving=Přesouvání
 moveSelectionTo=Přesunout výběr do {1}
-name=Name
+name=Jméno
 navigation=Navigace
-networking=Networking
+networking=Síť
 new=Nový
 newLibrary=Nová knihovna
-nextPage=Next Page
-noAttachments=No attachments found
+nextPage=Další stránka
+noAttachments=Žádné přílohy nenalezeny
 noColor=Bez barvy
 noFiles=Žádné soubory
 noFileSelected=Nevybrán žádný soubor
-noLibraries=No libraries found
+noLibraries=Nenalezeny žádné knihovny
 noMoreResults=Žádné další výsledky
 none=Nic
 noOtherViewers=Žádní další diváci
-noPlugins=Žádná zapojení
-noPreview=No preview
+noPlugins=Žádné pluginy
+noPreview=Žádné náhledy
 noResponse=Žádná odpověď ze serveru
 noResultsFor=Žádné výsledky pro {1}
 noRevisions=Žádné revize
-noSearchResults=No search results found
-noPageContentOrNotSaved=No anchors found on this page or it hasn't been saved yet
+noSearchResults=Nenalezeny žádné výsledky
+noPageContentOrNotSaved=Na této stránce nejsou žádné kotvy nebo stránka ještě nebyla uložena.
 normal=Normální
 north=Sever
 notADiagramFile=Není diagramový soubor
 notALibraryFile=Není soubor knihovny
 notAvailable=Není k dispozici
-notAUtf8File=Not a UTF-8 file
-notConnected=Bez připojení
+notAUtf8File=Není soubor v kódování UTF-8
+notConnected=Nepřipojeno
 note=Poznámka
 notUsingService=Nepoužíváte {1}?
 numberedList=Číselný seznam

+ 2 - 0
war/resources/dia_da.txt

@@ -156,6 +156,7 @@ direction=Retning
 discard=Discard
 discardChangesAndReconnect=Fortryd ændringer og forbind igen
 googleDriveMissingClickHere=Google Drev ikke tilgængelig
+discardChanges=Discard Changes
 disconnected=Ingen forbindelse
 distribute=Fordel
 done=Udført
@@ -320,6 +321,7 @@ home=Hjem
 horizontal=Vandret
 horizontalFlow=Vandret flow
 horizontalTree=Vandret træ
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML-tekst
 iframe=IFrame

+ 2 - 0
war/resources/dia_de.txt

@@ -156,6 +156,7 @@ direction=Richtung
 discard=Verwerfen
 discardChangesAndReconnect=Änderungen verwerfen und neu verbinden
 googleDriveMissingClickHere=Google Drive fehlt? Hier klicken!
+discardChanges=Änderungen verwerfen
 disconnected=Keine Verbindung
 distribute=Verteilen
 done=Fertig
@@ -320,6 +321,7 @@ home=Ursprung
 horizontal=Horizontal
 horizontalFlow=Horizontaler Fluss
 horizontalTree=Horizontaler Baum
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML Text
 iframe=IFrame

+ 2 - 0
war/resources/dia_el.txt

@@ -156,6 +156,7 @@ direction=Κατεύθυνση
 discard=Discard
 discardChangesAndReconnect=Απορρίψτε τις αλλαγές και επανασυνδεθείτε
 googleDriveMissingClickHere=Λείπει το Google Drive;
+discardChanges=Discard Changes
 disconnected=Αποσυνδέθηκε
 distribute=Διανομή
 done=Έγινε
@@ -320,6 +321,7 @@ home=Αρχική
 horizontal=Οριζόντια
 horizontalFlow=Οριζόντια Ροή
 horizontalTree=Οριζόντιο δέντρο
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML κείμενο
 iframe=IFrame

+ 698 - 0
war/resources/dia_eo.txt

@@ -0,0 +1,698 @@
+# *DO NOT DIRECTLY EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND IT IS BASED ON:*
+# https://docs.google.com/spreadsheet/ccc?key=0AmQEO36liL4FdDJLWVNMaVV2UmRKSnpXU09MYkdGbEE
+aboutDrawio=Pri draw.io
+accessDenied=Access Denied
+actualSize=Actual Size
+add=Aldoni
+addedFile=Added {1}
+addImages=Aldoni bildojn
+addImageUrl=Add Image URL
+addLayer=Add Layer
+addProperty=Aldoni econ
+address=Adreso
+addToExistingDrawing=Add to Existing Drawing
+addWaypoint=Add Waypoint
+adjustTo=Adjust to
+advanced=Advanced
+align=Align
+alignment=Alignment
+allChangesLost=All changes will be lost!
+allPages=Ĉiuj paĝoj
+allProjects=Ĉiuj projektoj
+allSpaces=All Spaces
+allTags=All Tags
+anchor=Anchor
+android=Android
+angle=Angle
+areYouSure=Ĉu vi certas?
+ensureDataSaved=Please ensure your data is saved before closing.
+allChangesSaved=All changes saved
+allChangesSavedInDrive=All changes saved in Drive
+allowPopups=Allow pop-ups to avoid this dialog.
+alreadyConnected=Nodes already connected
+apply=Apply
+archiMate21=ArchiMate 2.1
+arrange=Arrange
+arrow=Arrow
+arrows=Arrows
+asNew=As New
+atlas=Atlas
+author=Aŭtoro
+authorizationRequired=Authorization required
+authorizeThisAppIn=Authorize this app in {1}:
+authorize=Authorize
+authorizing=Authorizing
+automatic=Automatic
+autosave=Autosave
+autosize=Autosize
+attachments=Attachments
+aws=AWS
+aws3d=AWS 3D
+azure=Azure
+background=Background
+backgroundColor=Background Color
+backgroundImage=Background Image
+basic=Basic
+blankDrawing=Blank Drawing
+blankDiagram=Blank Diagram
+block=Block
+blockquote=Blockquote
+blog=Blog
+bold=Bold
+bootstrap=Bootstrap
+borderColor=Border Color
+borderWidth=Borderwidth
+bottom=Bottom
+bottomAlign=Bottom Align
+bottomLeft=Bottom Left
+bottomRight=Bottom Right
+bpmn=BPMN
+browser=Browser
+bulletedList=Bulleted List
+business=Business
+busy=Operation in progress
+cabinets=Cabinets
+cancel=Nuligi
+center=Center
+cannotLoad=Load attempts failed. Please try again later.
+cannotLogin=Log in attempts failed. Please try again later.
+cannotOpenFile=Cannot open file
+change=Change
+changeOrientation=Change Orientation
+changeUser=Change user
+changesNotSaved=Changes have not been saved
+chatJoined={1} has joined
+chatLeft={1} has left
+chatWindowTitle=Chat
+chooseAnOption=Choose an option
+chromeApp=Chrome App
+compressed=Compressed
+commitMessage=Commit Message
+csv=CSV
+draftFound=A draft for '{1}' has been found. Load it into the editor or discard it to continue.
+dragAndDropNotSupported=Drag and drop not supported for images. Would you like to import instead?
+dropboxCharsNotAllowed=The following characters are not allowed: \ / : ? * " |
+check=Check
+circle=Circle
+cisco=Cisco
+classic=Classic
+clearDefaultStyle=Clear Default Style
+clearWaypoints=Clear Waypoints
+clipart=Clipart
+close=Close
+collaborator=Collaborator
+collaborators=Collaborators
+collapse=Collapse
+collapseExpand=Collapse/Expand
+collapse-expand=Click to collapse/expand\nShift-click to move neighbors \nAlt-click to protect group size
+collapsible=Collapsible
+comic=Comic
+comment=Comment
+commentsNotes=Comments/Notes
+connect=Connect
+connecting=Connecting
+connectWithDrive=Connect with Google Drive
+connection=Connection
+connectionArrows=Connection Arrows
+connectionPoints=Connection Points
+constrainProportions=Constrain Proportions
+containsValidationErrors=Contains validation errors
+copiedToClipboard=Copied to clipboard
+copy=Kopii
+copyConnect=Copy on connect
+copyOf=Kopio de {1}
+copyOfDrawing=Copy of Drawing
+copyStyle=Copy Style
+create=Krei
+createNewDiagram=Krei novan diagramon
+createRevision=Create Revision
+createShape=Create Shape
+crop=Crop
+curved=Curved
+custom=Custom
+current=Current
+cut=Cut
+dashed=Dashed
+decideLater=Decide later
+default=Defaŭlta
+delete=Forigi
+deleteColumn=Delete Column
+deleteLibrary401=Insufficient permissions to delete this library
+deleteLibrary404=Selected library could not be found
+deleteLibrary500=Error deleting library
+deleteLibraryConfirm=You are about to permanently delete this library. Are you sure you want to do this?
+deleteRow=Delete Row
+description=Priskribo
+device=Aparato
+diagram=Diagramo
+diagramLocked=Diagram has been locked to prevent further data loss.
+diagramName=Diagram Name
+diagramIsPublic=Diagram is public
+diagramIsNotPublic=Diagram is not public
+diamond=Diamond
+diamondThin=Diamond (thin)
+didYouKnow=Did you know...
+direction=Direction
+discard=Discard
+discardChangesAndReconnect=Discard Changes and Reconnect
+googleDriveMissingClickHere=Google Drive missing? Click here!
+discardChanges=Discard Changes
+disconnected=Disconnected
+distribute=Distribute
+done=Done
+dotted=Dotted
+doubleClickOrientation=Doubleclick to change orientation
+doubleClickTooltip=Doubleclick to insert text
+doubleClickChangeProperty=Doubleclick to change property name
+download=Elŝuti
+downloadAs=Elŝuti kiel
+clickHereToSave=Click here to save.
+draftDiscarded=Draft discarded
+draftSaved=Draft saved
+dragElementsHere=Drag elements here
+dragImagesHere=Drag images or URLs here
+dragUrlsHere=Drag URLs here
+draw.io=draw.io
+drawing=Drawing{1}
+drawingEmpty=Drawing is empty
+drawingTooLarge=Drawing is too large
+drawioForWork=Draw.io for Work
+dropbox=Dropbox
+duplicate=Duplicate
+duplicateIt=Duplicate {1}
+divider=Divider
+east=East
+edit=Redakti
+editData=Edit Data
+editDiagram=Redakti diagramon
+editGeometry=Edit Geometry
+editImage=Redakti bildon
+editImageUrl=Edit Image URL
+editLink=Redakti ligilon
+editShape=Edit Shape
+editStyle=Edit Style
+editText=Redakti tekston
+editTooltip=Edit Tooltip
+glass=Glass
+googleImages=Google Images
+imageSearch=Image Search
+eip=EIP
+embed=Embed
+embedImages=Embed Images
+mainEmbedNotice=Paste this into the page
+electrical=Electrical
+embedNotice=Paste this once at the end of the page
+enterGroup=Enter Group
+enterName=Enter Name
+enterPropertyName=Enter Property Name
+enterValue=Enter Value
+entityRelation=Entity Relation
+error=Eraro
+errorDeletingFile=Error Deleting File
+errorLoadingFile=Error loading file
+errorRenamingFile=Error renaming file.
+errorRenamingFileNotFound=Error renaming file. File was not found.
+errorRenamingFileForbidden=Error renaming file. Insufficient access rights.
+errorSavingDraft=Error saving draft
+errorSavingFile=Error saving file
+errorSavingFileUnknown=Error authorizing with Google's servers. Please refresh the page to re-attempt.
+errorSavingFileForbidden=Error saving file. Insufficient access rights.
+errorSavingFileNameConflict=Could not save diagram. Current page already contains file named '{1}'.
+errorSavingFileNotFound=Error saving file. File was not found.
+errorSavingFileSessionTimeout=Your session has ended. Please <a target='_blank' href='{1}'>{2}</a> and return to this tab to try to save again.
+errorSendingFeedback=Error sending feedback.
+errorUpdatingPreview=Error updating preview.
+exit=Forlasi grupon
+exitGroup=Forlasi grupon
+expand=Expand
+export=Export
+exporting=Exporting
+exportAs=Export as
+exportOptionsDisabled=Export options disabled
+exportOptionsDisabledDetails=The owner has disabled options to download, print or copy for commenters and viewers on this file.
+extras=Extras
+facebook=Facebook
+failedToSaveTryReconnect=Failed to save, trying to reconnect
+featureRequest=Feature Request
+feedback=Feedback
+feedbackSent=Feedback successfully sent.
+floorplans=Floorplans
+file=Dosiero
+fileChangedOverwrite=File was changed. Overwrite changes?
+overwrite=Overwrite
+filename=Dosiernomo
+fileExists=File already exists
+fileNearlyFullSeeFaq=File nearly full, please see FAQ
+fileNotFound=File not found
+repositoryNotFound=Repository not found
+fileNotFoundOrDenied=The file was not found. It does not exist or you do not have read access.
+fileNotLoaded=File not loaded
+fileNotSaved=File not saved
+fileOpenLocation=How would you like to open these file(s)?
+fileWillBeSavedInAppFolder={1} will be saved in the app folder.
+fill=Fill
+fillColor=Fill Color
+find=Find
+fit=Fit
+fitContainer=Resize Container
+fitIntoContainer=Fit into Container
+fitPage=Fit Page
+fitPageWidth=Fit Page Width
+fitTo=Fit to
+fitToSheetsAcross=sheet(s) across
+fitToBy=by
+fitToSheetsDown=sheet(s) down
+fitTwoPages=Two Pages
+fitWindow=Fit Window
+flip=Flip
+flipH=Flip Horizontal
+flipV=Flip Vertical
+flowchart=Flowchart
+folder=Folder
+font=Font
+fontColor=Font Color
+fontFamily=Font Family
+fontSize=Font Size
+forbidden=You are not authorized to access this file
+format=Format
+formatPanel=Format Panel
+formatted=Formatted
+formattedText=Formatted Text
+formatPng=PNG
+formatGif=GIF
+formatJpg=JPEG
+formatPdf=PDF
+formatSvg=SVG
+formatHtmlEmbedded=HTML
+formatSvgEmbedded=SVG (kun XML)
+formatXmlPlain=XML (Plain)
+formatXml=XML
+forum=Discussion/Help Forums
+fromTemplate=From Template
+fromTemplateUrl=From Template URL
+fromText=From Text
+fromUrl=From URL
+fromThisPage=From this page
+fullscreen=Fullscreen
+general=General
+github=GitHub
+global=Global
+googleDocs=Google Docs
+googleDrive=Google Drive
+googleGadget=Google Gadget
+googlePlus=Google+
+googleSites=Google Sites
+gradient=Gradient
+gradientColor=Color
+grid=Grid
+gridColor=Grid Color
+gridSize=Grid Size
+group=Group
+guides=Guides
+hateApp=I hate draw.io
+heading=Heading
+height=Height
+help=Help
+helpTranslate=Help us translate this application
+hide=Hide
+hideIt=Hide {1}
+hidden=Hidden
+home=Home
+horizontal=Horizontal
+horizontalFlow=Horizontal Flow
+horizontalTree=Horizontal Tree
+howTranslate=How good is the translation in your language?
+html=HTML
+htmlText=HTML Text
+iframe=IFrame
+ignore=Ignore
+image=Bildo
+imageUrl=Image URL
+images=Bildoj
+imagePreviewError=This image couldn't be loaded for preview. Please check the URL.
+imageTooBig=Image too big
+imgur=Imgur
+import=Import
+importFrom=Import from
+includeCopyOfMyDiagram=Include a copy of my diagram
+increaseIndent=Increase Indent
+decreaseIndent=Descrease Indent
+insert=Insert
+insertColumnBefore=Insert Column Left
+insertColumnAfter=Insert Column Right
+insertEllipse=Insert Ellipse
+insertImage=Insert Image
+insertHorizontalRule=Insert Horizontal Rule
+insertLink=Insert Link
+insertPage=Insert Page
+insertRectangle=Insert Rectangle
+insertRowBefore=Insert Row Above
+insertRowAfter=Insert Row After
+insertText=Insert Text
+inserting=Inserting
+invalidFilename=Diagram names must not contain the following characters: \ / | : ; { } < > & + ? = "
+invalidLicenseSeeThisPage=Your license is invalid, please see this <a target="_blank" href="https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin">page</a>.
+invalidName=Invalid name
+invalidOrMissingFile=Invalid or missing file
+invalidPublicUrl=Invalid public URL
+isometric=Isometric
+ios=iOS
+italic=Italic
+kennedy=Kennedy
+keyboardShortcuts=Keyboard shortcuts
+layers=Layers
+landscape=Landscape
+language=Lingvo
+leanMapping=Lean Mapping
+lastChange=Last change {1} ago
+lessThanAMinute=less than a minute
+licensingError=Licensing Error
+licenseHasExpired=The license for {1} has expired on {2}. Click here.
+licenseWillExpire=The license for {1} will expire on {2}. Click here.
+linkAccountRequired=If the diagram is not public a Google account is required to view the link.
+linkText=Link Text
+list=List
+minute=minuto
+minutes=minutoj
+hours=horoj
+days=tagoj
+months=monatoj
+years=jaroj
+restartForChangeRequired=Changes will take effect after page refresh.
+laneColor=Lanecolor
+lastModified=Last modified
+layout=Layout
+left=Left
+leftAlign=Left Align
+leftToRight=Left to right
+libraryTooltip=Drag and drop shapes here or click + to insert. Double click to edit.
+lightbox=Lightbox
+line=Line
+lineend=Line end
+lineheight=Line Height
+linestart=Line start
+linewidth=Linewidth
+link=Link
+links=Links
+loading=Loading
+lockUnlock=Lock/Unlock
+loggedOut=Logged Out
+logIn=log in
+loveApp=Mi amas draw.io
+mathematicalTypesetting=Mathematical Typesetting
+makeCopy=Make a Copy
+manual=Manual
+middle=Middle
+misc=Misc
+mockups=Mockups
+modificationDate=Modification date
+modifiedBy=Modified by
+more=More
+moreResults=More Results
+moreShapes=More Shapes
+move=Move
+moveToFolder=Move to Folder
+moving=Moving
+moveSelectionTo=Move selection to {1}
+name=Nomo
+navigation=Navigation
+networking=Networking
+new=Nova
+newLibrary=New Library
+nextPage=Next Page
+noAttachments=No attachments found
+noColor=No Color
+noFiles=No Files
+noFileSelected=No file selected
+noLibraries=No libraries found
+noMoreResults=No more results
+none=None
+noOtherViewers=No other viewers
+noPlugins=No plugins
+noPreview=No preview
+noResponse=No response from server
+noResultsFor=No results for '{1}'
+noRevisions=No revisions
+noSearchResults=No search results found
+noPageContentOrNotSaved=No anchors found on this page or it hasn't been saved yet
+normal=Normala
+north=North
+notADiagramFile=Not a diagram file
+notALibraryFile=Not a library file
+notAvailable=Not available
+notAUtf8File=Not a UTF-8 file
+notConnected=Not connected
+note=Note
+notUsingService=Not using {1}?
+numberedList=Numbered list
+offline=Offline
+ok=Bone
+oneDrive=OneDrive
+online=Online
+opacity=Opacity
+open=Malfermi
+openArrow=Open Arrow
+openExistingDiagram=Open Existing Diagram
+openFile=Malfermi dosieron
+openFrom=Open from
+openLibrary=Open Library
+openLibraryFrom=Open Library from
+openLink=Open Link
+openInNewWindow=Open in New Window
+openInThisWindow=Open in This Window
+openIt=Malfermi {1}
+openRecent=Open Recent
+openSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy
+options=Options
+organic=Organic
+orthogonal=Orthogonal
+otherViewer=other viewer
+otherViewers=other viewers
+outline=Outline
+oval=Oval
+page=Paĝo
+pageContent=Page Content
+pageWithNumber=Paĝo-{1}
+pages=Paĝoj
+pageView=Page View
+pageSetup=Page Setup
+pageScale=Page Scale
+pan=Pan
+panTooltip=Space+Drag to pan
+paperSize=Paper Size
+pattern=Pattern
+paste=Paste
+pasteHere=Paste here
+pasteStyle=Paste Style
+perimeter=Perimeter
+permissionAnyone=Anyone can edit
+permissionAuthor=Only I can edit
+pickFolder=Pick a folder
+pickLibraryDialogTitle=Select Library
+publicDiagramUrl=Public URL of the diagram
+placeholders=Placeholders
+plantUml=PlantUML
+plugins=Plugins
+pluginUrl=Plugin URL
+pluginWarning=The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n
+plusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).
+portrait=Portrait
+position=Position
+posterPrint=Poster Print
+preferences=Preferences
+preview=Preview
+previousPage=Previous Page
+print=Print
+printAllPages=Print All Pages
+procEng=Proc. Eng.
+project=Projekto
+priority=Priority
+properties=Ecoj
+publish=Publish
+publishConfirmation=This will make your diagram public on imgur.com.
+published=Published
+publishedAt=Published at {1}
+publishing=Publishing
+deleteUrl=Link to delete: {1}
+quickStart=Quick start video
+rack=Rack
+radialTree=Radial Tree
+readOnly=Read-only
+reconnecting=Reconnecting
+recentlyUpdated=Recently Updated
+recentlyViewed=Recently Viewed
+redirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.
+realtimeTimeout=It looks like you've made a few changes while offline. We're sorry, these changes cannot be saved.
+redo=Redo
+refresh=Refresh
+regularExpression=Regular Expression
+rememberMe=Remember me
+rememberThisSetting=Remember this setting
+removeFormat=Clear Formatting
+removeFromGroup=Remove from Group
+removeIt=Remove {1}
+removeWaypoint=Remove Waypoint
+rename=Rename
+renamed=Renamed
+renameIt=Rename {1}
+renaming=Renaming
+replace=Replace
+replaceIt={1} already exists. Do you want to replace it?
+replaceExistingDrawing=Replace existing drawing
+required=required
+reset=Reset
+resetView=Reset View
+resize=Resize
+retina=Retina
+responsive=Responsive
+restore=Restore
+restoring=Restoring
+retryingIn=Retrying in {1} second(s)
+retryingLoad=Load failed. Retrying...
+retryingLogin=Login time out. Retrying...
+reverse=Reverse
+revision=Revision
+revisionHistory=Revision History
+right=Right
+rightAlign=Right Align
+rightToLeft=Right to left
+rotate=Rotate
+rotateTooltip=Click and drag to rotate, click to turn by 90 degrees
+rotation=Rotation
+rounded=Rounded
+save=Save
+saveAndExit=Save & Exit
+saveAs=Save as
+saveAsXmlFile=Save as XML file?
+saved=Konservita
+saveDiagramsTo=Save diagrams to
+saveLibrary403=Insufficient permissions to edit this library
+saveLibrary500=There was an error while saving the library
+saving=Konservante
+scratchpad=Scratchpad
+scrollbars=Scrollbars
+search=Search
+searchShapes=Search Shapes
+selectAll=Select All
+selectionOnly=Selection Only
+selectEdges=Select Edges
+selectFile=Select File
+selectFolder=Select Folder
+selectFont=Select Font
+selectNone=Select None
+selectVertices=Select Vertices
+sendMessage=Send
+sendYourFeedbackToDrawIo=Send your feedback to draw.io
+serviceUnavailableOrBlocked=Service unavailable or blocked
+sessionExpired=Your session has expired. Please refresh the browser window.
+sessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save. 
+setAsDefaultStyle=Set as Default Style
+shadow=Shadow
+shape=Shape
+shapes=Shapes
+share=Share
+shareLink=Link for shared editing
+sharp=Sharp
+show=Show
+showEditButton=Show Edit Button
+showStartScreen=Show Start Screen
+sidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.
+signs=Signs
+signOut=Sign out
+simple=Simple
+simpleArrow=Simple Arrow
+size=Size
+solid=Solid
+sourceSpacing=Source Spacing
+south=South
+software=Software
+space=Space
+spacing=Spacing
+specialLink=Special Link
+standard=Standard
+starting=Starting
+straight=Straight
+strokeColor=Line Color
+style=Style
+subscript=Subscript
+summary=Summary
+superscript=Superscript
+support=Support
+sysml=SysML
+tags=Tags
+table=Table
+targetSpacing=Target Spacing
+template=Ŝablono
+templates=Templates
+text=Text
+textAlignment=Text Alignment
+textOpacity=Text Opacity
+theme=Theme
+timeout=Timeout
+title=Title
+to=to
+toBack=To Back
+toFront=To Front
+tooltips=Tooltips
+top=Top
+topAlign=Top Align
+topLeft=Top Left
+topRight=Top Right
+transparent=Transparent
+transparentBackground=Transparent Background
+tryAgain=Try again
+tryOpeningViaThisPage=Try opening via this page.
+turn=Rotate 90°
+type=Type
+twitter=Twitter
+uml=UML
+underline=Underline
+undo=Undo
+ungroup=Ungroup
+unsavedChanges=Unsaved changes
+unsavedChangesClickHereToSave=Unsaved changes. Click here to save.
+untitled=Untitled
+untitledDiagram=Untitled Diagram
+untitledLayer=Untitled Layer
+untitledLibrary=Untitled Library
+unknownError=Unknown error
+updateFile=Update {1}
+updatingDocument=Updating Document. Please wait...
+updatingPreview=Updating Preview. Please wait...
+updatingSelection=Updating Selection. Please wait...
+upload=Alŝuti
+url=URL
+userManual=User Manual
+vertical=Vertical
+verticalFlow=Vertical Flow
+verticalTree=Vertical Tree
+view=View
+viewUrl=Link to view: {1}
+voiceAssistant=Voice Assistant (beta)
+warning=Warning
+waypoints=Waypoints
+west=West
+width=Width
+wiki=Wiki
+wordWrap=Word Wrap
+writingDirection=Writing Direction
+yourEmailAddress=Your email address
+zoom=Zoom
+zoomIn=Zoom In
+zoomOut=Zoom Out
+basic=Basic
+businessprocess=Business Processes
+charts=Charts
+engineering=Engineering
+flowcharts=Flowcharts
+gmdl=Material Design
+mindmaps=Mindmaps
+mockups=Mockups
+networkdiagrams=Network Diagrams
+nothingIsSelected=Nothing is selected
+other=Other
+softwaredesign=Software Design
+venndiagrams=Venn Diagrams
+webEmailOrOther=Web, email or any other internet address
+webLink=Web Link
+wireframes=Wireframes

+ 2 - 0
war/resources/dia_es.txt

@@ -156,6 +156,7 @@ direction=Dirección
 discard=Discard
 discardChangesAndReconnect=Descartar cambios y reconectar 
 googleDriveMissingClickHere=¿No encuentra Google Drive?
+discardChanges=Discard Changes
 disconnected=Desconectado
 distribute=Distribuir
 done=Finalizado
@@ -320,6 +321,7 @@ home=Inicio
 horizontal=Horizontal
 horizontalFlow=Flujo horizontal
 horizontalTree=Árbol horizontal
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=Texto HTML
 iframe=IFrame

+ 2 - 0
war/resources/dia_et.txt

@@ -156,6 +156,7 @@ direction=Direction
 discard=Discard
 discardChangesAndReconnect=Discard Changes and Reconnect
 googleDriveMissingClickHere=Google Drive missing? Click here!
+discardChanges=Discard Changes
 disconnected=Disconnected
 distribute=Distribute
 done=Done
@@ -320,6 +321,7 @@ home=Home
 horizontal=Horizontal
 horizontalFlow=Horizontal Flow
 horizontalTree=Horizontal Tree
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML Text
 iframe=IFrame

+ 2 - 0
war/resources/dia_fa.txt

@@ -156,6 +156,7 @@ direction=‫جهت‬
 discard=Discard
 discardChangesAndReconnect=Discard Changes and Reconnect
 googleDriveMissingClickHere=Google Drive missing? Click here!
+discardChanges=Discard Changes
 disconnected=Disconnected
 distribute=Distribute
 done=‫تامام‬
@@ -320,6 +321,7 @@ home=‫خانه‬
 horizontal=‫افقی‬
 horizontalFlow=Horizontal Flow
 horizontalTree=Horizontal Tree
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=‫متن HTML‬
 iframe=IFrame

+ 2 - 0
war/resources/dia_fi.txt

@@ -156,6 +156,7 @@ direction=Suunta
 discard=Discard
 discardChangesAndReconnect=Hylkää muutokset ja yhdistä uudelleen
 googleDriveMissingClickHere=Google Drive puuttuu?
+discardChanges=Discard Changes
 disconnected=Yhteys katkennut
 distribute=Jaa
 done=Valmis
@@ -320,6 +321,7 @@ home=Koti
 horizontal=Vaakasuora
 horizontalFlow=Vaakasuora vuo
 horizontalTree=Vaakasuora puu
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML teksti
 iframe=IFrame

+ 2 - 0
war/resources/dia_fil.txt

@@ -156,6 +156,7 @@ direction=Direksyon
 discard=Discard
 discardChangesAndReconnect=Huwag pansinin ang mga pagbabago at kumonektang muli
 googleDriveMissingClickHere=Google Drive nawawala?
+discardChanges=Discard Changes
 disconnected=Diskonekta
 distribute=Pamahagi
 done=Tapos
@@ -320,6 +321,7 @@ home=Simula
 horizontal=Pahalang
 horizontalFlow=Pahalang na daloy
 horizontalTree=Pahalang na istraktura
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=Teksto ng HTML
 iframe=IKuwadro

+ 2 - 0
war/resources/dia_fr.txt

@@ -156,6 +156,7 @@ direction=Orientation
 discard=Annuler
 discardChangesAndReconnect=Annuler les modifications et se reconnecter
 googleDriveMissingClickHere=Google Drive manquant?
+discardChanges=Discard Changes
 disconnected=Déconnecté
 distribute=Distribuer
 done=Achevé
@@ -320,6 +321,7 @@ home=Accueil
 horizontal=Horizontal
 horizontalFlow=Flux horizontal
 horizontalTree=Arbre horizontal
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=Texte HTML
 iframe=IFrame

+ 2 - 0
war/resources/dia_gu.txt

@@ -156,6 +156,7 @@ direction=Direction
 discard=Discard
 discardChangesAndReconnect=Discard Changes and Reconnect
 googleDriveMissingClickHere=Google Drive missing? Click here!
+discardChanges=Discard Changes
 disconnected=Disconnected
 distribute=Distribute
 done=Done
@@ -320,6 +321,7 @@ home=Home
 horizontal=Horizontal
 horizontalFlow=Horizontal Flow
 horizontalTree=Horizontal Tree
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML Text
 iframe=IFrame

+ 2 - 0
war/resources/dia_he.txt

@@ -156,6 +156,7 @@ direction=‫כיוון‬
 discard=Discard
 discardChangesAndReconnect=‫בטל שינויים והתחבר מחדש‬
 googleDriveMissingClickHere=‫כונן גוגל חסר?‬
+discardChanges=Discard Changes
 disconnected=‫מנותק‬
 distribute=‫הפץ‬
 done=‫סיום ‬
@@ -320,6 +321,7 @@ home=‫בית‬
 horizontal=‫אופקי‬
 horizontalFlow=‫סידור אופקי‬
 horizontalTree=‫עץ אופקי‬
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=‫טקסט HTML‬
 iframe=IFrame

+ 2 - 0
war/resources/dia_hi.txt

@@ -156,6 +156,7 @@ direction=Direction
 discard=Discard
 discardChangesAndReconnect=Discard Changes and Reconnect
 googleDriveMissingClickHere=Google Drive missing? Click here!
+discardChanges=Discard Changes
 disconnected=Disconnected
 distribute=Distribute
 done=Done
@@ -320,6 +321,7 @@ home=Home
 horizontal=Horizontal
 horizontalFlow=Horizontal Flow
 horizontalTree=Horizontal Tree
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML Text
 iframe=IFrame

+ 2 - 0
war/resources/dia_hr.txt

@@ -156,6 +156,7 @@ direction=Direction
 discard=Discard
 discardChangesAndReconnect=Discard Changes and Reconnect
 googleDriveMissingClickHere=Google Drive missing? Click here!
+discardChanges=Discard Changes
 disconnected=Disconnected
 distribute=Distribute
 done=Done
@@ -320,6 +321,7 @@ home=Home
 horizontal=Horizontal
 horizontalFlow=Horizontal Flow
 horizontalTree=Horizontal Tree
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML Text
 iframe=IFrame

+ 2 - 0
war/resources/dia_hu.txt

@@ -156,6 +156,7 @@ direction=Irány
 discard=Discard
 discardChangesAndReconnect=Változásoktól megvál és újrakapcsolódik
 googleDriveMissingClickHere=Hiányzó Google Drive?
+discardChanges=Discard Changes
 disconnected=Szétkapcsolt
 distribute=Szétoszt
 done=Befejez
@@ -320,6 +321,7 @@ home=Otthon
 horizontal=Vízszintes
 horizontalFlow=Vízszintes folyam
 horizontalTree=Függőleges fa
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML szöveg
 iframe=IFrame

+ 2 - 0
war/resources/dia_i18n.txt

@@ -156,6 +156,7 @@ direction=direction
 discard=discard
 discardChangesAndReconnect=discardChangesAndReconnect
 googleDriveMissingClickHere=googleDriveMissingClickHere
+discardChanges=discardChanges
 disconnected=disconnected
 distribute=distribute
 done=done
@@ -320,6 +321,7 @@ home=home
 horizontal=horizontal
 horizontalFlow=horizontalFlow
 horizontalTree=horizontalTree
+howTranslate=howTranslate
 html=html
 htmlText=htmlText
 iframe=iframe

+ 2 - 0
war/resources/dia_id.txt

@@ -156,6 +156,7 @@ direction=Arah
 discard=Discard
 discardChangesAndReconnect=Batalkan perubahan dan koneksi ulang
 googleDriveMissingClickHere=Google Drive hilang?
+discardChanges=Discard Changes
 disconnected=Terputus
 distribute=Distribusi
 done=Selesai
@@ -320,6 +321,7 @@ home=Beranda
 horizontal=Horisontal
 horizontalFlow=Alur Horisontal
 horizontalTree=Pohon Horisontal
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML teks
 iframe=IFrame

+ 2 - 0
war/resources/dia_it.txt

@@ -156,6 +156,7 @@ direction=Direzione
 discard=Discard
 discardChangesAndReconnect=Annulla le modifiche e riconnetti
 googleDriveMissingClickHere=Google Drive assente?
+discardChanges=Discard Changes
 disconnected=Disconnesso
 distribute=Distribuire
 done=Fatto
@@ -320,6 +321,7 @@ home=Pagina iniziale
 horizontal=Orizzontale
 horizontalFlow=Flusso orizzontale
 horizontalTree=Albero orizzontale
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=Testo HTML
 iframe=IFrame

+ 2 - 0
war/resources/dia_ja.txt

@@ -156,6 +156,7 @@ direction=方向
 discard=Discard
 discardChangesAndReconnect=変更を破棄して再接続します。
 googleDriveMissingClickHere=Google Driveが見つかりませんか?
+discardChanges=Discard Changes
 disconnected=接続が切れました。
 distribute=分布
 done=完了
@@ -320,6 +321,7 @@ home=ホーム
 horizontal=水平
 horizontalFlow=水平フロー図
 horizontalTree=横ツリー図
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTMLテキスト
 iframe=iFrame

+ 2 - 0
war/resources/dia_kn.txt

@@ -156,6 +156,7 @@ direction=Direction
 discard=Discard
 discardChangesAndReconnect=Discard Changes and Reconnect
 googleDriveMissingClickHere=Google Drive missing? Click here!
+discardChanges=Discard Changes
 disconnected=Disconnected
 distribute=Distribute
 done=Done
@@ -320,6 +321,7 @@ home=Home
 horizontal=Horizontal
 horizontalFlow=Horizontal Flow
 horizontalTree=Horizontal Tree
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML Text
 iframe=IFrame

+ 2 - 0
war/resources/dia_ko.txt

@@ -156,6 +156,7 @@ direction=방향
 discard=Discard
 discardChangesAndReconnect=변경내용 취소 후 다시 연결
 googleDriveMissingClickHere=Google Drive가 없습니까?
+discardChanges=Discard Changes
 disconnected=연결 끊김
 distribute=분배
 done=완료
@@ -320,6 +321,7 @@ home=처음으로
 horizontal=수평
 horizontalFlow=수평 흐름도
 horizontalTree=수평 트리 그림
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML 텍스트
 iframe=IFrame

+ 2 - 0
war/resources/dia_lt.txt

@@ -156,6 +156,7 @@ direction=Direction
 discard=Discard
 discardChangesAndReconnect=Discard Changes and Reconnect
 googleDriveMissingClickHere=Google Drive missing? Click here!
+discardChanges=Discard Changes
 disconnected=Disconnected
 distribute=Distribute
 done=Done
@@ -320,6 +321,7 @@ home=Home
 horizontal=Horizontal
 horizontalFlow=Horizontal Flow
 horizontalTree=Horizontal Tree
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML Text
 iframe=IFrame

+ 2 - 0
war/resources/dia_lv.txt

@@ -156,6 +156,7 @@ direction=Direction
 discard=Discard
 discardChangesAndReconnect=Discard Changes and Reconnect
 googleDriveMissingClickHere=Google Drive missing? Click here!
+discardChanges=Discard Changes
 disconnected=Disconnected
 distribute=Distribute
 done=Done
@@ -320,6 +321,7 @@ home=Home
 horizontal=Horizontal
 horizontalFlow=Horizontal Flow
 horizontalTree=Horizontal Tree
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML Text
 iframe=IFrame

+ 2 - 0
war/resources/dia_ml.txt

@@ -156,6 +156,7 @@ direction=Direction
 discard=Discard
 discardChangesAndReconnect=Discard Changes and Reconnect
 googleDriveMissingClickHere=Google Drive missing? Click here!
+discardChanges=Discard Changes
 disconnected=Disconnected
 distribute=Distribute
 done=Done
@@ -320,6 +321,7 @@ home=Home
 horizontal=Horizontal
 horizontalFlow=Horizontal Flow
 horizontalTree=Horizontal Tree
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML Text
 iframe=IFrame

+ 2 - 0
war/resources/dia_mr.txt

@@ -156,6 +156,7 @@ direction=Direction
 discard=Discard
 discardChangesAndReconnect=Discard Changes and Reconnect
 googleDriveMissingClickHere=Google Drive missing? Click here!
+discardChanges=Discard Changes
 disconnected=Disconnected
 distribute=Distribute
 done=Done
@@ -320,6 +321,7 @@ home=Home
 horizontal=Horizontal
 horizontalFlow=Horizontal Flow
 horizontalTree=Horizontal Tree
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML Text
 iframe=IFrame

+ 2 - 0
war/resources/dia_ms.txt

@@ -156,6 +156,7 @@ direction=Arah
 discard=Discard
 discardChangesAndReconnect=Batalkan perubahan dan sambung semula
 googleDriveMissingClickHere=Kehilangan Google Drive?
+discardChanges=Discard Changes
 disconnected=Sambungan putus
 distribute=Mengagih
 done=Siap
@@ -320,6 +321,7 @@ home=Halaman utama
 horizontal=Melintang
 horizontalFlow=Aliran melintang
 horizontalTree=Pohon melintang
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=Teks HTML
 iframe=IFrame

+ 2 - 0
war/resources/dia_nl.txt

@@ -156,6 +156,7 @@ direction=Richting
 discard=Negeren
 discardChangesAndReconnect=Wijzigingen negeren en opnieuw verbinden
 googleDriveMissingClickHere=Google Drive ontbreekt? Klik hier!
+discardChanges=Discard Changes
 disconnected=Verbinding verloren
 distribute=Distribueren
 done=Klaar
@@ -320,6 +321,7 @@ home=Home
 horizontal=Horizontaal
 horizontalFlow=Horizontale stroom
 horizontalTree=Horizontale boom
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML-tekst
 iframe=iFrame

+ 2 - 0
war/resources/dia_no.txt

@@ -156,6 +156,7 @@ direction=Retning
 discard=Discard
 discardChangesAndReconnect=Forkast endringer og koble til på nytt
 googleDriveMissingClickHere=Manglende Google Drive?
+discardChanges=Discard Changes
 disconnected=Frakoblet
 distribute=Distribuer
 done=Utført
@@ -320,6 +321,7 @@ home=Hjem
 horizontal=Horisontal
 horizontalFlow=Horisontal flyt
 horizontalTree=Horisontalt tre
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML-tekst
 iframe=iFrame

+ 2 - 0
war/resources/dia_pl.txt

@@ -156,6 +156,7 @@ direction=Kierunek
 discard=Discard
 discardChangesAndReconnect=Odrzuć zmiany i połącz ponownie
 googleDriveMissingClickHere=Brak Dysku Google?
+discardChanges=Discard Changes
 disconnected=Rozłączony
 distribute=Rozprowadź
 done=Gotowe
@@ -320,6 +321,7 @@ home=Początek
 horizontal=Poziomo
 horizontalFlow=Przepływ poziomy
 horizontalTree=Drzewo poziome
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=Tekst w HTML
 iframe=IFrame

+ 2 - 0
war/resources/dia_pt-br.txt

@@ -156,6 +156,7 @@ direction=Direção 
 discard=Descartar
 discardChangesAndReconnect=Descartar mudanças e reconectar
 googleDriveMissingClickHere=Google Drive ausente?
+discardChanges=Discard Changes
 disconnected=Desconectado
 distribute=Distribuir
 done=Concluído
@@ -320,6 +321,7 @@ home=Página Inicial
 horizontal=Horizontal 
 horizontalFlow=Fluxo horizontal
 horizontalTree=Árvore horizontal
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=Texto HTML
 iframe=IFrame

+ 2 - 0
war/resources/dia_pt.txt

@@ -156,6 +156,7 @@ direction=Direção 
 discard=Discard
 discardChangesAndReconnect=Descartar mudanças e reconectar
 googleDriveMissingClickHere=Google Drive ausente?
+discardChanges=Discard Changes
 disconnected=Desconetado
 distribute=Distribuir
 done=Concluído
@@ -320,6 +321,7 @@ home=Página inicial
 horizontal=Horizontal 
 horizontalFlow=Fluxo horizontal
 horizontalTree=Árvore horizontal
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=Texto HTML
 iframe=IFrame

+ 2 - 0
war/resources/dia_ro.txt

@@ -156,6 +156,7 @@ direction=Direcție
 discard=Discard
 discardChangesAndReconnect=Anulează schimbările şi reconectează-te
 googleDriveMissingClickHere=Lipseşte Google Drive?
+discardChanges=Discard Changes
 disconnected=Deconectat
 distribute=Distribuie
 done=Finalizat
@@ -320,6 +321,7 @@ home=Acasă
 horizontal=Orizontal
 horizontalFlow=Curgere Orizontală
 horizontalTree=Arbore orizontal
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=Text HTML
 iframe=IFrame

+ 2 - 0
war/resources/dia_ru.txt

@@ -156,6 +156,7 @@ direction=Отражение/вращение
 discard=Удалить
 discardChangesAndReconnect=Отказаться от изменений и подключиться заново
 googleDriveMissingClickHere=Отсутствует Google Drive?
+discardChanges=Discard Changes
 disconnected=Отсоединен
 distribute=Распределить
 done=Готово
@@ -320,6 +321,7 @@ home=Главная
 horizontal=Горизонтально
 horizontalFlow=Горизонтальная последовательность
 horizontalTree=Горизонтальное дерево
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML текст
 iframe=IFrame

+ 2 - 0
war/resources/dia_sk.txt

@@ -156,6 +156,7 @@ direction=Direction
 discard=Discard
 discardChangesAndReconnect=Discard Changes and Reconnect
 googleDriveMissingClickHere=Google Drive missing? Click here!
+discardChanges=Discard Changes
 disconnected=Disconnected
 distribute=Distribute
 done=Done
@@ -320,6 +321,7 @@ home=Home
 horizontal=Horizontal
 horizontalFlow=Horizontal Flow
 horizontalTree=Horizontal Tree
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML Text
 iframe=IFrame

+ 2 - 0
war/resources/dia_sl.txt

@@ -156,6 +156,7 @@ direction=Direction
 discard=Discard
 discardChangesAndReconnect=Discard Changes and Reconnect
 googleDriveMissingClickHere=Google Drive missing? Click here!
+discardChanges=Discard Changes
 disconnected=Disconnected
 distribute=Distribute
 done=Done
@@ -320,6 +321,7 @@ home=Home
 horizontal=Horizontal
 horizontalFlow=Horizontal Flow
 horizontalTree=Horizontal Tree
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML Text
 iframe=IFrame

+ 2 - 0
war/resources/dia_sr.txt

@@ -156,6 +156,7 @@ direction=Pravac
 discard=Discard
 discardChangesAndReconnect=Odbaci promene i ponovo se konektuj.
 googleDriveMissingClickHere=Nedostaje li Google Drive?
+discardChanges=Discard Changes
 disconnected=Diskonektovan
 distribute=Distribuiraj
 done=Završeno
@@ -320,6 +321,7 @@ home=Dom
 horizontal=Vodoravan
 horizontalFlow=Vodoravni tok
 horizontalTree=Vodoravno drvo
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML tekst
 iframe=IFrame

+ 2 - 0
war/resources/dia_sv.txt

@@ -156,6 +156,7 @@ direction=Riktning
 discard=Discard
 discardChangesAndReconnect=Kasta ändringar och återanslut
 googleDriveMissingClickHere=Saknas Google Drive?
+discardChanges=Discard Changes
 disconnected=Frånkopplad
 distribute=Distribuera
 done=Klar
@@ -320,6 +321,7 @@ home=Hem
 horizontal=Horisontell
 horizontalFlow=Horisontellt flöde
 horizontalTree=Horisontellt träd
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML text
 iframe=iFrame

+ 2 - 0
war/resources/dia_sw.txt

@@ -156,6 +156,7 @@ direction=Direction
 discard=Discard
 discardChangesAndReconnect=Discard Changes and Reconnect
 googleDriveMissingClickHere=Google Drive missing? Click here!
+discardChanges=Discard Changes
 disconnected=Disconnected
 distribute=Distribute
 done=Done
@@ -320,6 +321,7 @@ home=Home
 horizontal=Horizontal
 horizontalFlow=Horizontal Flow
 horizontalTree=Horizontal Tree
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML Text
 iframe=IFrame

+ 2 - 0
war/resources/dia_ta.txt

@@ -156,6 +156,7 @@ direction=Direction
 discard=Discard
 discardChangesAndReconnect=Discard Changes and Reconnect
 googleDriveMissingClickHere=Google Drive missing? Click here!
+discardChanges=Discard Changes
 disconnected=Disconnected
 distribute=Distribute
 done=Done
@@ -320,6 +321,7 @@ home=Home
 horizontal=Horizontal
 horizontalFlow=Horizontal Flow
 horizontalTree=Horizontal Tree
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML Text
 iframe=IFrame

+ 2 - 0
war/resources/dia_te.txt

@@ -156,6 +156,7 @@ direction=Direction
 discard=Discard
 discardChangesAndReconnect=Discard Changes and Reconnect
 googleDriveMissingClickHere=Google Drive missing? Click here!
+discardChanges=Discard Changes
 disconnected=Disconnected
 distribute=Distribute
 done=Done
@@ -320,6 +321,7 @@ home=Home
 horizontal=Horizontal
 horizontalFlow=Horizontal Flow
 horizontalTree=Horizontal Tree
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML Text
 iframe=IFrame

+ 2 - 0
war/resources/dia_th.txt

@@ -156,6 +156,7 @@ direction=ทิศทาง
 discard=Discard
 discardChangesAndReconnect=ละทิ้งการเปลี่ยนแปลงและเชื่อมต่อใหม่
 googleDriveMissingClickHere=Google Drive หายไปใช่มั้ย?
+discardChanges=Discard Changes
 disconnected=ได้ขาดการเชื่อมต่อ
 distribute=กระจาย
 done=เสร็จสิ้น
@@ -320,6 +321,7 @@ home=หน้าแรก
 horizontal=แนวนอน
 horizontalFlow=แผนผังในแนวนอน
 horizontalTree=แผนผังต้นไม้ในแนวนอน
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=ข้อความ HTML
 iframe=IFrame

+ 2 - 0
war/resources/dia_tr.txt

@@ -156,6 +156,7 @@ direction=Yön
 discard=Discard
 discardChangesAndReconnect=Değişiklikleri göz ardo et ve tekrar bağlan
 googleDriveMissingClickHere=Google Drive eksik mi?
+discardChanges=Discard Changes
 disconnected=Bağlantı koptu
 distribute=Dağıt
 done=Tamamlandı
@@ -320,6 +321,7 @@ home=Anasayfa
 horizontal=Yatay
 horizontalFlow=Yatay akış
 horizontalTree=Yatay ağaç
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML metin 
 iframe=IFrame 

+ 2 - 0
war/resources/dia_uk.txt

@@ -156,6 +156,7 @@ direction=Напрям
 discard=Discard
 discardChangesAndReconnect=Відмовитися від змін і перепідключитися
 googleDriveMissingClickHere=Відсутній Google Drive?
+discardChanges=Discard Changes
 disconnected=Відключений
 distribute=Поширити
 done=Готово
@@ -320,6 +321,7 @@ home=Головна сторінка
 horizontal=Горизонтальний
 horizontalFlow=Горизонтальний потік
 horizontalTree=Горизонтальне дерево
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML текст
 iframe=IFrame

+ 2 - 0
war/resources/dia_vi.txt

@@ -156,6 +156,7 @@ direction=Chiều
 discard=Discard
 discardChangesAndReconnect=Loại bỏ thay đổi và kết nối lại
 googleDriveMissingClickHere=Thiếu Google Drive?
+discardChanges=Discard Changes
 disconnected=Mất kết nối
 distribute=Phân phối
 done=Xong
@@ -320,6 +321,7 @@ home=Cửa sổ chính
 horizontal=Chiều ngang
 horizontalFlow=Luồng ngang
 horizontalTree=Cây ngang
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=Văn bản HTML
 iframe=IFrame

+ 2 - 0
war/resources/dia_zh-tw.txt

@@ -156,6 +156,7 @@ direction=方向
 discard=Discard
 discardChangesAndReconnect=取消修改並重新連線
 googleDriveMissingClickHere=找不到 Google Drive
+discardChanges=Discard Changes
 disconnected=連線中斷
 distribute=等距分佈
 done=完成
@@ -320,6 +321,7 @@ home=首頁
 horizontal=水平
 horizontalFlow=水平流線
 horizontalTree=水平樹狀
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML Text
 iframe=IFrame

+ 2 - 0
war/resources/dia_zh.txt

@@ -156,6 +156,7 @@ direction=方向
 discard=Discard
 discardChangesAndReconnect=取消更改并重新连接
 googleDriveMissingClickHere=没有谷歌硬盘?
+discardChanges=Discard Changes
 disconnected=连接中断
 distribute=等距分布
 done=完成
@@ -320,6 +321,7 @@ home=全域
 horizontal=水平
 horizontalFlow=水平流
 horizontalTree=水平树
+howTranslate=How good is the translation in your language?
 html=HTML
 htmlText=HTML文本
 iframe=IFrame