alexlcdee 8 年之前
父節點
當前提交
939cd440e7
共有 100 個文件被更改,包括 37108 次插入47 次删除
  1. 2 46
      .gitignore
  2. 31 0
      .init.php
  3. 10 1
      composer.json
  4. 20 0
      src/ConnectorAction.php
  5. 24 0
      src/FileManagerPage.php
  6. 3324 0
      src/assets/css/elfinder.full.css
  7. 8 0
      src/assets/css/elfinder.min.css
  8. 113 0
      src/assets/css/theme.css
  9. 二進制
      src/assets/img/arrows-active.png
  10. 二進制
      src/assets/img/arrows-normal.png
  11. 二進制
      src/assets/img/crop.gif
  12. 二進制
      src/assets/img/dialogs.png
  13. 二進制
      src/assets/img/edit_aceeditor.png
  14. 二進制
      src/assets/img/edit_ckeditor.png
  15. 二進制
      src/assets/img/edit_codemirror.png
  16. 二進制
      src/assets/img/edit_creativecloud.png
  17. 二進制
      src/assets/img/edit_pixlreditor.png
  18. 二進制
      src/assets/img/edit_pixlrexpress.png
  19. 二進制
      src/assets/img/edit_simplemde.png
  20. 二進制
      src/assets/img/edit_tinymce.png
  21. 二進制
      src/assets/img/icons-big.png
  22. 二進制
      src/assets/img/icons-small.png
  23. 二進制
      src/assets/img/logo.png
  24. 二進制
      src/assets/img/progress.gif
  25. 二進制
      src/assets/img/quicklook-bg.png
  26. 二進制
      src/assets/img/quicklook-icons.png
  27. 二進制
      src/assets/img/resize.png
  28. 二進制
      src/assets/img/spinner-mini.gif
  29. 二進制
      src/assets/img/toolbar.png
  30. 二進制
      src/assets/img/volume_icon_box.png
  31. 二進制
      src/assets/img/volume_icon_dropbox.png
  32. 二進制
      src/assets/img/volume_icon_ftp.png
  33. 二進制
      src/assets/img/volume_icon_googledrive.png
  34. 二進制
      src/assets/img/volume_icon_local.png
  35. 二進制
      src/assets/img/volume_icon_onedrive.png
  36. 二進制
      src/assets/img/volume_icon_sql.png
  37. 二進制
      src/assets/img/volume_icon_trash.png
  38. 8961 0
      src/assets/js/elfinder.full.js
  39. 8 0
      src/assets/js/elfinder.min.js
  40. 1040 0
      src/assets/js/extras/editors.default.js
  41. 0 0
      src/assets/js/extras/editors.default.min.js
  42. 6 0
      src/assets/js/extras/encoding-japanese.min.js
  43. 69 0
      src/assets/js/extras/quicklook.googledocs.js
  44. 1 0
      src/assets/js/extras/quicklook.googledocs.min.js
  45. 526 0
      src/assets/js/i18n/elfinder.LANG.js
  46. 516 0
      src/assets/js/i18n/elfinder.ar.js
  47. 412 0
      src/assets/js/i18n/elfinder.bg.js
  48. 375 0
      src/assets/js/i18n/elfinder.ca.js
  49. 517 0
      src/assets/js/i18n/elfinder.cs.js
  50. 374 0
      src/assets/js/i18n/elfinder.da.js
  51. 517 0
      src/assets/js/i18n/elfinder.de.js
  52. 374 0
      src/assets/js/i18n/elfinder.el.js
  53. 433 0
      src/assets/js/i18n/elfinder.es.js
  54. 374 0
      src/assets/js/i18n/elfinder.fa.js
  55. 11 0
      src/assets/js/i18n/elfinder.fallback.js
  56. 419 0
      src/assets/js/i18n/elfinder.fo.js
  57. 508 0
      src/assets/js/i18n/elfinder.fr.js
  58. 375 0
      src/assets/js/i18n/elfinder.he.js
  59. 434 0
      src/assets/js/i18n/elfinder.hr.js
  60. 447 0
      src/assets/js/i18n/elfinder.hu.js
  61. 498 0
      src/assets/js/i18n/elfinder.id.js
  62. 448 0
      src/assets/js/i18n/elfinder.it.js
  63. 520 0
      src/assets/js/i18n/elfinder.jp.js
  64. 374 0
      src/assets/js/i18n/elfinder.ko.js
  65. 419 0
      src/assets/js/i18n/elfinder.nl.js
  66. 374 0
      src/assets/js/i18n/elfinder.no.js
  67. 517 0
      src/assets/js/i18n/elfinder.pl.js
  68. 438 0
      src/assets/js/i18n/elfinder.pt_BR.js
  69. 417 0
      src/assets/js/i18n/elfinder.ro.js
  70. 521 0
      src/assets/js/i18n/elfinder.ru.js
  71. 518 0
      src/assets/js/i18n/elfinder.si.js
  72. 519 0
      src/assets/js/i18n/elfinder.sk.js
  73. 374 0
      src/assets/js/i18n/elfinder.sl.js
  74. 374 0
      src/assets/js/i18n/elfinder.sr.js
  75. 375 0
      src/assets/js/i18n/elfinder.sv.js
  76. 468 0
      src/assets/js/i18n/elfinder.tr.js
  77. 374 0
      src/assets/js/i18n/elfinder.ug_CN.js
  78. 391 0
      src/assets/js/i18n/elfinder.uk.js
  79. 374 0
      src/assets/js/i18n/elfinder.vi.js
  80. 487 0
      src/assets/js/i18n/elfinder.zh_CN.js
  81. 520 0
      src/assets/js/i18n/elfinder.zh_TW.js
  82. 10 0
      src/assets/js/i18n/help/cs.html.js
  83. 10 0
      src/assets/js/i18n/help/en.html.js
  84. 10 0
      src/assets/js/i18n/help/jp.html.js
  85. 10 0
      src/assets/js/i18n/help/pl.html.js
  86. 10 0
      src/assets/js/i18n/help/sk.html.js
  87. 414 0
      src/assets/js/proxy/elFinderSupportVer1.js
  88. 二進制
      src/assets/sounds/rm.wav
  89. 22 0
      src/elfinder.html
  90. 2 0
      src/php/.tmp/.htaccess
  91. 23 0
      src/php/MySQLStorage.sql
  92. 50 0
      src/php/autoload.php
  93. 128 0
      src/php/connector.minimal.php-dist
  94. 4008 0
      src/php/elFinder.class.php
  95. 339 0
      src/php/elFinderConnector.class.php
  96. 330 0
      src/php/elFinderFlysystemGoogleDriveNetmount.php
  97. 75 0
      src/php/elFinderPlugin.php
  98. 237 0
      src/php/elFinderSession.php
  99. 59 0
      src/php/elFinderSessionInterface.php
  100. 1842 0
      src/php/elFinderVolumeBox.class.php

+ 2 - 46
.gitignore

@@ -4,53 +4,9 @@ vendor/
 
 # Commit your application's lock file http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file
 # You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file
-# composer.lock
+composer.lock
 
 # ---> JetBrains
 # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio
-
-*.iml
-
 ## Directory-based project format:
-.idea/
-# if you remove the above rule, at least ignore the following:
-
-# User-specific stuff:
-# .idea/workspace.xml
-# .idea/tasks.xml
-# .idea/dictionaries
-
-# Sensitive or high-churn files:
-# .idea/dataSources.ids
-# .idea/dataSources.xml
-# .idea/sqlDataSources.xml
-# .idea/dynamic.xml
-# .idea/uiDesigner.xml
-
-# Gradle:
-# .idea/gradle.xml
-# .idea/libraries
-
-# Mongo Explorer plugin:
-# .idea/mongoSettings.xml
-
-## File-based project format:
-*.ipr
-*.iws
-
-## Plugin-specific files:
-
-# IntelliJ
-/out/
-
-# mpeltonen/sbt-idea plugin
-.idea_modules/
-
-# JIRA plugin
-atlassian-ide-plugin.xml
-
-# Crashlytics plugin (for Android Studio and IntelliJ)
-com_crashlytics_export_strings.xml
-crashlytics.properties
-crashlytics-build.properties
-
+.idea/

+ 31 - 0
.init.php

@@ -0,0 +1,31 @@
+<?php
+
+$version = '2.1.29';
+
+function copy_directory($baseDirectory, $directory, $version)
+{
+    shell_exec("rm -rf src/assets/elfinder/{$directory}");
+    shell_exec("cp -rpf {$baseDirectory}/elFinder-{$version}/{$directory} src/assets/");
+}
+
+$filename = tempnam(sys_get_temp_dir(), uniqid());
+$directory = sys_get_temp_dir() . "/" . uniqid('php', true);
+mkdir($directory);
+
+$file = fopen($filename, 'w+');
+
+$ch = curl_init();
+curl_setopt($ch, CURLOPT_URL, "https://github.com/Studio-42/elFinder/archive/{$version}.tar.gz");
+curl_setopt($ch, CURLOPT_TIMEOUT, 50);
+curl_setopt($ch, CURLOPT_FILE, $file);
+curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
+curl_exec($ch);
+
+shell_exec("tar -xzf {$filename} --directory {$directory}");
+
+copy_directory($directory, 'css', $version);
+copy_directory($directory, 'img', $version);
+copy_directory($directory, 'js', $version);
+copy_directory($directory, 'sounds', $version);
+shell_exec("cp -rpf {$directory}/elFinder-{$version}/php src/");
+copy("{$directory}/elFinder-{$version}/main.default.js", 'src/assets/main.default.js');

+ 10 - 1
composer.json

@@ -13,5 +13,14 @@
     "psr-4": {
       "YiiElfinder2\\": "src/"
     }
-  }
+  },
+  "require": {
+    "adyn/yiins": "dev-master"
+  },
+  "repositories": [
+    {
+      "type": "vcs",
+      "url": "https://git.btlyse.ru/Adyn/yiins.git"
+    }
+  ]
 }

+ 20 - 0
src/ConnectorAction.php

@@ -0,0 +1,20 @@
+<?php
+
+namespace YiiElfinder2;
+
+
+use yiins\web\Action;
+
+class ConnectorAction extends Action
+{
+    public $config= [];
+
+    public function run()
+    {
+        require 'php/autoload.php';
+
+        header('Access-Control-Allow-Origin: *');
+        $connector = new \elFinderConnector(new \elFinder($this->config), true);
+        $connector->run();
+    }
+}

+ 24 - 0
src/FileManagerPage.php

@@ -0,0 +1,24 @@
+<?php
+
+namespace YiiElfinder2;
+
+
+use yiins\web\Action;
+use yiins\Yii;
+
+class FileManagerPage extends Action
+{
+    public $config = [];
+
+    public function run()
+    {
+        $assetsUrl = Yii::web()->getAssetManager()->publish(__DIR__ . '/assets');
+
+        $page = file_get_contents(__DIR__ . '/elfinder.html');
+
+        echo strtr($page, [
+            'assetUrl' => $assetsUrl,
+            'config'   => \CJavaScript::encode($this->config),
+        ]);
+    }
+}

+ 3324 - 0
src/assets/css/elfinder.full.css

@@ -0,0 +1,3324 @@
+/*!
+ * elFinder - file manager for web
+ * Version 2.1.29 (2017-10-07)
+ * http://elfinder.org
+ * 
+ * Copyright 2009-2017, Studio 42
+ * Licensed under a 3-clauses BSD license
+ */
+
+/* File: /css/commands.css */
+/******************************************************************/
+/*                          COMMANDS STYLES                       */
+/******************************************************************/
+
+/********************** COMMAND "RESIZE" ****************************/
+.elfinder-dialog-resize  { margin-top:.3em; }
+.elfinder-resize-type    { float:left; margin-bottom: .4em; }
+.elfinder-resize-control { float: left; }
+.elfinder-resize-control input[type=text] {
+	border:1px solid #aaa;
+	text-align: right;
+	width: 4em;
+}
+.elfinder-resize-control input.elfinder-resize-bg { 
+	text-align: center;
+	width: 5em;
+	direction: ltr;
+}
+.elfinder-dialog-resize .elfinder-resize-imgrotate,
+.elfinder-dialog-resize .elfinder-resize-pallet {
+	cursor: pointer;
+}
+.elfinder-dialog-resize .elfinder-resize-picking {
+	cursor: crosshair;
+}
+.elfinder-dialog-resize .elfinder-resize-grid8 + button {
+	padding-top: 2px;
+	padding-bottom: 2px;
+}
+.elfinder-resize-preview {
+	width:400px;
+	height:400px;
+	padding:10px;
+	background:#fff;
+	border:1px solid #aaa;
+	float:right;
+	position:relative;
+	overflow:hidden;
+	text-align: left;
+	direction: ltr;
+}
+
+.elfinder-resize-handle { position:relative;}
+
+.elfinder-resize-handle-hline,
+.elfinder-resize-handle-vline {
+	position:absolute;
+	background-image:url("../img/crop.gif");
+}
+
+.elfinder-resize-handle-hline {
+	width:100%;
+	height:1px !important;
+	background-repeat:repeat-x;
+}
+.elfinder-resize-handle-vline {
+	width:1px !important;
+	height:100%;
+	background-repeat:repeat-y;
+}
+
+.elfinder-resize-handle-hline-top    { top:0; left:0; }
+.elfinder-resize-handle-hline-bottom { bottom:0; left:0; }
+.elfinder-resize-handle-vline-left   { top:0; left:0; }
+.elfinder-resize-handle-vline-right  { top:0; right:0; }
+
+.elfinder-resize-handle-point {
+	position:absolute;
+	width:8px;
+	height:8px;
+	border:1px solid #777;
+	background:transparent;
+}
+
+.elfinder-resize-handle-point-n  {
+	top:0;
+	left:50%;
+	margin-top:-5px;
+	margin-left:-5px;
+}
+.elfinder-resize-handle-point-ne {
+	top:0;
+	right:0;
+	margin-top:-5px;
+	margin-right:-5px;
+}
+.elfinder-resize-handle-point-e  {
+	top:50%;
+	right:0;
+	margin-top:-5px;
+	margin-right:-5px;
+}
+.elfinder-resize-handle-point-se  {
+	bottom:0;
+	right:0;
+	margin-bottom:-5px;
+	margin-right:-5px;
+}
+.elfinder-resize-handle-point-s  {
+	bottom:0;
+	left:50%;
+	margin-bottom:-5px;
+	margin-left:-5px;
+}
+.elfinder-resize-handle-point-sw {
+	bottom:0;
+	left:0;
+	margin-bottom:-5px;
+	margin-left:-5px;
+}
+.elfinder-resize-handle-point-w  {
+	top:50%;
+	left:0;
+	margin-top:-5px;
+	margin-left:-5px;
+}
+.elfinder-resize-handle-point-nw {
+	top:0;
+	left:0;
+	margin-top:-5px;
+	margin-left:-5px;
+}
+
+.elfinder-resize-spinner {
+	position:absolute;
+	width:200px;
+	height:30px;
+	top:50%;
+	margin-top:-25px;
+	left:50%;
+	margin-left:-100px;
+	text-align:center;
+	background:url(../img/progress.gif) center bottom repeat-x;
+}
+
+.elfinder-resize-row { margin-bottom:9px; position:relative;}
+
+.elfinder-resize-label { float:left; width:80px; padding-top: 3px; }
+
+.elfinder-resize-checkbox-label { border: 1px solid transparent; }
+
+.elfinder-dialog .elfinder-dialog-resize .elfinder-resize-whctrls {
+	margin: -20px 5px 0 5px;
+}
+.elfinder-ltr .elfinder-dialog .elfinder-dialog-resize .elfinder-resize-whctrls {
+	float: right;
+}
+.elfinder-rtl .elfinder-dialog .elfinder-dialog-resize .elfinder-resize-whctrls {
+	float: left;
+}
+
+.elfinder-dialog .elfinder-dialog-resize .ui-resizable-e,
+.elfinder-dialog .elfinder-dialog-resize .ui-resizable-w {
+	height:100%;
+	width:10px;
+}
+.elfinder-dialog .elfinder-dialog-resize .ui-resizable-s,
+.elfinder-dialog .elfinder-dialog-resize .ui-resizable-n {
+	width:100%;
+	height:10px;
+}
+.elfinder-dialog .elfinder-dialog-resize .ui-resizable-e { margin-right: -7px; }
+.elfinder-dialog .elfinder-dialog-resize .ui-resizable-w { margin-left: -7px; }
+.elfinder-dialog .elfinder-dialog-resize .ui-resizable-s { margin-bottom: -7px; }
+.elfinder-dialog .elfinder-dialog-resize .ui-resizable-n {  margin-top: -7px; }
+
+.elfinder-dialog .elfinder-dialog-resize .ui-resizable-se,
+.elfinder-dialog .elfinder-dialog-resize .ui-resizable-sw,
+.elfinder-dialog .elfinder-dialog-resize .ui-resizable-ne,
+.elfinder-dialog .elfinder-dialog-resize .ui-resizable-nw {
+	width: 10px;
+	height: 10px;
+}
+.elfinder-dialog .elfinder-dialog-resize .ui-resizable-se { 
+	background:transparent; 
+	bottom:0; 
+	right:0; 
+	margin-right:-7px;
+	margin-bottom:-7px;
+}
+.elfinder-dialog .elfinder-dialog-resize .ui-resizable-sw {
+	margin-left: -7px;
+	margin-bottom: -7px;
+}
+.elfinder-dialog .elfinder-dialog-resize .ui-resizable-ne {
+	margin-right:-7px;
+	margin-top:-7px;
+}
+.elfinder-dialog .elfinder-dialog-resize .ui-resizable-nw {
+	margin-left: -7px;
+	margin-top: -7px;
+}
+
+.elfinder-touch .elfinder-dialog .elfinder-dialog-resize .ui-resizable-s,
+.elfinder-touch .elfinder-dialog .elfinder-dialog-resize .ui-resizable-n {
+	height: 20px;
+}
+.elfinder-touch .elfinder-dialog .elfinder-dialog-resize .ui-resizable-e,
+.elfinder-touch .elfinder-dialog .elfinder-dialog-resize .ui-resizable-w {
+	width: 20px;
+}
+.elfinder-touch .elfinder-dialog .elfinder-dialog-resize .ui-resizable-se,
+.elfinder-touch .elfinder-dialog .elfinder-dialog-resize .ui-resizable-sw,
+.elfinder-touch .elfinder-dialog .elfinder-dialog-resize .ui-resizable-ne,
+.elfinder-touch .elfinder-dialog .elfinder-dialog-resize .ui-resizable-nw {
+	width: 30px;
+	height: 30px;
+}
+.elfinder-touch .elfinder-dialog .elfinder-dialog-resize .elfinder-resize-preview .ui-resizable-se {
+	width: 30px;
+	height: 30px;
+	zoom: 1;
+	margin: 0;
+}
+.elfinder-dialog-resize  .ui-icon-grip-solid-vertical {
+	position:absolute;
+	top:50%;
+	right:0;
+	margin-top:-8px;
+	margin-right:-11px;
+}
+.elfinder-dialog-resize .ui-icon-grip-solid-horizontal {
+	position:absolute;
+	left:50%;
+	bottom:0;
+	margin-left:-8px;
+	margin-bottom:-11px;;
+}
+
+.elfinder-dialog-resize .elfinder-resize-row .ui-buttonset {
+	float:right;
+}
+
+.elfinder-dialog-resize .elfinder-resize-degree input,
+.elfinder-dialog-resize .elfinder-resize-quality input {
+	width: 2.5em;
+}
+.elfinder-dialog-resize .elfinder-resize-degree button.ui-button {
+	padding: 6px 8px;
+}
+.elfinder-dialog-resize button.ui-button span {
+	padding: 0;
+}
+
+.ui-widget-content .elfinder-dialog-resize .elfinder-resize-rotate-slider {
+	width: 195px;
+	margin: 10px 7px;
+	background-color: #fafafa;
+}
+
+.elfinder-dialog-resize .elfinder-resize-type span.ui-checkboxradio-icon {
+	display: none;
+}
+
+.elfinder-resize-preset-container {
+	box-sizing: border-box;
+	border-radius: 5px;
+}
+
+/********************** COMMAND "EDIT" ****************************/
+/* edit text file textarea */
+.elfinder-file-edit {
+	width:100%;
+	height:99%;
+	margin:0;
+	padding:2px;
+	border:1px solid #ccc;
+	box-sizing: border-box;
+	resize: none;
+}
+.elfinder-touch .elfinder-file-edit {
+	font-size: 16px;
+}
+/* bottom margen for softkeyboard on fullscreen mode */
+.elfinder-touch.elfinder-fullscreen-native textarea.elfinder-file-edit {
+	padding-bottom: 20em;
+	margin-bottom: -20em;
+}
+.std42-dialog .ui-dialog-titlebar select { font-size: 12px; }
+.std42-dialog .ui-dialog-buttonpane .elfinder-dialog-confirm-encoding { font-size: 12px; }
+
+
+/********************** COMMAND "SORT" ****************************/
+/* for list table header sort triangle icon */
+div.elfinder-cwd-wrapper-list tr.ui-state-default td {
+	position: relative;
+}
+div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon {
+	position: absolute;
+	top: 4px;
+	left: 0;
+	right: 0;
+	margin: auto 0px auto auto;
+}
+.elfinder-touch div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon {
+	top: 7px;
+}
+.elfinder-rtl div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon {
+	margin: auto auto auto 0px;
+}
+/********************** COMMAND "HELP" ****************************/
+/* help dialog */
+.elfinder-help { margin-bottom:.5em; }
+
+/* fix tabs */
+.elfinder-help .ui-tabs-panel {
+	padding:.5em;
+	overflow: auto;
+	padding: 10px;
+}
+.elfinder-dialog .ui-tabs .ui-tabs-nav li a { padding:.2em 1em;}
+
+.elfinder-help-shortcuts {
+	height: auto;
+	padding: 10px;
+	margin: 0;
+	box-sizing: border-box;
+}
+.elfinder-help-shortcut { white-space:nowrap; clear:both;}
+
+.elfinder-help-shortcut-pattern { float:left; width:160px;}
+
+.elfinder-help-logo {
+	width:100px;
+	height:96px;
+	float:left;
+	margin-right:1em;
+	background:url('../img/logo.png') center center no-repeat;
+}
+
+.elfinder-help h3 { font-size:1.5em; margin:.2em 0 .3em 0; }
+
+.elfinder-help-separator { clear:both; padding:.5em;  }
+
+.elfinder-help-link { padding:2px; }
+
+.elfinder-help .ui-priority-secondary { font-size:.9em;}
+
+.elfinder-help .ui-priority-primary { margin-bottom:7px;}
+
+.elfinder-help-team { 
+	clear: both; 
+	text-align:right; 
+	border-bottom:1px solid #ccc;
+	margin:.5em 0;
+	font-size:.9em;
+}
+
+.elfinder-help-team div { float:left; }
+.elfinder-help-license { font-size:.9em;}
+
+.elfinder-help-disabled {
+	font-weight:bold;
+	text-align:center;
+	margin:90px 0;
+}
+
+.elfinder-help .elfinder-dont-panic {
+	display:block;
+	border:1px solid transparent;
+	width:200px;
+	height:200px;
+	margin:30px auto;
+	text-decoration:none;
+	text-align:center;
+	position:relative;
+	background:#d90004;
+	-moz-box-shadow: 5px 5px 9px #111;
+	-webkit-box-shadow:  5px 5px 9px #111;
+	box-shadow:  5px 5px 9px #111;
+	background: -moz-radial-gradient(80px 80px, circle farthest-corner,  #d90004 35%, #960004 100%);
+	background: -webkit-gradient(radial, 80 80, 60, 80 80, 120, from(#d90004), to(#960004));
+	-moz-border-radius: 100px;
+	-webkit-border-radius: 100px;
+	border-radius: 100px;
+	outline:none;
+}
+
+.elfinder-help .elfinder-dont-panic span {
+	font-size:3em;
+	font-weight:bold;
+	text-align:center;
+	color:#fff;
+	position:absolute;
+	left:0;
+	top:45px;
+}
+
+.elfinder-help-debug {
+	height:100%;
+	padding:0;
+	margin:0;
+	overflow:none;
+	border: none;
+}
+
+.elfinder-help-debug .ui-tabs-panel {
+	padding: 0;
+	margin: 0;
+	overflow:auto;
+}
+
+.elfinder-help-debug fieldset {
+	margin-bottom: 10px;
+	border-color: #778899;
+	border-radius: 10px;
+}
+
+.elfinder-help-debug legend {
+	font-size: 1.2em;
+	font-weight: bold;
+	color: #2e8b57;
+}
+
+.elfinder-help-debug dl {
+	margin: 0;
+}
+
+.elfinder-help-debug dt {
+  color: #778899;
+}
+
+.elfinder-help-debug dt:before {
+	content: "[";
+}
+.elfinder-help-debug dt:after {
+	content: "]";
+}
+
+.elfinder-help-debug dd {
+	margin-left: 1em;
+}
+
+.elfinder-help-debug dd span {
+  /*font-size: 1.2em;*/
+}
+
+.elfinder-help-preference {
+	padding: 10px;
+	height: auto;
+	min-height: 100%;
+	box-sizing: border-box;
+}
+
+.elfinder-help-preference dl {
+	width: 100%;
+}
+.elfinder-help-preference dt {
+	display: block;
+	width: 200px;
+	clear: left;
+	float: left;
+	max-width: 50%;
+}
+.elfinder-rtl .elfinder-help-preference dt {
+	clear: right;
+	float: right;
+}
+.elfinder-help-preference dd {
+	margin-bottom: 1em;
+}
+.elfinder-help-preference dd label,
+.elfinder-help-preference dd input[type=checkbox] {
+	white-space: nowrap;
+	display: inline-block;
+	cursor: pointer;
+}
+
+/********************** COMMAND "INFO" ****************************/
+.elfinder-rtl .elfinder-info-title .elfinder-cwd-icon:before {
+	right: 33px;
+    left: auto;
+}
+.elfinder-info-title .elfinder-cwd-icon.elfinder-cwd-bgurl:after {
+	content: none;
+}
+
+/********************** COMMAND "UPLOAD" ****************************/
+.elfinder-upload-dialog-wrapper .elfinder-upload-dirselect {
+	position: absolute;
+	bottom: 2px;
+	width: 16px;
+	height: 16px;
+	padding: 10px;
+	border: none;
+	overflow: hidden;
+	cursor: pointer; 
+}
+.elfinder-ltr .elfinder-upload-dialog-wrapper .elfinder-upload-dirselect {
+	left: 2px;
+}
+.elfinder-rtl .elfinder-upload-dialog-wrapper .elfinder-upload-dirselect {
+	right: 2px;
+}
+
+/********************** COMMAND "RM" ****************************/
+.elfinder-ltr .elfinder-rm-title .elfinder-cwd-icon:before {
+	left: 38px;
+}
+.elfinder-rtl .elfinder-rm-title .elfinder-cwd-icon:before {
+	right: 86px;
+    left: auto;
+}
+.elfinder-rm-title .elfinder-cwd-icon.elfinder-cwd-bgurl:after {
+	content: none;
+}
+/* File: /css/common.css */
+/*********************************************/
+/*            COMMON ELFINDER STUFFS         */
+/*********************************************/
+
+/* for old jQuery UI */
+.ui-front {
+    z-index: 100;
+}
+
+/* common container */
+.elfinder {
+	padding: 0;
+	position:relative;
+	display:block;
+	visibility: visible;
+	font-size: 18px;
+	font-family: Verdana,Arial,Helvetica,sans-serif;
+}
+
+/* in lazy execution status */
+.elfinder.elfinder-processing * {
+	cursor: progress !important
+}
+.elfinder.elfinder-processing.elfinder-touch .elfinder-workzone:after {
+	position: absolute;
+	top: 0;
+	width: 100%;
+	height: 3px;
+	content: '';
+	left: 0;
+	background-image: url(../img/progress.gif);
+	opacity: .6;
+	pointer-events: none;
+}
+
+/* for disable select of Touch devices */
+.elfinder *:not(input):not(textarea):not(select):not([contenteditable=true]),
+.elfinder-contextmenu *:not(input):not(textarea):not(select):not([contenteditable=true]) {
+	-webkit-tap-highlight-color: rgba(0,0,0,0);
+	/*-webkit-touch-callout:none;*/
+	-webkit-user-select:  none;
+	-moz-user-select:     none;
+	-khtml-user-select:   none;
+	user-select:          none;
+}
+
+.elfinder .overflow-scrolling-touch {
+	-webkit-overflow-scrolling: touch;
+}
+
+/* right to left enviroment */
+.elfinder-rtl { text-align:right; direction:rtl; }
+
+/* nav and cwd container */
+.elfinder-workzone {
+	padding: 0;
+	position:relative;
+	overflow:hidden;
+}
+
+/* dir/file permissions and symlink markers */
+.elfinder-lock,
+.elfinder-perms,
+.elfinder-symlink {
+	position:absolute;
+	width:16px;
+	height:16px;
+	background-image:url(../img/toolbar.png);
+	background-repeat:no-repeat;
+	background-position:0 -528px;
+}
+
+.elfinder-symlink { }
+
+/* noaccess */
+.elfinder-na .elfinder-perms { background-position:0 -96px; }
+
+/* read only */
+.elfinder-ro .elfinder-perms { background-position:0 -64px;}
+
+/* write only */
+.elfinder-wo .elfinder-perms { background-position:0 -80px;}
+
+/* volume type group */
+.elfinder-group .elfinder-perms { background-position:0 0px;}
+
+/* locked */
+.elfinder-lock {
+	background-position:0 -656px;
+}
+
+/* drag helper */
+.elfinder-drag-helper {
+	top: 0px;
+	left: 0px;
+	width:70px;
+	height:60px;
+	padding:0 0 0 25px;
+	z-index:100000;
+	will-change: left, top;
+}
+.elfinder-drag-helper.html5-native {
+	position: absolute;
+	top: -1000px;
+	left: -1000px;
+}
+
+/* drag helper status icon (default no-drop) */
+.elfinder-drag-helper-icon-status {
+	position:absolute;
+	width:16px;
+	height:16px;
+	left:42px;
+	top:60px;
+	background:url('../img/toolbar.png') 0 -96px no-repeat;
+	display: block;
+}
+
+/* show "up-arrow" icon for move item */
+.elfinder-drag-helper-move .elfinder-drag-helper-icon-status {
+	background-position:0 -720px;
+}
+/* show "plus" icon when ctrl/shift pressed */
+.elfinder-drag-helper-plus .elfinder-drag-helper-icon-status {
+	background-position:0 -544px;
+}
+
+/* files num in drag helper */
+.elfinder-drag-num {
+	position:absolute;
+	top:0;
+	left:0;
+	width:16px;
+	height:14px;
+	text-align:center;
+	padding-top:2px;
+	
+	font-weight:bold;
+	color:#fff;
+	background-color:red;
+	-moz-border-radius: 8px; 
+	-webkit-border-radius: 8px; 
+	border-radius: 8px;
+}
+
+/* icon in drag helper */
+.elfinder-drag-helper .elfinder-cwd-icon { margin:0 0 0 -24px; float:left; }
+
+/* transparent overlay */
+.elfinder-overlay {
+	position: absolute;
+	opacity: .2;
+	filter: Alpha(Opacity=20);
+}
+
+/* panels under/below cwd (for search field etc) */
+.elfinder .elfinder-panel {
+	position:relative;
+	background-image:none;
+	padding:7px 12px;
+}
+
+/* for html5 drag and drop */
+[draggable=true] {
+	-khtml-user-drag: element;
+}
+
+/* for place holder to content editable elements */ 
+.elfinder [contentEditable=true]:empty:not(:focus):before {
+	content:attr(data-ph);
+}
+
+/* bottom tray */
+.elfinder div.elfinder-bottomtray {
+	position: fixed;
+	bottom: 0;
+	max-width:100%;
+	opacity: .8;
+}
+.elfinder.elfinder-ltr div.elfinder-bottomtray {
+	left: 0;
+}
+.elfinder.elfinder-rtl div.elfinder-bottomtray {
+	right: 0;
+}
+
+/* tooltip */
+.elfinder-ui-tooltip {
+	font-size: 0.78em;
+	padding: 2px;
+}
+
+/* File: /css/contextmenu.css */
+/* menu and submenu */
+.elfinder .elfinder-contextmenu,
+.elfinder .elfinder-contextmenu-sub {
+	position:absolute;
+	border:1px solid #aaa;
+	background:#fff;
+	color:#555;
+	padding:4px 0;
+	top: 0;
+	left: 0;
+}
+
+/* submenu */
+.elfinder .elfinder-contextmenu-sub { top:5px; }
+/* submenu in rtl/ltr enviroment */
+.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-sub { margin-left:-5px; }
+.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-sub { margin-right:-5px; }
+
+/* menu item */
+.elfinder .elfinder-contextmenu-header {
+	margin-top: -4px;
+	padding: 0 .5em .2ex;
+	border: none;
+	text-align: center;
+}
+.elfinder .elfinder-contextmenu-header span {
+	font-weight: normal;
+	font-size: 0.8em;
+	font-weight: bolder;
+}
+.elfinder .elfinder-contextmenu-item {
+	position:relative;
+	display:block;
+	padding:4px 30px;
+	text-decoration:none;
+	white-space:nowrap;
+	cursor:default;
+}
+.elfinder .elfinder-contextmenu-item.ui-state-active {
+	border: none;
+}
+.elfinder .elfinder-contextmenu-item .ui-icon {
+	width:16px;
+	height:16px;
+	position:absolute;
+	left:auto;
+	right:auto;
+	top:50%;
+	margin-top:-8px;
+}
+.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-item .ui-icon {
+	left: 2px;
+}
+.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-item .ui-icon {
+	right: 2px;
+}
+.elfinder-touch .elfinder-contextmenu-item {
+	padding:12px 38px;
+}
+
+/* root icon of each volume */
+.elfinder-navbar-root-local.elfinder-contextmenu-icon { background-image:url("../img/volume_icon_local.png"); }
+.elfinder-navbar-root-ftp.elfinder-contextmenu-icon { background-image:url("../img/volume_icon_ftp.png"); }
+.elfinder-navbar-root-sql.elfinder-contextmenu-icon { background-image:url("../img/volume_icon_sql.png"); }
+.elfinder-navbar-root-dropbox.elfinder-contextmenu-icon { background-image:url("../img/volume_icon_dropbox.png"); }
+.elfinder-navbar-root-googledrive.elfinder-contextmenu-icon { background-image:url("../img/volume_icon_googledrive.png"); }
+.elfinder-navbar-root-onedrive.elfinder-contextmenu-icon { background-image:url("../img/volume_icon_onedrive.png"); }
+.elfinder-navbar-root-box.elfinder-contextmenu-icon { background-image:url("../img/volume_icon_box.png"); }
+
+/* text in item */
+.elfinder .elfinder-contextmenu .elfinder-contextmenu-item span { display:block; }
+
+/* submenu item in rtl/ltr enviroment */
+.elfinder .elfinder-contextmenu-sub .elfinder-contextmenu-item { padding-left:12px; padding-right:12px; }
+.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-item { text-align:left; }
+.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-item { text-align:right; }
+.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon { padding-left:28px;  }
+.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon { padding-right:28px; }
+.elfinder-touch .elfinder-contextmenu-ltr .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon { padding-left:36px;  }
+.elfinder-touch .elfinder-contextmenu-rtl .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon { padding-right:36px; }
+
+/* command/submenu icon */
+.elfinder .elfinder-contextmenu-extra-icon,
+.elfinder .elfinder-contextmenu-arrow,
+.elfinder .elfinder-contextmenu-icon {
+	position:absolute;
+	top:50%;
+	margin-top:-8px;
+	overflow: hidden;
+}
+
+/* command icon in rtl/ltr enviroment */
+.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-icon { left:8px; }
+.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-icon { right:8px; }
+.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-extra-icon { right:8px; }
+.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-extra-icon { left:8px; }
+
+/* arrow icon */
+.elfinder .elfinder-contextmenu-arrow {
+	width:16px;
+	height:16px;
+	background:url('../img/arrows-normal.png') 5px 4px no-repeat;
+}
+
+/* arrow icon in rtl/ltr enviroment */
+.elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-arrow { right:5px; }
+.elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-arrow { left:5px; background-position: 0 -10px; }
+
+/* command extra icon's <a>, <span> tag */
+.elfinder .elfinder-contextmenu-extra-icon a, 
+.elfinder .elfinder-contextmenu-extra-icon span {
+	display: inline-block;
+	width: 100%;
+	height: 100%;
+	padding: 20px;
+	margin: 0;
+	color: transparent !important;
+	text-decoration: none;
+	cursor: pointer;
+}
+
+/* disable ui border/bg image on hover */
+.elfinder .elfinder-contextmenu .ui-state-hover { border:0 solid; background-image:none;}
+
+/* separator */
+.elfinder .elfinder-contextmenu-separator {
+	height:0px;
+	border-top:1px solid #ccc;
+	margin:0 1px;
+}
+
+/* for CSS style priority to ui-state-disabled - "background-image: none" */
+.elfinder .elfinder-button-icon.ui-state-disabled {
+	background-image: url('../img/toolbar.png') !important;
+}
+/* File: /css/cwd.css */
+/******************************************************************/
+/*                     CURRENT DIRECTORY STYLES                   */
+/******************************************************************/
+/* cwd container to avoid selectable on scrollbar */
+.elfinder-cwd-wrapper {
+	overflow: auto;
+	position:relative;
+	padding:2px;
+	margin:0;
+}
+
+.elfinder-cwd-wrapper-list { padding:0; }
+
+/* container */
+.elfinder-cwd { 
+	position:relative;
+	cursor:default;
+	padding:0;
+	margin:0;
+	-ms-touch-action: auto;
+	touch-action: auto;
+}
+
+/* container active on dropenter */
+.elfinder .elfinder-cwd-wrapper.elfinder-droppable-active {
+	outline: 2px solid #8cafed;
+	outline-offset: -2px;
+}
+
+.elfinder-cwd-wrapper-empty .elfinder-cwd:after {
+	display: block;
+	position: absolute;
+	top: 40%;
+	left: 0;
+	right: 0;
+	margin-top: -2em;
+	line-height: 1.5em;
+	text-align: center;
+	white-space: pre-wrap;
+	opacity: 0.6;
+	filter: Alpha(Opacity=60);
+	font-weight: bold;
+}
+
+.elfinder-cwd-file .elfinder-cwd-select {
+	position: absolute;
+	top: 0px;
+	left: 0px;
+	width: 30px;
+	height: 30px;
+	background-color: transparent;
+	opacity: .4;
+	filter:Alpha(Opacity=40);
+}
+
+.elfinder-cwd-file.ui-selected .elfinder-cwd-select {
+	opacity: .8;
+	filter:Alpha(Opacity=80);
+}
+.elfinder-rtl .elfinder-cwd-file .elfinder-cwd-select {
+	left: auto;
+	right: 0px;
+}
+
+.elfinder .elfinder-cwd-selectall {
+	position: absolute;
+	width: 30px;
+	height: 30px;
+	top: 0px;
+	opacity: .8;
+	filter:Alpha(Opacity=80);
+}
+
+.elfinder .elfinder-workzone.elfinder-cwd-wrapper-empty .elfinder-cwd-selectall {
+	display: none;
+}
+
+/************************** ICONS VIEW ********************************/
+
+.elfinder-ltr .elfinder-workzone .elfinder-cwd-selectall {
+	text-align: right;
+	right: 18px;
+	left: auto;
+}
+
+.elfinder-rtl .elfinder-workzone .elfinder-cwd-selectall {
+	text-align: left;
+	right: auto;
+	left: 18px;
+}
+
+.elfinder-ltr.elfinder-mobile .elfinder-workzone .elfinder-cwd-selectall {
+	right: 0px;
+}
+
+.elfinder-rtl.elfinder-mobile .elfinder-workzone .elfinder-cwd-selectall {
+	left: 0px;
+}
+
+.elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-select.ui-state-hover {
+	background-color: transparent;
+}
+
+/* file container */
+.elfinder-cwd-view-icons .elfinder-cwd-file {
+	width:120px;
+	height:90px;
+	padding-bottom:2px;
+	cursor:default;
+	border:none;
+/*	overflow:hidden;*/
+	position:relative;
+}
+
+/*.elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-select {
+	top: 0px;
+	left: 0px;
+}*/
+
+/*.elfinder-rtl .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-select {
+	left: auto;
+	right: 7px;
+}*/
+
+/* ltr/rtl enviroment */
+.elfinder-ltr .elfinder-cwd-view-icons .elfinder-cwd-file { float:left;  margin:0 3px 2px 0; }
+.elfinder-rtl .elfinder-cwd-view-icons .elfinder-cwd-file { float:right; margin:0 0 5px 3px; }
+
+/* remove ui hover class border */
+.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover { border:0 solid; }
+
+/* icon wrapper to create selected highlight around icon */
+.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper {
+	width:52px;
+	height:52px;
+	margin:1px auto 1px auto;
+	padding:2px;
+	position:relative;
+}
+
+/* file name place */
+.elfinder-cwd-view-icons .elfinder-cwd-filename {
+	text-align: center;
+	max-height: 2.4em;
+	line-height: 1.2em;
+	white-space: pre-line;
+	overflow: hidden;
+	text-overflow: ellipsis;
+	-o-text-overflow: ellipsis;
+	margin: 3px 1px 0 1px;
+	padding: 1px;
+	-moz-border-radius: 8px; 
+	-webkit-border-radius: 8px; 
+	border-radius: 8px;
+	/* for webkit CSS3 */
+	word-break: break-word;
+	overflow-wrap: break-word;
+	display: -webkit-box;
+	-webkit-line-clamp: 2;
+	-webkit-box-orient: vertical;
+}
+
+/* permissions/symlink markers */
+.elfinder-cwd-view-icons .elfinder-perms { bottom:4px; right:2px; }
+.elfinder-cwd-view-icons .elfinder-lock { top:-3px; right:-2px; }
+.elfinder-cwd-view-icons .elfinder-symlink { bottom:6px; left:0px; }
+
+/* icon/thumbnail */
+.elfinder-cwd-icon {
+	display:block;
+	width:48px;
+	height:48px;
+	margin:0 auto;
+	background: url('../img/icons-big.png') 0 0 no-repeat;
+	-moz-background-clip: padding; 
+	-webkit-background-clip: padding-box; 
+	background-clip: padding-box;
+}
+
+/* volume icon of root in folder */
+.elfinder-navbar-root-local .elfinder-cwd-icon,
+.elfinder-cwd .elfinder-navbar-root-local.elfinder-droppable-active .elfinder-cwd-icon,
+.elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon {
+	background-image:url("../img/volume_icon_local.png");
+	background-position:0 0;
+	background-size: contain;
+}
+.elfinder-cwd .elfinder-navbar-root-local.elfinder-droppable-active .elfinder-cwd-icon {
+	background-position:1px -1px;
+}
+.elfinder-navbar-root-trash .elfinder-cwd-icon,
+.elfinder-cwd .elfinder-navbar-root-trash.elfinder-droppable-active .elfinder-cwd-icon,
+.elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon {
+	background-image:url("../img/volume_icon_trash.png");
+	background-position:0 0;
+	background-size: contain;
+}
+.elfinder-cwd .elfinder-navbar-root-trash.elfinder-droppable-active .elfinder-cwd-icon {
+	background-position:1px -1px;
+}
+.elfinder-navbar-root-ftp .elfinder-cwd-icon,
+.elfinder-cwd .elfinder-navbar-root-ftp.elfinder-droppable-active .elfinder-cwd-icon,
+.elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon  {
+	background-image:url("../img/volume_icon_ftp.png");
+	background-position:0 0;
+	background-size: contain;
+}
+.elfinder-cwd .elfinder-navbar-root-ftp.elfinder-droppable-active .elfinder-cwd-icon {
+	background-position:1px -1px;
+}
+.elfinder-navbar-root-sql .elfinder-cwd-icon,
+.elfinder-cwd .elfinder-navbar-root-sql.elfinder-droppable-active .elfinder-cwd-icon,
+.elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon  {
+	background-image:url("../img/volume_icon_sql.png");
+	background-position:0 0;
+	background-size: contain;
+}
+.elfinder-cwd .elfinder-navbar-root-sql.elfinder-droppable-active .elfinder-cwd-icon {
+	background-position:1px -1px;
+}
+.elfinder-navbar-root-dropbox .elfinder-cwd-icon,
+.elfinder-cwd .elfinder-navbar-root-dropbox.elfinder-droppable-active .elfinder-cwd-icon,
+.elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon  {
+	background-image:url("../img/volume_icon_dropbox.png");
+	background-position:0 0;
+	background-size: contain;
+}
+.elfinder-cwd .elfinder-navbar-root-dropbox.elfinder-droppable-active .elfinder-cwd-icon {
+	background-position:1px -1px;
+}
+.elfinder-navbar-root-googledrive .elfinder-cwd-icon,
+.elfinder-cwd .elfinder-navbar-root-googledrive.elfinder-droppable-active .elfinder-cwd-icon,
+.elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon  {
+	background-image:url("../img/volume_icon_googledrive.png");
+	background-position:0 0;
+	background-size: contain;
+}
+.elfinder-navbar-root-onedrive .elfinder-cwd-icon,
+.elfinder-cwd .elfinder-navbar-root-onedrive.elfinder-droppable-active .elfinder-cwd-icon,
+.elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon  {
+	background-image:url("../img/volume_icon_onedrive.png");
+	background-position:0 0;
+	background-size: contain;
+}
+.elfinder-navbar-root-box .elfinder-cwd-icon,
+.elfinder-cwd .elfinder-navbar-root-box.elfinder-droppable-active .elfinder-cwd-icon,
+.elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon  {
+	background-image:url("../img/volume_icon_box.png");
+	background-position:0 0;
+	background-size: contain;
+}
+.elfinder-cwd .elfinder-navbar-root-googledrive.elfinder-droppable-active .elfinder-cwd-icon,
+.elfinder-cwd .elfinder-navbar-root-onedrive.elfinder-droppable-active .elfinder-cwd-icon,
+.elfinder-cwd .elfinder-navbar-root-box.elfinder-droppable-active .elfinder-cwd-icon {
+	background-position:1px -1px;
+}
+.elfinder-navbar-root-network .elfinder-cwd-icon,
+.elfinder-cwd .elfinder-navbar-root-network.elfinder-droppable-active .elfinder-cwd-icon,
+.elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon  {
+	background-image:url("../img/toolbar.png");
+	background-position: 0 71.65%; /* Don't forget change % when toolbar.png edited */
+	background-size: cover;
+}
+.elfinder-cwd .elfinder-navbar-root-network.elfinder-droppable-active .elfinder-cwd-icon {
+	background-position:1px -1px;
+}
+
+/* type badge in "icons" view */
+.elfinder-cwd-icon:before {
+	content: none;
+	position: absolute;
+	left: 0px;
+	top: 5px;
+	min-width: 20px;
+	max-width: 84px;
+	text-align: center;
+	padding: 1px 4px;
+	border-radius: 4px;
+	font-family: Verdana;
+	font-size: 10px;
+	-webkit-transform: scale(0.9);
+	-moz-transform: scale(0.9);
+	-ms-transform: scale(0.9);
+	-o-transform: scale(0.9);
+	transform: scale(0.9);
+}
+.elfinder-cwd-view-icons .elfinder-cwd-icon.elfinder-cwd-bgurl:before {
+	left: -10px;
+}
+
+/* icon image has type */
+.elfinder-cwd-icon.elfinder-cwd-icon-x-empty:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-plain:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-rtf:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-rtfd:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-pdf:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-html:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-css:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-javascript:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-x-javascript:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-x-perl:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-x-python:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-x-ruby:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-x-sh:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-x-shellscript:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-x-c:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-x-csrc:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-x-chdr:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-x-c--:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-x-c--src:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-x-c--hdr:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-x-java:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-x-java-source:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-x-php:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-xml:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-zip:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-x-zip:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-x-xz:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-x-7z-compressed:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-x-gzip:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-x-tar:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-x-bzip:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-x-bzip2:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-x-rar:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-x-rar-compressed:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-x-shockwave-flash:before { content: none }
+
+/* addtional type badge name */
+.elfinder-cwd-icon.elfinder-cwd-icon-mp2t:before { content: 'ts' }
+.elfinder-cwd-icon.elfinder-cwd-icon-dash-xml:before { content: 'dash' }
+.elfinder-cwd-icon.elfinder-cwd-icon-x-mpegurl:before { content: 'hls' }
+
+/* thumbnail image */
+.elfinder-cwd-icon.elfinder-cwd-bgurl {
+	background-position: center center;
+	background-repeat: no-repeat;
+	-moz-background-size: contain;
+	background-size: contain;
+}
+/* thumbnail self */
+.elfinder-cwd-icon.elfinder-cwd-bgurl.elfinder-cwd-bgself {
+	-moz-background-size: cover;
+	background-size: cover;
+}
+/* thumbnail crop*/
+.elfinder-cwd-icon.elfinder-cwd-bgurl {
+	-moz-background-size: cover;
+	background-size: cover;
+}
+.elfinder-cwd-icon.elfinder-cwd-bgurl:after {
+	content: ' ';
+}
+.elfinder-cwd-bgurl:after {
+	position: relative;
+	display: inline-block;
+	top: 36px;
+	left: -38px;
+	width: 48px;
+	height: 48px;
+	background: url('../img/icons-big.png') 0 0 no-repeat;
+	background-size: auto !important;
+	opacity: .8;
+	filter: Alpha(Opacity=60);
+	-webkit-transform-origin: 54px -24px;
+	-webkit-transform: scale(.6);
+	-moz-transform-origin: 54px -24px;
+	-moz-transform: scale(.6);
+	-ms-transform-origin: 54px -24px;
+	-ms-transform: scale(.6);
+	-o-transform-origin: 54px -24px;
+	-o-transform: scale(.6);
+	transform-origin: 54px -24px;
+	transform: scale(.6);
+}
+/* thumbnail image and draging icon overlay none */
+.elfinder-cwd-icon.elfinder-cwd-icon-drag:before,
+.elfinder-cwd-icon.elfinder-cwd-icon-drag:after,
+.elfinder-cwd-icon-image.elfinder-cwd-bgurl:after {
+	content: none;
+}
+/* thumbnail image video overlay */
+.elfinder-cwd-icon-video:after {
+	top: 32px;
+	left: -26px;
+	height: 25px;
+	width: 22px;
+	background-position: 0px -373px;
+	-webkit-transform: scale(1);
+	-moz-transform: scale(1);
+	-ms-transform: scale(1);
+	-o-transform: scale(1);
+	transform: scale(1);
+}
+
+/* "opened folder" icon on dragover */
+.elfinder-cwd .elfinder-droppable-active .elfinder-cwd-icon { background-position: 0 -100px; }
+.elfinder-cwd .elfinder-droppable-active {
+	outline: 2px solid #8cafed;
+	outline-offset: -2px;
+}
+
+/* mimetypes icons */
+.elfinder-cwd-icon-directory         { background-position:0 -50px; }
+
+.elfinder-cwd-icon-application:after,
+.elfinder-cwd-icon-application       { background-position:0 -150px; }
+
+.elfinder-cwd-icon-text:after,
+.elfinder-cwd-icon-text              { background-position:0  -1350px; }
+
+.elfinder-cwd-icon-plain:after,
+.elfinder-cwd-icon-plain,
+.elfinder-cwd-icon-x-empty:after,
+.elfinder-cwd-icon-x-empty           { background-position:0  -200px; }
+
+.elfinder-cwd-icon-image:after, 
+.elfinder-cwd-icon-vnd-adobe-photoshop:after, 
+.elfinder-cwd-icon-postscript:after,
+.elfinder-cwd-icon-image, 
+.elfinder-cwd-icon-vnd-adobe-photoshop, 
+.elfinder-cwd-icon-postscript        { background-position:0 -250px;  }
+
+.elfinder-cwd-icon-audio:after,
+.elfinder-cwd-icon-audio             { background-position:0 -300px; }
+
+.elfinder-cwd-icon-video,
+.elfinder-cwd-icon-flash-video,
+.elfinder-cwd-icon-dash-xml,
+.elfinder-cwd-icon-vnd-apple-mpegurl,
+.elfinder-cwd-icon-x-mpegurl         { background-position:0 -350px; }
+
+.elfinder-cwd-icon-rtf:after, 
+.elfinder-cwd-icon-rtfd:after,
+.elfinder-cwd-icon-rtf, 
+.elfinder-cwd-icon-rtfd              { background-position: 0 -401px; }
+
+.elfinder-cwd-icon-pdf:after,
+.elfinder-cwd-icon-pdf               { background-position: 0 -450px; }
+
+.elfinder-cwd-icon-ms-excel:after,
+.elfinder-cwd-icon-msword:after,
+.elfinder-cwd-icon-vnd-ms-excel:after,
+.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:after,
+.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:after,
+.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:after,
+.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:after,
+.elfinder-cwd-icon-vnd-ms-office:after,
+.elfinder-cwd-icon-vnd-ms-powerpoint:after,
+.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:after,
+.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:after,
+.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:after,
+.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:after,
+.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:after,
+.elfinder-cwd-icon-vnd-ms-word:after,
+.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:after,
+.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:after,
+.elfinder-cwd-icon-vnd-oasis-opendocument-chart:after,
+.elfinder-cwd-icon-vnd-oasis-opendocument-database:after,
+.elfinder-cwd-icon-vnd-oasis-opendocument-formula:after,
+.elfinder-cwd-icon-vnd-oasis-opendocument-graphics:after,
+.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template:after,
+.elfinder-cwd-icon-vnd-oasis-opendocument-image:after,
+.elfinder-cwd-icon-vnd-oasis-opendocument-presentation:after,
+.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template:after,
+.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet:after,
+.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template:after,
+.elfinder-cwd-icon-vnd-oasis-opendocument-text:after,
+.elfinder-cwd-icon-vnd-oasis-opendocument-text-master:after,
+.elfinder-cwd-icon-vnd-oasis-opendocument-text-template:after,
+.elfinder-cwd-icon-vnd-oasis-opendocument-text-web:after,
+.elfinder-cwd-icon-vnd-openofficeorg-extension:after,
+.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation:after,
+.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide:after,
+.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow:after,
+.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template:after,
+.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet:after,
+.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template:after,
+.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document:after,
+.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template:after,
+.elfinder-cwd-icon-ms-excel,
+.elfinder-cwd-icon-msword,
+.elfinder-cwd-icon-vnd-ms-excel,
+.elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12,
+.elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12,
+.elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12,
+.elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12,
+.elfinder-cwd-icon-vnd-ms-office,
+.elfinder-cwd-icon-vnd-ms-powerpoint,
+.elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12,
+.elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12,
+.elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12,
+.elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12,
+.elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12,
+.elfinder-cwd-icon-vnd-ms-word,
+.elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12,
+.elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12,
+.elfinder-cwd-icon-vnd-oasis-opendocument-chart,
+.elfinder-cwd-icon-vnd-oasis-opendocument-database,
+.elfinder-cwd-icon-vnd-oasis-opendocument-formula,
+.elfinder-cwd-icon-vnd-oasis-opendocument-graphics,
+.elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template,
+.elfinder-cwd-icon-vnd-oasis-opendocument-image,
+.elfinder-cwd-icon-vnd-oasis-opendocument-presentation,
+.elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template,
+.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet,
+.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template,
+.elfinder-cwd-icon-vnd-oasis-opendocument-text,
+.elfinder-cwd-icon-vnd-oasis-opendocument-text-master,
+.elfinder-cwd-icon-vnd-oasis-opendocument-text-template,
+.elfinder-cwd-icon-vnd-oasis-opendocument-text-web,
+.elfinder-cwd-icon-vnd-openofficeorg-extension,
+.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation,
+.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide,
+.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow,
+.elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template,
+.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet,
+.elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template,
+.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document,
+.elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template { background-position: 0 -500px; }
+
+.elfinder-cwd-icon-html:after,
+.elfinder-cwd-icon-html              { background-position: 0 -550px; }
+
+.elfinder-cwd-icon-css:after,
+.elfinder-cwd-icon-css               { background-position: 0 -600px; }
+
+.elfinder-cwd-icon-javascript:after, 
+.elfinder-cwd-icon-x-javascript:after,
+.elfinder-cwd-icon-javascript, 
+.elfinder-cwd-icon-x-javascript      { background-position: 0 -650px; }
+
+.elfinder-cwd-icon-x-perl:after,
+.elfinder-cwd-icon-x-perl            { background-position: 0 -700px; }
+
+.elfinder-cwd-icon-x-python:after,
+.elfinder-cwd-icon-x-python          { background-position: 0 -750px; }
+
+.elfinder-cwd-icon-x-ruby:after,
+.elfinder-cwd-icon-x-ruby            { background-position: 0 -800px; }
+
+
+.elfinder-cwd-icon-x-sh:after, 
+.elfinder-cwd-icon-x-shellscript:after,
+.elfinder-cwd-icon-x-sh, 
+.elfinder-cwd-icon-x-shellscript     { background-position: 0 -850px; }
+
+.elfinder-cwd-icon-x-c:after,
+.elfinder-cwd-icon-x-csrc:after,
+.elfinder-cwd-icon-x-chdr:after,
+.elfinder-cwd-icon-x-c--:after, 
+.elfinder-cwd-icon-x-c--src:after,
+.elfinder-cwd-icon-x-c--hdr:after, 
+.elfinder-cwd-icon-x-java:after, 
+.elfinder-cwd-icon-x-java-source:after,
+.elfinder-cwd-icon-x-c,
+.elfinder-cwd-icon-x-csrc,
+.elfinder-cwd-icon-x-chdr,
+.elfinder-cwd-icon-x-c--, 
+.elfinder-cwd-icon-x-c--src,
+.elfinder-cwd-icon-x-c--hdr, 
+.elfinder-cwd-icon-x-java, 
+.elfinder-cwd-icon-x-java-source     { background-position: 0 -900px; }
+
+.elfinder-cwd-icon-x-php:after,
+.elfinder-cwd-icon-x-php             { background-position: 0 -950px; }
+
+.elfinder-cwd-icon-xml:after,
+.elfinder-cwd-icon-xml               { background-position: 0 -1000px; }
+
+.elfinder-cwd-icon-zip:after, 
+.elfinder-cwd-icon-x-zip:after, 
+.elfinder-cwd-icon-x-xz:after, 
+.elfinder-cwd-icon-x-7z-compressed:after,
+.elfinder-cwd-icon-zip, 
+.elfinder-cwd-icon-x-zip, 
+.elfinder-cwd-icon-x-xz, 
+.elfinder-cwd-icon-x-7z-compressed   { background-position: 0 -1050px; }
+
+.elfinder-cwd-icon-x-gzip:after,  
+.elfinder-cwd-icon-x-tar:after,
+.elfinder-cwd-icon-x-gzip,  
+.elfinder-cwd-icon-x-tar             { background-position: 0 -1100px; }
+
+.elfinder-cwd-icon-x-bzip:after, 
+.elfinder-cwd-icon-x-bzip2:after,
+.elfinder-cwd-icon-x-bzip, 
+.elfinder-cwd-icon-x-bzip2           { background-position: 0 -1150px; }
+
+.elfinder-cwd-icon-x-rar:after, 
+.elfinder-cwd-icon-x-rar-compressed:after,
+.elfinder-cwd-icon-x-rar, 
+.elfinder-cwd-icon-x-rar-compressed  { background-position: 0 -1200px; }
+
+.elfinder-cwd-icon-x-shockwave-flash:after,
+.elfinder-cwd-icon-x-shockwave-flash { background-position: 0 -1250px; }
+
+.elfinder-cwd-icon-group             { background-position:0 -1300px;}
+
+/* textfield inside icon */
+.elfinder-cwd-filename input { width:100%; border:none; margin:0; padding:0; }
+.elfinder-cwd-view-icons input {text-align:center; }
+.elfinder-cwd-view-icons textarea {
+	width: 100%;
+	border: 0px solid;
+	margin: 0;
+	padding: 0;
+	text-align: center;
+	overflow: hidden;
+	resize: none;
+}
+
+.elfinder-cwd-view-icons { text-align:center; }
+
+
+/************************************  LIST VIEW ************************************/
+
+/*.elfinder-cwd-view-list { padding:0 0 4px 0; }*/
+
+.elfinder-cwd-wrapper.elfinder-cwd-fixheader .elfinder-cwd::after {
+	display: none;
+}
+
+.elfinder-cwd table { 
+	width: 100%;
+	border-collapse: separate;
+	border: 0 solid;
+	margin: 0 0 10px 0;
+	border-spacing: 0;
+	box-sizing: padding-box;
+	padding: 2px;
+	position: relative;
+}
+
+.elfinder-cwd-wrapper-list.elfinder-cwd-fixheader {
+	position: absolute;
+	overflow: hidden;
+}
+
+.elfinder-cwd-wrapper-list.elfinder-cwd-fixheader:before {
+	content: '';
+	position: absolute;
+	width: 100%;
+	top: 0;
+	height: 3px;
+	background-color: white;
+}
+.elfinder-droppable-active + .elfinder-cwd-wrapper-list.elfinder-cwd-fixheader:before {
+	background-color: #8cafed;
+}
+
+.elfinder .elfinder-workzone div.elfinder-cwd-fixheader table {
+	table-layout: fixed;
+}
+
+.elfinder .elfinder-cwd table tbody.elfinder-cwd-fixheader {
+	position: relative;
+}
+
+.elfinder-ltr .elfinder-cwd thead .elfinder-cwd-selectall {
+	text-align: left;
+	right: auto;
+	left: 0px;
+	padding-top: 3px;
+}
+
+.elfinder-rtl .elfinder-cwd thead .elfinder-cwd-selectall {
+	text-align: right;
+	right: 0px;
+	left: auto;
+	padding-top: 3px;
+}
+
+.elfinder-touch .elfinder-cwd thead .elfinder-cwd-selectall {
+	padding-top: 5px;
+}
+
+.elfinder .elfinder-cwd table thead tr { border-left:0 solid; border-top:0 solid; border-right:0 solid; }
+
+.elfinder .elfinder-cwd table thead td {
+	padding: 4px 14px;
+}
+.elfinder-ltr .elfinder-cwd.elfinder-has-checkbox table thead td:first-child {
+	padding: 4px 14px 4px 22px;
+}
+.elfinder-rtl .elfinder-cwd.elfinder-has-checkbox table thead td:first-child {
+	padding: 4px 22px 4px 14px;
+}
+
+.elfinder .elfinder-cwd table thead td.ui-state-active {
+	background: #ebf1f6;
+	background: -moz-linear-gradient(top,  #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%);
+	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ebf1f6), color-stop(50%,#abd3ee), color-stop(51%,#89c3eb), color-stop(100%,#d5ebfb));
+	background: -webkit-linear-gradient(top,  #ebf1f6 0%,#abd3ee 50%,#89c3eb 51%,#d5ebfb 100%);
+	background: -o-linear-gradient(top,  #ebf1f6 0%,#abd3ee 50%,#89c3eb 51%,#d5ebfb 100%);
+	background: -ms-linear-gradient(top,  #ebf1f6 0%,#abd3ee 50%,#89c3eb 51%,#d5ebfb 100%);
+	background: linear-gradient(to bottom,  #ebf1f6 0%,#abd3ee 50%,#89c3eb 51%,#d5ebfb 100%);
+	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ebf1f6', endColorstr='#d5ebfb',GradientType=0 );
+}
+
+.elfinder .elfinder-cwd table td { 
+	padding:4px 12px;
+	white-space:pre;
+	overflow:hidden;
+	text-align:right;
+	cursor:default;
+	border:0 solid;
+}
+
+.elfinder .elfinder-cwd table tbody td:first-child {
+	position: relative
+}
+
+.elfinder .elfinder-cwd table td div { 
+	box-sizing: content-box;
+}
+
+tr.elfinder-cwd-file td .elfinder-cwd-select {
+	width: 40px;
+	padding-top: 3px;
+}
+
+.elfinder-touch tr.elfinder-cwd-file td .elfinder-cwd-select {
+	padding-top: 10px;
+}
+
+.elfinder-touch .elfinder-cwd tr td {
+	padding: 10px 12px;
+}
+
+.elfinder-touch .elfinder-cwd table thead td {
+	padding: 8px 14px;
+}
+
+.elfinder-touch .elfinder-cwd tr.elfinder-cwd-file td {
+	padding: 13px 12px;
+}
+
+.elfinder-ltr .elfinder-cwd table td { text-align:right; }
+.elfinder-ltr .elfinder-cwd table td:first-child { text-align:left; }
+.elfinder-rtl .elfinder-cwd table td { text-align:left; }
+.elfinder-rtl .elfinder-cwd table td:first-child { text-align:right; }
+
+.elfinder-odd-row { background:#eee; }
+
+/* filename container */
+.elfinder-cwd-view-list .elfinder-cwd-file-wrapper { width:97%; position:relative; }
+/* filename container in ltr/rtl enviroment */
+.elfinder-ltr .elfinder-cwd-view-list.elfinder-has-checkbox .elfinder-cwd-file-wrapper { margin-left: 8px; }
+.elfinder-rtl .elfinder-cwd-view-list.elfinder-has-checkbox .elfinder-cwd-file-wrapper { margin-right: 8px; }
+.elfinder-ltr .elfinder-cwd-view-list .elfinder-cwd-filename { padding-left:23px;  }
+.elfinder-rtl .elfinder-cwd-view-list .elfinder-cwd-filename { padding-right:23px; }
+
+/* premissions/symlink marker */
+.elfinder-cwd-view-list .elfinder-perms, 
+.elfinder-cwd-view-list .elfinder-lock,
+.elfinder-cwd-view-list .elfinder-symlink {
+	margin-top:-6px;
+	opacity: .6;
+	filter:Alpha(Opacity=60);
+}
+/* markers in ltr/rtl enviroment */
+.elfinder-ltr .elfinder-cwd-view-list .elfinder-perms   { left:8px; bottom:-4px; }
+.elfinder-ltr .elfinder-cwd-view-list .elfinder-lock    { left:10px; top:0px; }
+.elfinder-ltr .elfinder-cwd-view-list .elfinder-symlink { left:-7px; bottom:-4px; }
+
+/* file icon */
+.elfinder-cwd-view-list td .elfinder-cwd-icon {
+	width:16px;
+	height:16px;
+	position:absolute;
+	top:50%;
+	margin-top:-8px;
+	background-image:url(../img/icons-small.png);
+}
+/* icon in ltr/rtl enviroment */
+.elfinder-ltr .elfinder-cwd-view-list .elfinder-cwd-icon { left:0;  }
+.elfinder-rtl .elfinder-cwd-view-list .elfinder-cwd-icon { right:0; }
+
+/* type badge, thumbnail image overlay */
+.elfinder-cwd-view-list .elfinder-cwd-icon:before,
+.elfinder-cwd-view-list .elfinder-cwd-icon:after {
+	content: none;
+}
+
+/* table header resize handle */
+.elfinder-cwd-view-list thead td .ui-resizable-handle {
+	height: 100%;
+	top: 3px;
+}
+.elfinder-touch .elfinder-cwd-view-list thead td .ui-resizable-handle {
+	top: -5px;
+	margin: 10px;
+}
+.elfinder-cwd-view-list thead td .ui-resizable-e {
+	right: -7px;
+}
+.elfinder-cwd-view-list thead td .ui-resizable-w {
+	left: -7px;
+}
+.elfinder-touch .elfinder-cwd-view-list thead td .ui-resizable-e {
+	right: -16px;
+}
+.elfinder-touch .elfinder-cwd-view-list thead td .ui-resizable-w {
+	left: -16px;
+}
+
+/* empty message */
+.elfinder-cwd-wrapper-empty .elfinder-cwd-view-list.elfinder-cwd:after {
+	margin-top: 0;
+}
+
+/* File: /css/dialog.css */
+/*********************************************/
+/*                DIALOGS STYLES             */
+/*********************************************/
+
+/* common dialogs class */
+.std42-dialog {
+	padding:0;
+	position:absolute;
+	left:auto;
+	right:auto;
+}
+.std42-dialog.elfinder-dialog-minimized {
+	overFlow: hidden;
+	position: relative;
+	float: left;
+	width: auto;
+}
+.elfinder-rtl .std42-dialog.elfinder-dialog-minimized {
+	float: right;
+}
+
+/* titlebar */
+.std42-dialog .ui-dialog-titlebar {
+	border-left:0 solid transparent;
+	border-top:0 solid transparent;
+	border-right:0 solid transparent;
+	-moz-border-radius-bottomleft: 0; 
+	-webkit-border-bottom-left-radius: 0; 
+	border-bottom-left-radius: 0; 
+	-moz-border-radius-bottomright: 0; 
+	-webkit-border-bottom-right-radius: 0; 
+	border-bottom-right-radius: 0;
+	font-weight:normal;
+	padding:.2em 1em;
+}
+.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar {
+	padding: 0 .5em;
+	height: 20px;
+}
+.elfinder-touch .std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar {
+	padding:.3em .5em;
+}
+.std42-dialog.ui-draggable-disabled .ui-dialog-titlebar {
+	cursor: default;
+}
+
+.std42-dialog .ui-dialog-titlebar .ui-widget-header {
+	border : none;
+	cursor: pointer;
+}
+
+.std42-dialog .ui-dialog-titlebar span.elfinder-dialog-title {
+	display: inherit;
+	word-break: break-all;
+}
+.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar span.elfinder-dialog-title {
+	display: list-item;
+	display: -moz-inline-box;
+	white-space: nowrap;
+	word-break: normal;
+	overflow: hidden;
+	word-wrap: normal;
+	overflow-wrap: normal;
+	max-width: -webkit-calc(100% - 24px);
+	max-width: -moz-calc(100% - 24px);
+	max-width: calc(100% - 24px);
+}
+.elfinder-touch .std42-dialog .ui-dialog-titlebar span.elfinder-dialog-title {
+	padding-top: .15em;
+}
+.elfinder-touch .std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar span.elfinder-dialog-title {
+	max-width: -webkit-calc(100% - 36px);
+	max-width: -moz-calc(100% - 36px);
+	max-width: calc(100% - 36px);
+}
+
+.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button {
+	position: relative;
+	float: left;
+	top: 10px;
+	left: -10px;
+	right: 10px;
+	width: 20px;
+	height: 20px;
+	padding:1px;
+	margin: -10px 1px 0 1px;
+	background-color: transparent;
+	background-image: none;
+}
+.elfinder-touch .std42-dialog/*:not(.elfinder-dialog-minimized)*/ .ui-dialog-titlebar .elfinder-titlebar-button {
+	transform: scale(1.1);
+	zoom: 1.1;
+	margin-left: 5px;
+	margin-right: 5px;
+}
+.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button-right {
+	float: right;
+}
+.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button.elfinder-titlebar-button-right {
+	left: 10px;
+	right: -10px;
+}
+.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon {
+	width: 17px;
+	height: 17px;
+	border-width: 1px;
+	border-color: transparent;
+	opacity: .7;
+	filter:Alpha(Opacity=70);
+	-moz-border-radius: 8px; 
+	-webkit-border-radius: 8px; 
+	border-radius: 8px;
+}
+.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon {
+	opacity: 1;
+	filter:Alpha(Opacity=100);	
+}
+.std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar select {
+	display: none;
+}
+.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon,
+.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon {
+	background-color: #ff6252;
+	border-color: #e5695d;
+}
+.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon,
+.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon {
+	background-color: #ffbc00;
+	border-color: #e3a40b;
+}
+.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon,
+.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon {
+	background-color: #26c82f;
+	border-color: #13ae10;
+}
+
+/* resize handle for touch devices */
+.elfinder-touch .std42-dialog.ui-dialog:not(ui-resizable-disabled) .ui-resizable-se {
+	width: 12px;
+	height: 12px;
+	zoom: 1.5;
+	right: -7px;
+	bottom: -7px;
+	margin: 3px 7px 7px 3px;
+	background-position: -64px -224px;
+}
+
+.elfinder-rtl .elfinder-dialog .ui-dialog-titlebar { text-align:right; }
+
+/* content */
+.std42-dialog .ui-dialog-content {
+	padding:.3em .5em;
+	box-sizing: border-box;
+}
+.elfinder .std42-dialog .ui-dialog-content,
+.elfinder .std42-dialog .ui-dialog-content * {
+	-webkit-user-select:  auto;
+	-moz-user-select:     text;
+	-khtml-user-select:   text;
+	user-select:          text;
+}
+
+.elfinder .std42-dialog .ui-dialog-content form label {
+	border: none;
+}
+
+/* buttons */
+.std42-dialog .ui-dialog-buttonpane {
+	border: 0 solid;
+	margin: 0;
+	padding: .5em;
+	text-align: right;
+}
+.elfinder-rtl .std42-dialog .ui-dialog-buttonpane { text-align: left; }
+
+.std42-dialog .ui-dialog-buttonpane button { margin:.2em 0 0 .4em; padding: .2em; outline:0px solid; }
+.std42-dialog .ui-dialog-buttonpane button span { padding:2px 9px; }
+.std42-dialog .ui-dialog-buttonpane button span.ui-icon { padding: 2px; }
+
+.elfinder-dialog .ui-resizable-e, 
+.elfinder-dialog .ui-resizable-s { width:0; height:0;}
+
+.std42-dialog .ui-button input { cursor: pointer;}
+
+.std42-dialog select { border: 1px solid #ccc; }
+
+/* error/notify/confirm dialogs icon */
+.elfinder-dialog-icon {
+	position:absolute;
+	width:32px;
+	height:32px;
+	left:10px;
+	top:50%;
+	margin-top:-15px;
+	background:url("../img/dialogs.png") 0 0 no-repeat;
+}
+
+.elfinder-rtl .elfinder-dialog-icon { left:auto; right:10px;}
+
+
+
+/*********************** ERROR DIALOG **************************/
+
+.elfinder-dialog-error .ui-dialog-content,
+.elfinder-dialog-confirm .ui-dialog-content { padding-left: 56px; min-height:35px; }
+
+.elfinder-rtl .elfinder-dialog-error .ui-dialog-content,
+.elfinder-rtl .elfinder-dialog-confirm .ui-dialog-content { padding-left:0; padding-right: 56px; }
+
+/*********************** NOTIFY DIALOG **************************/
+
+.elfinder-dialog-notify .ui-dialog-titlebar-close { display:none; }
+.elfinder-dialog-notify .ui-dialog-content { padding:0; }
+
+/* one notification container */
+.elfinder-notify {
+	border-bottom:1px solid #ccc;
+	position:relative;
+	padding:.5em;
+	
+	text-align:center;
+	overflow:hidden;
+}
+
+.elfinder-ltr .elfinder-notify { padding-left:36px; }
+.elfinder-rtl .elfinder-notify { padding-right:36px; }
+
+.elfinder-notify:last-child { border:0 solid; }
+
+/* progressbar */
+.elfinder-notify-progressbar {
+	width:180px;
+	height:8px;
+	border:1px solid #aaa;
+	background:#f5f5f5;
+	margin:5px auto;
+	overflow:hidden;
+}
+
+.elfinder-notify-progress {
+	width:100%;
+	height:8px;
+	background:url(../img/progress.gif) center center repeat-x;
+}
+
+.elfinder-notify-progressbar, .elfinder-notify-progress {
+	-moz-border-radius: 2px; 
+	-webkit-border-radius: 2px; 
+	border-radius: 2px;
+}
+
+/* icons */
+.elfinder-dialog-icon-open, 
+.elfinder-dialog-icon-readdir,
+.elfinder-dialog-icon-file        { background-position: 0 -225px; }
+.elfinder-dialog-icon-reload      { background-position: 0 -225px; }
+.elfinder-dialog-icon-mkdir       { background-position: 0 -64px; }
+.elfinder-dialog-icon-mkfile      { background-position: 0 -96px; }
+.elfinder-dialog-icon-copy,
+.elfinder-dialog-icon-prepare,
+.elfinder-dialog-icon-move        { background-position: 0 -128px;}
+.elfinder-dialog-icon-upload      { background-position: 0 -160px; }
+.elfinder-dialog-icon-chunkmerge  { background-position: 0 -160px; }
+.elfinder-dialog-icon-rm          { background-position: 0 -192px; }
+.elfinder-dialog-icon-download    { background-position: 0 -260px; }
+.elfinder-dialog-icon-save        { background-position: 0 -295px; }
+.elfinder-dialog-icon-rename      { background-position: 0 -330px; }
+.elfinder-dialog-icon-zipdl,
+.elfinder-dialog-icon-archive,
+.elfinder-dialog-icon-extract     { background-position: 0 -365px; }
+.elfinder-dialog-icon-search      { background-position: 0 -402px; }
+.elfinder-dialog-icon-resize,
+.elfinder-dialog-icon-loadimg,
+.elfinder-dialog-icon-netmount,
+.elfinder-dialog-icon-netunmount,
+.elfinder-dialog-icon-chmod,
+.elfinder-dialog-icon-preupload,
+.elfinder-dialog-icon-url,
+.elfinder-dialog-icon-dim         { background-position: 0 -434px; }
+
+/*********************** CONFIRM DIALOG **************************/
+
+.elfinder-dialog-confirm-applyall,
+.elfinder-dialog-confirm-encoding {
+	padding: 0 1em;
+	margin: 0;
+}
+.elfinder-ltr .elfinder-dialog-confirm-applyall,
+.elfinder-ltr .elfinder-dialog-confirm-encoding { text-align: left; }
+.elfinder-rtl .elfinder-dialog-confirm-applyall,
+.elfinder-rtl .elfinder-dialog-confirm-encoding { text-align: right; }
+
+.elfinder-dialog-confirm .elfinder-dialog-icon { background-position:0 -32px; }
+
+.elfinder-dialog-confirm .ui-dialog-buttonset { width: auto; }
+
+/*********************** FILE INFO DIALOG **************************/
+
+
+.elfinder-info-title .elfinder-cwd-icon {
+	float:left;
+	width:48px;
+	height:48px;
+	margin-right:1em;
+}
+
+.elfinder-rtl .elfinder-info-title .elfinder-cwd-icon {
+	float: right;
+	margin-right: 0;
+	margin-left: 1em;
+}
+
+.elfinder-info-title strong { display:block; padding:.3em 0 .5em 0; }
+
+.elfinder-info-tb {
+	min-width:200px;
+	border:0 solid;
+	margin:1em .2em 1em .2em;
+}
+
+.elfinder-info-tb td { white-space:nowrap; padding:2px; }
+
+.elfinder-info-tb tr td:first-child { text-align:right;  }
+
+.elfinder-info-tb span { float:left;}
+.elfinder-info-tb a { outline: none; text-decoration:underline; }
+.elfinder-info-tb a:hover { text-decoration:none; }
+.elfinder-info-spinner { 
+	width:14px;
+	height:14px;
+	float:left;
+	background: url("../img/spinner-mini.gif") center center no-repeat;
+	margin:0 5px; 
+}
+
+.elfinder-netmount-tb { margin:0 auto; }
+.elfinder-netmount-tb select,
+.elfinder-netmount-tb input { border:1px solid #ccc; }
+.elfinder-netmount-tb .elfinder-button-icon { cursor: pointer; }
+
+button.elfinder-info-button {
+	margin: -3.5px 0;
+	cursor: pointer;
+}
+
+/*********************** UPLOAD DIALOG **************************/
+
+.elfinder-upload-dropbox {
+	display: table-cell;
+	text-align:center;
+	vertical-align: middle;
+	padding:0.5em;
+	border:3px dashed #aaa;
+	width: 9999px;
+	height: 80px;
+	overflow: hidden;
+	word-break: keep-all;
+}
+
+.elfinder-upload-dropbox.ui-state-hover {
+	background:#dfdfdf;
+	border:3px dashed #555;
+}
+
+.elfinder-upload-dialog-or {
+	margin:.3em 0;
+	text-align:center;
+}
+
+.elfinder-upload-dialog-wrapper { text-align:center; }
+
+.elfinder-upload-dialog-wrapper .ui-button { position:relative;	overflow:hidden; }
+
+.elfinder-upload-dialog-wrapper .ui-button form {
+	position:absolute;
+	right:0;
+	top:0;
+	opacity: 0; filter:Alpha(Opacity=0);
+}
+
+.elfinder-upload-dialog-wrapper .ui-button form input {
+	padding:0 20px;
+	font-size:3em;
+
+}
+
+
+/* dialog for elFinder itself */
+.dialogelfinder .dialogelfinder-drag {
+	border-left:0 solid;
+	border-top:0 solid;
+	border-right:0 solid;
+	font-weight:normal;
+	padding:2px 12px;
+	cursor:move;
+	position:relative;
+	text-align:left;
+}
+
+.elfinder-rtl .dialogelfinder-drag { text-align:right;}
+
+.dialogelfinder-drag-close {
+	position: absolute;
+	top:50%;
+	margin-top:-8px;
+}
+
+.elfinder-ltr .dialogelfinder-drag-close { right:12px; }
+.elfinder-rtl .dialogelfinder-drag-close { left:12px; }
+
+
+/*********************** RM CONFIRM **************************/
+.elfinder-rm-title {
+	margin-bottom: .5ex;
+}
+
+.elfinder-rm-title .elfinder-cwd-icon {
+	float:left;
+	width:48px;
+	height:48px;
+	margin-right:1em;
+}
+
+.elfinder-rtl .elfinder-rm-title .elfinder-cwd-icon {
+	float: right;
+	margin-right: 0;
+	margin-left: 1em;
+}
+
+.elfinder-rm-title strong {
+	display: block;
+	/*word-wrap: break-word;*/
+	white-space: pre-wrap;
+	word-break: normal;
+	overflow: hidden;
+	text-overflow: ellipsis;
+}
+
+.elfinder-rm-title+br {
+	display: none;
+}
+
+/*********************** EDIT DIALOG **************************/
+
+.ui-dialog-titlebar select.elfinder-edit-changed {
+	border-bottom: 1px solid #13ae10;
+}
+
+/* File: /css/fonts.css */
+.elfinder-contextmenu .elfinder-contextmenu-item span { font-size:.72em; }
+
+.elfinder-cwd-view-icons .elfinder-cwd-filename { font-size:.7em; }
+.elfinder-cwd-view-list td { font-size:.7em; }
+
+.std42-dialog .ui-dialog-titlebar { font-size:.82em; }
+.std42-dialog .ui-dialog-content { font-size:.72em; }
+.std42-dialog .ui-dialog-buttonpane { font-size:.76em; }
+.elfinder-info-tb { font-size:.9em; }
+.elfinder-upload-dropbox { font-size:1.2em; }
+.elfinder-upload-dialog-or { font-size:1.2em; }
+.dialogelfinder .dialogelfinder-drag { font-size:.9em; }
+.elfinder .elfinder-navbar { font-size:.72em; }
+.elfinder-place-drag .elfinder-navbar-dir { font-size:.9em;}
+.elfinder-quicklook-title { font-size:.7em; }
+.elfinder-quicklook-info-data { font-size:.72em; }
+.elfinder-quicklook-preview-text-wrapper { font-size:.9em; }
+.elfinder-button-menu-item { font-size:.72em; }
+.elfinder-button-search input { font-size:.8em; }
+.elfinder-statusbar div { font-size:.7em; }
+.elfinder-drag-num { font-size:12px; }
+.elfinder-toast { font-size:.76em; }
+
+
+/* File: /css/navbar.css */
+/*********************************************/
+/*              NAVIGATION PANEL             */
+/*********************************************/
+
+/* container */
+.elfinder .elfinder-navbar {
+	width:230px;
+	padding:3px 5px;
+	background-image:none;
+	border-top:0 solid;
+	border-bottom:0 solid;
+	overflow:auto;
+	position:relative;
+}
+
+.elfinder .elfinder-navdock {
+	box-sizing: border-box;
+	width: 230px;
+	height: auto;
+	position: absolute;
+	bottom: 0;
+	overflow: auto;
+}
+
+.elfinder-navdock .ui-resizable-n {
+	top: 0;
+	height: 20px;
+}
+
+/* ltr/rtl enviroment */
+.elfinder-ltr .elfinder-navbar { float:left;  border-left:0 solid; }
+.elfinder-rtl .elfinder-navbar { float:right; border-right:0 solid; }
+.elfinder-ltr .ui-resizable-e { margin-left:10px; }
+
+/* folders tree container */
+.elfinder-tree {
+	display:table; width:100%; margin: 0 0 .5em 0;
+	-webkit-tap-highlight-color:rgba(0,0,0,0);
+}
+
+/* one folder wrapper */
+.elfinder-navbar-wrapper, .elfinder-place-wrapper { }
+
+/* folder */
+.elfinder-navbar-dir { 
+	position:relative; 
+	display:block; 
+	white-space:nowrap;
+	padding:3px 12px;
+	margin: 0;
+	outline:0px solid;
+	border:1px solid transparent;
+	cursor:default;
+}
+.elfinder-touch .elfinder-navbar-dir {
+	padding: 12px 12px;
+}
+
+/* ltr/rtl enviroment */
+.elfinder-ltr .elfinder-navbar-dir { padding-left:35px; }
+.elfinder-rtl .elfinder-navbar-dir { padding-right:35px; }
+
+/* arrow before icon */
+.elfinder-navbar-arrow {
+	width:12px;
+	height:14px;
+	position:absolute;
+	display:none;
+	top:50%;
+	margin-top:-8px;
+	background-image:url("../img/arrows-normal.png");
+	background-repeat:no-repeat;
+/*	border:1px solid #111;*/
+}
+.elfinder-ltr .elfinder-navbar-arrow {
+	left: 0;
+}
+.elfinder-rtl .elfinder-navbar-arrow {
+	right:0;
+}
+.elfinder-touch .elfinder-navbar-arrow {
+	zoom: 1.4;
+	-moz-transform-origin: top left;
+	-moz-transform: scale(1.4);
+	margin-bottom: 7px;
+}
+.elfinder-ltr.elfinder-touch .elfinder-navbar-arrow {
+    left: -3px;
+    margin-right: 20px;
+}
+.elfinder-rtl.elfinder-touch .elfinder-navbar-arrow {
+    right: -3px;
+    margin-left: 20px;
+}
+
+.ui-state-active .elfinder-navbar-arrow { background-image:url("../img/arrows-active.png"); }
+
+/* collapsed/expanded arrow view */
+.elfinder-navbar-collapsed .elfinder-navbar-arrow { display:block; }
+
+.elfinder-subtree-chksubdir .elfinder-navbar-arrow { opacity: .25; filter:Alpha(Opacity=25); }
+
+/* arrow ltr/rtl enviroment */
+.elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow { background-position: 0 4px;}
+.elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow { background-position: 0 -10px; }
+.elfinder-ltr .elfinder-navbar-expanded  .elfinder-navbar-arrow,
+.elfinder-rtl .elfinder-navbar-expanded  .elfinder-navbar-arrow { background-position:0 -21px; }
+
+
+/* folder icon */
+.elfinder-navbar-icon {
+	width:16px;
+	height:16px;
+	position:absolute;
+	top:50%;
+	margin-top:-8px;
+	background-image:url("../img/toolbar.png");
+	background-repeat:no-repeat;
+	background-position:0 -16px;
+}
+
+/* ltr/rtl enviroment */
+.elfinder-ltr .elfinder-navbar-icon { left:14px; }
+.elfinder-rtl .elfinder-navbar-icon { right:14px; }
+
+/* root folder */
+.elfinder-tree   .elfinder-navbar-root .elfinder-navbar-icon { background-position:0 0; }
+.elfinder-places .elfinder-navbar-root .elfinder-navbar-icon { background-position:0 -704px; }
+
+/* root icon of each volume */
+.elfinder-tree .elfinder-navbar-root-local   .elfinder-navbar-icon { background-image:url("../img/volume_icon_local.png"); background-position:0 0; }
+.elfinder-tree .elfinder-navbar-root-trash   .elfinder-navbar-icon { background-image:url("../img/volume_icon_trash.png"); background-position:0 0; }
+.elfinder-tree .elfinder-navbar-root-ftp     .elfinder-navbar-icon { background-image:url("../img/volume_icon_ftp.png"); background-position:0 0; }
+.elfinder-tree .elfinder-navbar-root-sql     .elfinder-navbar-icon { background-image:url("../img/volume_icon_sql.png"); background-position:0 0; }
+.elfinder-tree .elfinder-navbar-root-dropbox .elfinder-navbar-icon { background-image:url("../img/volume_icon_dropbox.png"); background-position:0 0; }
+.elfinder-tree .elfinder-navbar-root-googledrive .elfinder-navbar-icon { background-image:url("../img/volume_icon_googledrive.png"); background-position:0 0; }
+.elfinder-tree .elfinder-navbar-root-onedrive .elfinder-navbar-icon { background-image:url("../img/volume_icon_onedrive.png"); background-position:0 0; }
+.elfinder-tree .elfinder-navbar-root-box .elfinder-navbar-icon { background-image:url("../img/volume_icon_box.png"); background-position:0 0; }
+.elfinder-tree .elfinder-navbar-root-network .elfinder-navbar-icon { background-image:url("../img/toolbar.png"); background-position: 0 -688px; }
+
+/* icon in active/hove/dropactive state */
+.ui-state-active           .elfinder-navbar-icon, 
+.elfinder-droppable-active .elfinder-navbar-icon, 
+.ui-state-hover            .elfinder-navbar-icon { background-position:0 -32px; }
+
+/* ltr/rtl enviroment */
+.elfinder-ltr .elfinder-navbar-subtree { margin-left:12px; }
+.elfinder-rtl .elfinder-navbar-subtree { margin-right:12px; }
+
+
+/* spinner */
+.elfinder-navbar-spinner { 
+	width:14px;
+	height:14px;
+	position:absolute;
+	display:block;
+	top:50%;
+	margin-top:-7px;
+	background: url("../img/spinner-mini.gif") center center no-repeat;
+}
+/* spinner ltr/rtl enviroment */
+.elfinder-ltr .elfinder-navbar-spinner { left:0;  margin-left:-2px; }
+.elfinder-rtl .elfinder-navbar-spinner { right:0; margin-right:-2px; }
+
+/* marker */
+.elfinder-navbar .elfinder-perms,
+.elfinder-navbar .elfinder-lock,
+.elfinder-navbar .elfinder-symlink { opacity: .6; filter:Alpha(Opacity=60); }
+
+/* permissions marker */
+.elfinder-navbar .elfinder-perms { bottom:-1px; margin-top:-8px; }
+
+/* locked marker */
+.elfinder-navbar .elfinder-lock { top:-2px; }
+
+/* permissions/symlink markers ltr/rtl enviroment */
+.elfinder-ltr .elfinder-navbar .elfinder-perms   { left:  20px; }
+.elfinder-rtl .elfinder-navbar .elfinder-perms   { right: 20px; }
+.elfinder-ltr .elfinder-navbar .elfinder-lock    { left:  20px; }
+.elfinder-rtl .elfinder-navbar .elfinder-lock    { right: 20px; }
+.elfinder-ltr .elfinder-navbar .elfinder-symlink { left:  8px; }
+.elfinder-rtl .elfinder-navbar .elfinder-symlink { right: 8px; }
+
+/* navbar input */
+.elfinder-navbar input { width:100%; border:0px solid; margin:0; padding:0; }
+
+/* resizable */
+.elfinder-navbar .ui-resizable-handle { width:12px; background:transparent url('../img/resize.png') center center no-repeat; }
+.elfinder-nav-handle-icon {
+	position:absolute;
+	top:50%;
+	margin:-8px 2px 0 2px;
+	opacity: .5; filter:Alpha(Opacity=50);
+}
+
+/* pager button */
+.elfinder-navbar-pager {
+	width: 100%;
+	box-sizing: border-box;
+	padding-top: 3px;
+	padding-bottom: 3px;
+}
+.elfinder-touch .elfinder-navbar-pager {
+	padding-top: 10px;
+	padding-bottom: 10px;
+}
+
+.elfinder-places {
+	border: none;
+	margin: 0;
+	padding: 0;
+}
+.elfinder-places.elfinder-droppable-active {
+	/*border:1px solid #8cafed;*/
+}
+
+/* navbar swipe handle */
+.elfinder-navbar-swipe-handle {
+	position: absolute;
+	top: 0px;
+	height: 100%;
+	width: 50px;
+	pointer-events: none;
+}
+.elfinder-ltr .elfinder-navbar-swipe-handle {
+	left: 0px;
+	background: linear-gradient(to right,
+		rgba(221,228,235,1) 0,
+		rgba(221,228,235,0.8) 5px,
+		rgba(216,223,230,0.3) 8px,
+		rgba(0,0,0,0.1) 95%,
+		rgba(0,0,0,0) 100%);
+}
+.elfinder-rtl .elfinder-navbar-swipe-handle {
+	right: 0px;
+	background: linear-gradient(to left,
+		rgba(221,228,235,1) 0,
+		rgba(221,228,235,0.8) 5px,
+		rgba(216,223,230,0.3) 8px,
+		rgba(0,0,0,0.1) 95%,
+		rgba(0,0,0,0) 100%);
+}
+/* File: /css/places.css */
+/*********************************************/
+/*               PLACES STYLES               */
+/*********************************************/
+/* root extra icon */
+.elfinder-navbar-root .elfinder-places-root-icon {
+	position: absolute;
+	top: 50%;
+	margin-top: -9px;
+	cursor: pointer;
+}
+.elfinder-ltr .elfinder-places-root-icon {
+	right: 10px;
+}
+.elfinder-rtl .elfinder-places-root-icon {
+	left: 10px;
+}
+.elfinder-navbar-expanded .elfinder-places-root-icon {
+	display: block;
+}
+
+/* dragging helper base */
+.elfinder-place-drag {
+	font-size: 0.8em;
+}
+
+/* File: /css/quicklook.css */
+/* quicklook window */
+.elfinder-quicklook {
+	position:absolute;
+	background:url("../img/quicklook-bg.png");
+	overflow:hidden;
+	-moz-border-radius:7px;
+	-webkit-border-radius:7px;
+	border-radius:7px;
+	padding:20px 0 40px 0;
+}
+.elfinder-navdock .elfinder-quicklook {
+	-moz-border-radius: 0;
+	-webkit-border-radius: 0;
+	border-radius: 0;
+	font-size: 90%;
+	overflow: auto;
+}
+
+.elfinder-quicklook.elfinder-touch {
+	padding:30px 0 40px 0;
+}
+
+.elfinder-quicklook .ui-resizable-se {
+	width:14px;
+	height:14px;
+	right:5px;
+	bottom:3px;
+	background:url("../img/toolbar.png") 0 -496px no-repeat;
+}
+.elfinder-quicklook.elfinder-touch .ui-resizable-se {
+	zoom: 1.5;
+}
+
+/* quicklook fullscreen window */
+.elfinder-quicklook.elfinder-quicklook-fullscreen {
+	position:fixed;
+	top:0; 
+	right:0; 
+	bottom:0; 
+	left:0;
+	margin:0;
+	box-sizing:border-box;
+	width:100%;
+	height:100%;
+	object-fit:contain;
+	border-radius:0;
+	-moz-border-radius:0;
+	-webkit-border-radius:0;
+	-webkit-background-clip: padding-box;
+	padding:0;
+	background:#000;
+	display:block;
+}
+/* hide titlebar in fullscreen mode */
+.elfinder-quicklook-fullscreen .elfinder-quicklook-titlebar,
+.elfinder-quicklook-fullscreen.elfinder-quicklook .ui-resizable-handle { display:none; }
+
+/* hide preview border in fullscreen mode */
+.elfinder-quicklook-fullscreen .elfinder-quicklook-preview { border:0 solid ;}
+
+/*.elfinder-quicklook-fullscreen iframe {
+	height: 100%;
+}*/
+
+.elfinder-quicklook-cover {
+	width: 100%;
+	height: 100%;
+	top: 0;
+	left: 0;
+	position: absolute;
+}
+
+/* quicklook titlebar */
+.elfinder-quicklook-titlebar {
+	text-align:center;
+	background:#777;
+	position:absolute;
+	left:0;
+	top:0;
+	width:100%;
+	height:20px;
+	-moz-border-radius-topleft: 7px; 
+	-webkit-border-top-left-radius: 7px; 
+	border-top-left-radius: 7px;
+	-moz-border-radius-topright: 7px; 
+	-webkit-border-top-right-radius: 7px; 
+	border-top-right-radius: 7px;
+	cursor:move;
+}
+.elfinder-navdock .elfinder-quicklook-titlebar {
+	-moz-border-radius-topleft: 0;
+	-webkit-border-top-left-radius: 0;
+	border-top-left-radius: 0;
+	-moz-border-radius-topright: 0;
+	-webkit-border-top-right-radius: 0;
+	border-top-right-radius: 0;
+	cursor: default;
+}
+.elfinder-touch .elfinder-quicklook-titlebar {
+	height: 30px;
+}
+
+/* window title */
+.elfinder-quicklook-title { 
+	color:#fff; 
+	white-space:nowrap; 
+	overflow:hidden;
+	padding:2px 0;
+}
+
+.elfinder-touch .elfinder-quicklook-title {
+	padding: 8px 0;
+}
+
+/* icon "close" in titlebar */
+.elfinder-quicklook-titlebar-icon { 
+	position: absolute;
+	left : 4px;
+	top: 50%;
+	margin-top: -9px;
+	height: 16px;
+}
+.elfinder-quicklook-titlebar-icon .ui-icon {
+	position: relative;
+	margin: -9px 6px 0px 0px;
+	cursor: pointer;
+	border-radius: 10px;
+	border: 1px solid;
+}
+.elfinder-touch .elfinder-quicklook-titlebar-icon .ui-icon {
+	margin-top: -3px;
+}
+.elfinder-quicklook-titlebar-icon.elfinder-platformWin {
+	left : auto;
+	right : 4px;
+	direction: rtl;
+}
+.elfinder-quicklook-titlebar-icon.elfinder-platformWin .ui-icon {
+	margin: -9px 0px 0px 6px;
+}
+
+.elfinder-touch .elfinder-quicklook-titlebar .ui-icon {
+	zoom: 1.5;
+}
+
+/* main part of quicklook window */
+.elfinder-quicklook-preview {
+	overflow: hidden;
+	position:relative;
+	border:0 solid;
+	border-left:1px solid transparent;
+	border-right:1px solid transparent;
+	height:100%;
+}
+.elfinder-navdock .elfinder-quicklook-preview {
+	border-left: 0;
+	border-right: 0;
+}
+.elfinder-quicklook-preview.elfinder-overflow-auto {
+	overflow: auto;
+	-webkit-overflow-scrolling: touch;
+}
+
+/* wrapper for file info/icon */
+.elfinder-quicklook-info-wrapper {
+	display: table;
+	position: absolute;
+	width: 100%;
+	height: 100%;
+	height: calc(100% - 80px);
+	left: 0;
+	top: 20px;
+}
+.elfinder-navdock .elfinder-quicklook-info-wrapper {
+	height: calc(100% - 20px);
+}
+
+/* file info */
+.elfinder-quicklook-info {
+	display: table-cell;
+	vertical-align: middle;
+}
+.elfinder-ltr .elfinder-quicklook-info {
+	padding: 0 12px 0 112px;
+}
+.elfinder-rtl .elfinder-quicklook-info {
+	padding: 0 112px 0 12px;
+}
+.elfinder-ltr .elfinder-navdock .elfinder-quicklook-info {
+	padding: 0 0 0 80px;
+}
+.elfinder-rtl .elfinder-navdock .elfinder-quicklook-info {
+	padding: 0 80px 0 0;
+}
+
+/* file name in info */
+.elfinder-quicklook-info .elfinder-quicklook-info-data:first-child { 
+	color:#fff; 
+	font-weight:bold; 
+	padding-bottom:.5em; 
+}
+
+/* other data in info */
+.elfinder-quicklook-info-data {
+	padding-bottom:.2em;
+	color:#fff;
+}
+
+/* file icon */
+.elfinder-quicklook .elfinder-cwd-icon {
+	position:absolute;
+	left:32px;
+	top:50%;
+	margin-top:-20px;
+}
+.elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon {
+	left:16px;
+}
+.elfinder-rtl .elfinder-quicklook .elfinder-cwd-icon {
+	left: auto;
+	right: 32px;
+}
+.elfinder-rtl .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon {
+	right: 6px;
+}
+.elfinder-quicklook .elfinder-cwd-icon:before {
+	top: -10px;
+}
+.elfinder-ltr .elfinder-quicklook .elfinder-cwd-icon:before {
+	left: -20px;
+}
+.elfinder-ltr .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon:before {
+	left: -14px;
+}
+.elfinder-ltr .elfinder-quicklook .elfinder-cwd-icon:after {
+	left: -15px;
+}
+.elfinder-ltr .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon:after {
+    left: -12px;
+}
+.elfinder-rtl .elfinder-quicklook .elfinder-cwd-icon:before {
+	left: auto;
+	right: 40px;
+}
+.elfinder-rtl .elfinder-quicklook .elfinder-cwd-icon:after {
+	left: auto;
+	right: 40px;
+}
+
+/* image in preview */
+.elfinder-quicklook-preview img {
+	display:block;
+	margin:0 auto;
+}
+
+/* navigation bar on quicklook window bottom */
+.elfinder-quicklook-navbar {
+	position:absolute;
+	left:50%;
+	bottom:4px;
+	width:140px;
+	height:32px;
+	padding:0px;
+	margin-left:-70px;
+	border:1px solid transparent;
+	border-radius:19px;
+	-moz-border-radius:19px;
+	-webkit-border-radius:19px;
+}
+
+/* navigation bar in fullscreen mode */
+.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar {
+	width:188px;
+	margin-left:-94px;
+	padding:5px;
+	border:1px solid #eee;
+	background:#000;
+	opacity: 0.4;
+	filter: Alpha(Opacity=40);
+}
+
+/* show close icon in fullscreen mode */
+.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar-icon-close,
+.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar-separator {
+	display:inline;
+}
+
+/* icons in navbar */
+.elfinder-quicklook-navbar-icon {
+	width:32px;
+	height:32px;
+	margin:0 7px;
+	float:left;
+	background:url("../img/quicklook-icons.png") 0 0 no-repeat;
+	
+}
+
+/* fullscreen icon */
+.elfinder-quicklook-navbar-icon-fullscreen {
+	background-position:0 -64px;
+}
+
+/* exit fullscreen icon */
+.elfinder-quicklook-navbar-icon-fullscreen-off {
+	background-position:0 -96px;
+}
+
+/* prev file icon */
+.elfinder-quicklook-navbar-icon-prev {
+	background-position:0 0;
+}
+
+/* next file icon */
+.elfinder-quicklook-navbar-icon-next {
+	background-position:0 -32px;
+}
+
+/* close icon */
+.elfinder-quicklook-navbar-icon-close {
+	background-position:0 -128px;
+	display:none;
+}
+
+/* icons separator */
+.elfinder-quicklook-navbar-separator {
+	width:1px;
+	height:32px;
+	float:left;
+	border-left:1px solid #fff;
+	display:none;
+}
+
+/* text files preview wrapper */
+.elfinder-quicklook-preview-text-wrapper {
+	width: 100%;
+	height:100%;
+	background:#fff;
+	color:#222;
+	overflow:auto;
+	-webkit-overflow-scrolling: touch;
+}
+
+/* archive files preview wrapper */
+.elfinder-quicklook-preview-archive-wrapper {
+	width: 100%;
+	height:100%;
+	background:#fff;
+	color:#222;
+	font-size: 1.5ex;
+	overflow:auto;
+	-webkit-overflow-scrolling: touch
+}
+
+/* archive files preview header */
+.elfinder-quicklook-preview-archive-wrapper strong {
+	padding: 0 5px;
+}
+
+/* text preview */
+pre.elfinder-quicklook-preview-text,
+pre.elfinder-quicklook-preview-text.prettyprint {
+	width: auto;
+	height: auto;
+	margin:0;
+	padding:3px 9px;
+	border: none;
+}
+.elfinder-quicklook-preview-charsleft hr {
+	border:none;
+	border-top:dashed 1px;
+}
+.elfinder-quicklook-preview-charsleft span {
+	font-size: 90%;
+	font-style: italic;
+}
+/* html/pdf preview */
+.elfinder-quicklook-preview-html,
+.elfinder-quicklook-preview-pdf,
+.elfinder-quicklook-preview-iframe {
+	width:100%;
+	height:100%;
+	background:#fff;
+	margin:0;
+	border: none;
+	display: block;
+}
+
+/* swf preview container */
+.elfinder-quicklook-preview-flash {
+	width:100%;
+	height:100%;
+}
+
+/* audio preview container */
+.elfinder-quicklook-preview-audio {
+	width:100%;
+	position:absolute;
+	bottom:0;
+	left:0;
+}
+
+/* audio preview using embed */
+embed.elfinder-quicklook-preview-audio {
+	height:30px;
+	background:transparent;
+}
+
+/* video preview container */
+.elfinder-quicklook-preview-video {
+	width:100%;
+	height:100%;
+}
+
+/* allow user select */
+.elfinder .elfinder-quicklook .elfinder-quicklook-info *,
+.elfinder .elfinder-quicklook .elfinder-quicklook-preview * {
+	-webkit-user-select:  auto;
+	-moz-user-select:     text;
+	-khtml-user-select:   text;
+	user-select:          text;
+}
+
+/* File: /css/statusbar.css */
+/******************************************************************/
+/*                           STATUSBAR STYLES                     */
+/******************************************************************/
+
+
+/* statusbar container */
+.elfinder-statusbar { 
+	cursor: default;
+	text-align:center; 
+	font-weight:normal;
+	padding:.2em .5em;
+	
+	border-right:0 solid transparent;
+	border-bottom:0 solid transparent;
+	border-left:0 solid transparent;
+}
+
+.elfinder-statusbar span {
+	vertical-align: bottom;
+	overflow: hidden;
+	text-overflow: ellipsis;
+	-o-text-overflow: ellipsis;
+	text-overflow: "..";
+	-o-text-overflow: "..";
+}
+.elfinder-statusbar span.ui-state-hover,
+.elfinder-statusbar span.ui-state-active { border: none; }
+.elfinder-statusbar span.elfinder-path-cwd { cursor: default; }
+
+
+
+/* path in statusbar */
+.elfinder-path {
+	cursor: pointer;
+	max-width:30%;
+	white-space:nowrap;
+	overflow:hidden;
+	text-overflow:ellipsis;
+	-o-text-overflow:ellipsis;
+}
+.elfinder-ltr .elfinder-path { float:left;  }
+.elfinder-rtl .elfinder-path { float:right; }
+
+/* path in workzone (case of swipe to navbar close) */
+.elfinder-workzone-path {
+	position: relative;
+}
+.elfinder-workzone-path .elfinder-path {
+	position: relative;
+	font-size: .75em;
+	font-weight: normal;
+	float: none;
+	max-width: none;
+	overflow: hidden;
+	overflow-x: hidden;
+	text-overflow: initial;
+	-o-text-overflow: initial;
+}
+.elfinder-mobile .elfinder-workzone-path .elfinder-path {
+	overflow: auto;
+	overflow-x: scroll;
+}
+.elfinder-ltr .elfinder-workzone-path .elfinder-path {
+	margin-left: 24px;
+}
+.elfinder-rtl .elfinder-workzone-path .elfinder-path {
+	margin-right: 24px;
+}
+.elfinder-workzone-path .elfinder-path span {
+	display: inline-block;
+	padding: 5px 3px;
+}
+.elfinder-workzone-path .elfinder-path span.elfinder-path-cwd {
+	font-weight: bold;
+}
+.elfinder-workzone-path .elfinder-path span.ui-state-hover,
+.elfinder-workzone-path .elfinder-path span.ui-state-active { border: none; }
+
+.elfinder-workzone-path .elfinder-path-roots {
+	position: absolute;
+	top: 0;
+	width: 24px;
+	height: 20px;
+	padding: 2px;
+    border: none;
+    overflow: hidden;
+}
+.elfinder-ltr .elfinder-workzone-path .elfinder-path-roots {
+	left: 0;
+}
+.elfinder-rtl .elfinder-workzone-path .elfinder-path-roots {
+	right: 0;
+}
+/* total/selected size in statusbar */
+.elfinder-stat-size { 
+	overflow: hidden;
+	text-wrap: none;
+}
+.elfinder-ltr .elfinder-stat-size { float:right; }
+.elfinder-rtl .elfinder-stat-size { float:left; }
+
+.elfinder-stat-selected { white-space:nowrap; overflow:hidden; }
+
+/* File: /css/toast.css */
+/*
+ * CSS for Toastr
+ * Copyright 2012-2015
+ * Authors: John Papa, Hans Fjällemark, and Tim Ferrell.
+ * All Rights Reserved.
+ * Use, reproduction, distribution, and modification of this code is subject to the terms and
+ * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php
+ *
+ * ARIA Support: Greta Krafsig
+ *
+ * Project: https://github.com/CodeSeven/toastr
+ */
+ 
+.elfinder .elfinder-toast {
+	position: absolute;
+	top: 12px;
+	right: 12px;
+	max-width: 90%;
+	cursor: default;
+}
+
+.elfinder .elfinder-toast > div {
+	position: relative;
+	pointer-events: auto;
+	overflow: hidden;
+	margin: 0 0 6px;
+	padding: 8px 16px 8px 50px;
+	-moz-border-radius: 3px 3px 3px 3px;
+	-webkit-border-radius: 3px 3px 3px 3px;
+	border-radius: 3px 3px 3px 3px;
+	background-position: 15px center;
+	background-repeat: no-repeat;
+	-moz-box-shadow: 0 0 12px #999999;
+	-webkit-box-shadow: 0 0 12px #999999;
+	box-shadow: 0 0 12px #999999;
+	color: #FFFFFF;
+	opacity: 0.9;
+	filter: alpha(opacity=90);
+	background-color: #030303;
+	text-align: center;
+}
+
+.elfinder .elfinder-toast > .toast-info {
+	background-color: #2F96B4;
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important;
+}
+.elfinder .elfinder-toast > .toast-error {
+	background-color: #BD362F;
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important;
+}
+.elfinder .elfinder-toast > .toast-success {
+	background-color: #51A351;
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important;
+}
+.elfinder .elfinder-toast > .toast-warning {
+	background-color: #F89406;
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important;
+}
+
+
+.elfinder .elfinder-toast > div button.ui-button {
+	background-image: none;
+	margin-top: 8px;
+	padding: .5em .8em;
+}
+
+.elfinder .elfinder-toast > .toast-success button.ui-button {
+	background-color: green;
+	color: #FFF;
+}
+
+.elfinder .elfinder-toast > .toast-success button.ui-button.ui-state-hover {
+	background-color: #add6ad;
+	color: #254b25;
+}
+
+/* File: /css/toolbar.css */
+/*********************************************/
+/*               TOOLBAR STYLES              */
+/*********************************************/
+/* toolbar container */
+.elfinder-toolbar { 
+	padding:4px 0 3px 0; 
+	border-left:0 solid transparent;
+	border-top:0 solid transparent;
+	border-right:0 solid transparent;
+}
+
+/* container for button's group */
+.elfinder-buttonset {
+	margin: 1px 4px;
+	float:left;
+	background:transparent;
+	padding:0;
+	-moz-border-radius: 4px;
+	-webkit-border-radius: 4px;
+	border-radius: 4px;
+}
+
+/*.elfinder-buttonset:first-child { margin:0; }*/
+
+/* button */
+.elfinder .elfinder-button {
+	/*width:16px;*/
+	height:16px;
+	margin:0;
+	padding:4px;
+	float:left;
+	overflow:hidden;
+	position:relative;
+	border:0 solid;
+	-webkit-box-sizing: content-box;
+	-moz-box-sizing: content-box;
+	box-sizing: content-box;
+	line-height: 1;
+	cursor: default;
+}
+.elfinder-touch .elfinder-button {
+	/*width:20px;*/
+	height:20px;
+}
+
+.elfinder .ui-icon-search { cursor:pointer;}
+
+.elfinder-button:first-child {
+	-moz-border-radius-topleft: 4px; 
+	-webkit-border-top-left-radius: 4px; 
+	border-top-left-radius: 4px;
+	-moz-border-radius-bottomleft: 4px; 
+	-webkit-border-bottom-left-radius: 4px; 
+	border-bottom-left-radius: 4px;
+}
+
+.elfinder-button:last-child {
+	-moz-border-radius-topright: 4px; 
+	-webkit-border-top-right-radius: 4px; 
+	border-top-right-radius: 4px;
+	-moz-border-radius-bottomright: 4px; 
+	-webkit-border-bottom-right-radius: 4px; 
+	border-bottom-right-radius: 4px;
+}
+
+/* separator between buttons, required for berder between button with ui color */
+.elfinder-toolbar-button-separator {
+	float:left;
+	padding:0;
+	height:24px;
+	border-top:0 solid;
+	border-right:0 solid;
+	border-bottom:0 solid;
+	width:0;
+}
+
+.elfinder-touch .elfinder-toolbar-button-separator {
+	height:20px;
+}
+
+/* change icon opacity^ not button */
+.elfinder .elfinder-button.ui-state-disabled { opacity:1; filter:Alpha(Opacity=100);}
+.elfinder .elfinder-button.ui-state-disabled .elfinder-button-icon,
+.elfinder .elfinder-button.ui-state-disabled .elfinder-button-text { opacity:.4; filter:Alpha(Opacity=40);}
+
+/* rtl enviroment */
+.elfinder-rtl .elfinder-buttonset { float:right; }
+
+/* icon inside button */
+.elfinder-button-icon {
+	width:16px;
+	height:16px;
+	/*display:block;*/
+	display:inline-block;
+	background:url('../img/toolbar.png')  no-repeat;
+}
+.elfinder-button-text {
+	position: relative;
+	display: inline-block;
+	top: -4px;
+	margin: 0 2px;
+	font-size: 12px;
+}
+
+.elfinder-touch .elfinder-button-icon {
+	zoom: 1.25;
+	-moz-transform-origin: top left;
+	-moz-transform: scale(1.25);
+}
+.elfinder-touch .elfinder-button-text {
+	top: -5px;
+}
+
+/* buttons icons */
+.elfinder-button-icon-home      { background-position: 0 0;  }
+.elfinder-button-icon-back      { background-position: 0 -112px; }
+.elfinder-button-icon-forward   { background-position: 0 -128px; }
+.elfinder-button-icon-up        { background-position: 0 -144px; }
+.elfinder-button-icon-dir       { background-position: 0  -16px; }
+.elfinder-button-icon-opendir   { background-position: 0  -32px; }
+.elfinder-button-icon-reload    { background-position: 0 -160px; }
+.elfinder-button-icon-open      { background-position: 0 -176px; } 
+.elfinder-button-icon-mkdir     { background-position: 0 -192px; }
+.elfinder-button-icon-mkfile    { background-position: 0 -208px; }
+.elfinder-button-icon-rm        { background-position: 0 -832px; }
+.elfinder-button-icon-trash     { background-position: 0 -224px; }
+.elfinder-button-icon-restore   { background-position: 0 -816px; }
+.elfinder-button-icon-copy      { background-position: 0 -240px; }
+.elfinder-button-icon-cut       { background-position: 0 -256px; }
+.elfinder-button-icon-paste     { background-position: 0 -272px; }
+.elfinder-button-icon-getfile   { background-position: 0 -288px; }
+.elfinder-button-icon-duplicate { background-position: 0 -304px; }
+.elfinder-button-icon-rename    { background-position: 0 -320px; }
+.elfinder-button-icon-edit      { background-position: 0 -336px; }
+.elfinder-button-icon-quicklook { background-position: 0 -352px; }
+.elfinder-button-icon-upload    { background-position: 0 -368px; }
+.elfinder-button-icon-download  { background-position: 0 -384px; }
+.elfinder-button-icon-info      { background-position: 0 -400px; }
+.elfinder-button-icon-extract   { background-position: 0 -416px; }
+.elfinder-button-icon-archive   { background-position: 0 -432px; }
+.elfinder-button-icon-view      { background-position: 0 -448px; }
+.elfinder-button-icon-view-list { background-position: 0 -464px; }
+.elfinder-button-icon-help      { background-position: 0 -480px; }
+.elfinder-button-icon-resize    { background-position: 0 -512px; }
+.elfinder-button-icon-link      { background-position: 0 -528px; }
+.elfinder-button-icon-search    { background-position: 0 -561px; }
+.elfinder-button-icon-sort      { background-position: 0 -577px; }
+.elfinder-button-icon-rotate-r  { background-position: 0 -625px; }
+.elfinder-button-icon-rotate-l  { background-position: 0 -641px; }
+.elfinder-button-icon-netmount  { background-position: 0 -688px; }
+.elfinder-button-icon-netunmount { background-position: 0 -96px; }
+.elfinder-button-icon-places    { background-position: 0 -704px; }
+.elfinder-button-icon-chmod     { background-position: 0  -48px; }
+.elfinder-button-icon-accept    { background-position: 0 -736px; }
+.elfinder-button-icon-opendir   { background-position: 0  -32px; }
+.elfinder-button-icon-menu      { background-position: 0 -752px; }
+.elfinder-button-icon-colwidth  { background-position: 0 -768px; }
+.elfinder-button-icon-fullscreen  { background-position: 0 -784px; }
+.elfinder-button-icon-unfullscreen { background-position: 0 -800px; }
+.elfinder-button-icon-empty     { background-position: 0 -848px; }
+.elfinder-button-icon-undo      { background-position: 0 -864px; }
+.elfinder-button-icon-redo      { background-position: 0 -880px; }
+.elfinder-button-icon-preference { background-position: 0 -896px; }
+.elfinder-button-icon-mkdirin   { background-position: 0 -912px; }
+.elfinder-button-icon-selectall { background-position: 0 -928px; }
+.elfinder-button-icon-selectnone { background-position: 0 -944px; }
+.elfinder-button-icon-selectinvert { background-position: 0 -960px; }
+
+/* button with dropdown menu*/
+.elfinder .elfinder-menubutton { overflow:visible; }
+
+/* button with spinner icon */
+.elfinder-button-icon-spinner  { background: url("../img/spinner-mini.gif") center center no-repeat; }
+
+/* menu */
+.elfinder-button-menu {
+	position:absolute;
+	left:0;
+	top:25px;
+	padding:3px 0;
+}
+
+.elfinder-touch .elfinder-button-menu {
+	top:35px;
+}
+
+/* menu item */
+.elfinder-button-menu-item {
+	white-space:nowrap;
+	cursor:default;
+	padding:5px 19px;
+	position:relative;
+}
+.elfinder-touch .elfinder-button-menu-item {
+	padding: 12px 19px
+}
+
+/* fix hover ui class */
+.elfinder-button-menu .ui-state-hover { border:0 solid; }
+
+.elfinder-button-menu-item-separated { border-top:1px solid #ccc; }
+
+.elfinder-button-menu-item .ui-icon {
+	width:16px;
+	height:16px;
+	position:absolute;
+	left:2px;
+	top:50%;
+	margin-top:-8px;
+	display:none;
+}
+
+.elfinder-button-menu-item-selected .ui-icon { display:block; }
+.elfinder-button-menu-item-selected-asc .ui-icon-arrowthick-1-s { display:none; }
+.elfinder-button-menu-item-selected-desc .ui-icon-arrowthick-1-n { display:none; }
+
+/* hack for upload button */
+.elfinder-button form {
+	position:absolute;
+	top:0;
+	right:0;
+	opacity: 0; filter:Alpha(Opacity=0);
+	cursor: pointer;
+}
+
+.elfinder .elfinder-button form input { background:transparent; cursor: default;}
+
+/* search "button" */
+.elfinder .elfinder-button-search {
+	border:0 solid;
+	background:transparent;
+	padding:0;
+	margin: 1px 4px;
+	height: auto;
+	min-height: 26px;
+	float:right;
+	width:202px;
+	overflow: visible;
+}
+
+.elfinder .elfinder-button-search .elfinder-button-menu {
+	font-size: 8pt;
+	text-align: center;
+	width: 100%;
+}
+
+.elfinder .elfinder-button-search .elfinder-button-menu div {
+	margin-left: auto;
+	margin-right: auto;
+	margin-bottom: 5px;
+}
+
+.elfinder .elfinder-button-search .elfinder-button-menu div .ui-state-hover {
+	border: 1px solid;
+}
+
+/* ltr/rte enviroment */
+.elfinder-ltr .elfinder-button-search { float:right; margin-right:10px; }
+.elfinder-rtl .elfinder-button-search { float:left; margin-left:10px; }
+
+/* search text field */
+.elfinder-button-search input[type=text] {
+	width:160px;
+	height:22px;
+	padding:0 20px;
+	line-height: 22px;
+	border:0 solid;
+	border:1px solid #aaa;
+	-moz-border-radius: 12px;
+	-webkit-border-radius: 12px;
+	border-radius: 12px;
+	outline:0px solid;
+}
+
+.elfinder-button-search input::-ms-clear {
+	display: none;
+}
+.elfinder-touch .elfinder-button-search input {
+	height:28px;
+	line-height: 28px;
+}
+.elfinder-rtl .elfinder-button-search input { direction:rtl; }
+
+
+/* icons */
+.elfinder-button-search .ui-icon {
+	position:absolute;
+	height:18px;
+	top: 50%;
+	margin:-8px 4px 0 4px;
+	opacity: .6; 
+	filter:Alpha(Opacity=60);
+}
+.elfinder-button-search .ui-checkboxradio-icon {
+	display: none;
+}
+
+/* search/close icons */
+.elfinder-ltr .elfinder-button-search .ui-icon-search { left:0;}
+.elfinder-rtl .elfinder-button-search .ui-icon-search { right:0;}
+.elfinder-ltr .elfinder-button-search .ui-icon-close { right:0;}
+.elfinder-rtl .elfinder-button-search .ui-icon-close { left:0;}
+
+/* toolbar swipe handle */
+.elfinder-toolbar-swipe-handle {
+	position: absolute;
+	top: 0px;
+	left: 0px;
+	height: 50px;
+	width: 100%;
+	pointer-events: none;
+	background: linear-gradient(to bottom,
+		rgba(221,228,235,1) 0,
+		rgba(221,228,235,0.8) 2px,
+		rgba(216,223,230,0.3) 5px,
+		rgba(0,0,0,0.1) 95%,
+		rgba(0,0,0,0) 100%);
+}
+

文件差異過大導致無法顯示
+ 8 - 0
src/assets/css/elfinder.min.css


+ 113 - 0
src/assets/css/theme.css

@@ -0,0 +1,113 @@
+/**
+ * MacOS X like theme for elFinder.
+ * Required jquery ui "smoothness" theme.
+ *
+ * @author Dmitry (dio) Levashov
+ **/
+
+/* input textarea */
+.elfinder input,
+.elfinder textarea {
+	color: #000;
+	background-color: #FFF;
+}
+
+/* dialogs */
+.std42-dialog, .std42-dialog .ui-widget-content { background-color:#ededed; background-image:none; background-clip: content-box; }
+.elfinder-quicklook-titlebar-icon .ui-icon {
+	background-color: #d4d4d4;
+	border-color: #8a8a8a;
+}
+.std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon,
+.elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon,
+.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close:hover,
+.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close {
+	background-color: #ff6252;
+	border-color: #e5695d;
+}
+.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon,
+.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon,
+.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize:hover,
+.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize {
+	background-color: #ffbc00;
+	border-color: #e3a40b;
+}
+.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon,
+.elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon,
+.elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full:hover,
+.elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full {
+	background-color: #26c82f;
+	border-color: #13ae10;
+}
+
+/* navbar */
+.elfinder .elfinder-navbar { background:#dde4eb; }
+.elfinder-navbar .ui-state-hover  { color:#000; background-color:#edf1f4; border-color:#bdcbd8; }
+.elfinder-navbar .ui-state-active { background: #3875d7;    border-color:#3875d7; color:#fff; }
+.elfinder-navbar .elfinder-droppable-active {background:#A7C6E5 !important;}
+/* disabled elfinder */
+.elfinder-disabled .elfinder-navbar .ui-state-active { background: #dadada; border-color:#aaa; color:#fff; }
+
+/* workzone */
+.elfinder-workzone { background:#fff; }
+
+/* current directory */
+/* Is in trash */
+.elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash {
+	background-color: #f0efef;
+}
+
+/* selected file in "icons" view */
+.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover { background:#ccc; }
+
+/* type badge in "icons" view */
+.elfinder-cwd-icon:before { 
+	color: white;
+	background-color: #798da7;
+}
+.elfinder-cwd-icon-text:before  { background-color: #6f99e6 }
+.elfinder-cwd-icon-image:before { background-color: #2ea26c }
+.elfinder-cwd-icon-audio:before { background-color: #7bad2a }
+.elfinder-cwd-icon-video:before { background-color: #322aad }
+
+/* list view*/
+.elfinder-cwd table thead td.ui-state-hover { background:#ddd; }
+.elfinder-cwd table tr:nth-child(odd) { background-color:#edf3fe; }
+.elfinder-cwd table tr {
+	border: 1px solid transparent;
+	border-top:1px solid #fff;
+}
+.elfinder-cwd .elfinder-droppable-active td { background:#A7C6E5 !important; }
+
+
+/* common selected background/color */
+.elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,
+.elfinder-cwd table td.ui-state-hover,
+.elfinder-button-menu .ui-state-hover { background: #3875d7; color:#fff;}
+/* disabled elfinder */
+.elfinder-disabled .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,
+.elfinder-disabled .elfinder-cwd table td.ui-state-hover { background:#dadada;}
+
+/* statusbar */
+.elfinder .elfinder-statusbar { color:#555; }
+.elfinder .elfinder-statusbar a { text-decoration:none; color:#555;}
+
+
+.std42-dialog .elfinder-help, .std42-dialog .elfinder-help .ui-widget-content { background:#fff;}
+
+/* contextmenu */
+.elfinder-contextmenu .ui-state-active { background: #6293df; color:#fff; }
+.elfinder-contextmenu .ui-state-hover { background: #3875d7; color:#fff; }
+.elfinder-contextmenu .ui-state-hover .elfinder-contextmenu-arrow { background-image:url('../img/arrows-active.png'); }
+
+/* dialog */
+.elfinder .ui-dialog input:text.ui-state-hover,
+.elfinder .ui-dialog textarea.ui-state-hover {
+	background-image: none;
+	background-color: inherit;
+}
+
+/* tooltip */
+.elfinder-ui-tooltip.ui-widget-shadow {
+	box-shadow: 2px 6px 4px -4px #cecdcd;
+}

二進制
src/assets/img/arrows-active.png


二進制
src/assets/img/arrows-normal.png


二進制
src/assets/img/crop.gif


二進制
src/assets/img/dialogs.png


二進制
src/assets/img/edit_aceeditor.png


二進制
src/assets/img/edit_ckeditor.png


二進制
src/assets/img/edit_codemirror.png


二進制
src/assets/img/edit_creativecloud.png


二進制
src/assets/img/edit_pixlreditor.png


二進制
src/assets/img/edit_pixlrexpress.png


二進制
src/assets/img/edit_simplemde.png


二進制
src/assets/img/edit_tinymce.png


二進制
src/assets/img/icons-big.png


二進制
src/assets/img/icons-small.png


二進制
src/assets/img/logo.png


二進制
src/assets/img/progress.gif


二進制
src/assets/img/quicklook-bg.png


二進制
src/assets/img/quicklook-icons.png


二進制
src/assets/img/resize.png


二進制
src/assets/img/spinner-mini.gif


二進制
src/assets/img/toolbar.png


二進制
src/assets/img/volume_icon_box.png


二進制
src/assets/img/volume_icon_dropbox.png


二進制
src/assets/img/volume_icon_ftp.png


二進制
src/assets/img/volume_icon_googledrive.png


二進制
src/assets/img/volume_icon_local.png


二進制
src/assets/img/volume_icon_onedrive.png


二進制
src/assets/img/volume_icon_sql.png


二進制
src/assets/img/volume_icon_trash.png


文件差異過大導致無法顯示
+ 8961 - 0
src/assets/js/elfinder.full.js


文件差異過大導致無法顯示
+ 8 - 0
src/assets/js/elfinder.min.js


+ 1040 - 0
src/assets/js/extras/editors.default.js

@@ -0,0 +1,1040 @@
+"use strict";
+
+(function(editors, elFinder) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], editors);
+	} else if (elFinder) {
+		var optEditors = elFinder.prototype._options.commandsOptions.edit.editors;
+		elFinder.prototype._options.commandsOptions.edit.editors = optEditors.concat(editors(elFinder));
+	}
+}(function(elFinder) {
+	var // get query of getfile
+		getfile = window.location.search.match(/getfile=([a-z]+)/),
+		useRequire = (typeof define === 'function' && define.amd),
+		hasFlash = (function() {
+			var hasFlash;
+			try {
+				hasFlash = !!(new ActiveXObject('ShockwaveFlash.ShockwaveFlash'));
+			} catch (e) {
+				hasFlash = !!(typeof window.orientation === 'undefined' || (navigator && navigator.mimeTypes["application/x-shockwave-flash"]));
+			}
+			return hasFlash;
+		})(),
+		initImgTag = function(id, file, content, fm) {
+			var node = $(this).children('img:first'),
+				spnr = $('<div/>')
+					.css({
+						position: 'absolute',
+						top: '50%',
+						textAlign: 'center',
+						width: '100%',
+						fontSize: '16pt'
+					})
+					.html(fm.i18n('ntfloadimg'))
+					.hide()
+					.appendTo(this);
+			
+			node.attr('id', id+'-img')
+				.attr('src', content)
+				.css({'height':'', 'max-width':'100%', 'max-height':'100%', 'cursor':'pointer'})
+				.data('loading', function(done) {
+					var btns = node.closest('.elfinder-dialog').find('button,.elfinder-titlebar-button');
+					btns.prop('disabled', !done)[done? 'removeClass' : 'addClass']('ui-state-disabled');
+					node.css('opacity', done? '' : '0.3');
+					spnr[done? 'hide' : 'show']();
+					return node;
+				});
+		},
+		imgBase64 = function(node, mime) {
+			var style = node.attr('style'),
+				img, canvas, ctx, data;
+			try {
+				// reset css for getting image size
+				node.attr('style', '');
+				// img node
+				img = node.get(0);
+				// New Canvas
+				canvas = document.createElement('canvas');
+				canvas.width  = img.width;
+				canvas.height = img.height;
+				// restore css
+				node.attr('style', style);
+				// Draw Image
+				canvas.getContext('2d').drawImage(img, 0, 0);
+				// To Base64
+				data = canvas.toDataURL(mime);
+			} catch(e) {
+				data = node.attr('src');
+			}
+			return data;
+		},
+		pixlrCallBack = function() {
+			if (!hasFlash || window.parent === window) {
+				return;
+			}
+			var pixlr = window.location.search.match(/[?&]pixlr=([^&]+)/),
+				image = window.location.search.match(/[?&]image=([^&]+)/),
+				p, ifm, url, node;
+			if (pixlr) {
+				// case of redirected from pixlr.com
+				p = window.parent
+				ifm = p.$('#'+pixlr[1]+'iframe').hide();
+				node = p.$('#'+pixlr[1]).data('resizeoff')();
+				if (image[1].substr(0, 4) === 'http') {
+					url = image[1];
+					if (window.location.protocol === 'https:') {
+						url = url.replace(/^http:/, 'https:');
+					}
+					node.on('load error', function() {
+							node.data('loading')(true);
+						})
+						.attr('src', url)
+						.data('loading')();
+				} else {
+					node.data('loading')(true);
+				}
+				ifm.remove();
+			}
+		},
+		pixlrSetup = function(opts, fm) {
+			if (!hasFlash || fm.UA.ltIE8) {
+				this.disabled = true;
+			}
+		},
+		pixlrLoad = function(mode, base) {
+			var fm = this.fm,
+				node = $(base).children('img:first')
+					.data('loading')()
+					.data('resizeoff', function() {
+						$(window).off('resize.'+node.attr('id'));
+						return node;
+					})
+					.on('click', function() {
+						launch();
+					}),
+				elfNode = fm.getUI(),
+				container = $('<iframe class="ui-front" allowtransparency="true">'),
+				file = this.file,
+				src = 'https://pixlr.com/'+mode+'/?s=c',
+				myurl = window.location.href.toString().replace(/#.*$/, ''),
+				error = function() {
+					container.remove();
+					node.data('loading')(true);
+					fm.error('Can not launch Pixlr.');
+				},
+				launch = function() {
+					errtm = setTimeout(error, 10000);
+					myurl += (myurl.indexOf('?') === -1? '?' : '&') + 'pixlr='+node.attr('id');
+					src += '&referrer=elFinder&locktitle=true';
+					src += '&exit='+encodeURIComponent(myurl+'&image=0');
+					src += '&target='+encodeURIComponent(myurl);
+					src += '&title='+encodeURIComponent(file.name);
+					src += '&locktype='+encodeURIComponent(file.mime === 'image/png'? 'png' : 'jpg');
+					src += '&image='+encodeURIComponent(node.attr('src'));
+					container
+						.attr('id', node.attr('id')+'iframe')
+						.attr('src', src)
+						.css({
+							width: '100%',
+							height: $(window).height()+'px',
+							position: 'fixed',
+							display: 'block',
+							backgroundColor: 'transparent',
+							border: 'none',
+							top: 0,
+							right: 0
+						})
+						.on('load', function() {
+							errtm && clearTimeout(errtm);
+						})
+						.on('error', error)
+						.appendTo(elfNode.hasClass('elfinder-fullscreen')? elfNode : 'body');
+					// fit to window size
+					$(window).on('resize.'+node.attr('id'), function() {
+						container.css('height', $(window).height());
+					});
+				},
+				errtm;
+			launch();
+		};
+	
+	// check callback from pixlr
+	pixlrCallBack();
+	
+	// check getfile callback function
+	if (getfile) {
+		getfile = getfile[1];
+		if (getfile === 'ckeditor') {
+			elFinder.prototype._options.getFileCallback = function(file, fm) {
+				window.opener.CKEDITOR.tools.callFunction((function() {
+					var reParam = new RegExp('(?:[\?&]|&amp;)CKEditorFuncNum=([^&]+)', 'i'),
+						match = window.location.search.match(reParam);
+					return (match && match.length > 1) ? match[1] : '';
+				})(), fm.convAbsUrl(file.url));
+				fm.destroy();
+				window.close();
+			};
+		} else if (getfile === 'tinymce') {
+			elFinder.prototype._options.getFileCallback = function(file, fm) {
+				// pass selected file data to TinyMCE
+				parent.tinymce.activeEditor.windowManager.getParams().oninsert(file, fm);
+				// close popup window
+				parent.tinymce.activeEditor.windowManager.close();
+			};
+		}
+	}
+	
+	// return editors Array
+	return [
+		{
+			// Pixlr Editor
+			info : {
+				name : 'Pixlr Editor',
+				iconImg : 'img/edit_pixlreditor.png',
+				urlAsContent: true,
+				schemeContent: true,
+				single: true
+			},
+			// MIME types to accept
+			mimes : ['image/jpeg', 'image/png'],
+			// HTML of this editor
+			html : '<div style="width:100%;height:300px;max-height:100%;text-align:center;"><img/></div>',
+			// called on initialization of elFinder cmd edit (this: this editor's config object)
+			setup : function(opts, fm) {
+				pixlrSetup.call(this, opts, fm);
+			},
+			// Initialization of editing node (this: this editors HTML node)
+			init : function(id, file, url, fm) {
+				//initImgTag.call(this, id, file, fm.convAbsUrl(fm.openUrl(file.hash, true)), fm);
+				initImgTag.call(this, id, file, fm.convAbsUrl(url), fm);
+			},
+			// Get data uri scheme (this: this editors HTML node)
+			getContent : function() {
+				return $(this).children('img:first').attr('src');
+			},
+			load : function(base) {
+				pixlrLoad.call(this, 'editor', base);
+			},
+			save : function(base) {},
+			close : function(base) {}
+		},
+		{
+			// Pixlr Express
+			info : {
+				name : 'Pixlr Express',
+				iconImg : 'img/edit_pixlrexpress.png',
+				urlAsContent: true,
+				schemeContent: true,
+				single: true
+			},
+			// MIME types to accept
+			mimes : ['image/jpeg'],
+			// HTML of this editor
+			html : '<div style="width:100%;height:300px;max-height:100%;text-align:center;"><img/></div>',
+			// called on initialization of elFinder cmd edit (this: this editor's config object)
+			setup : function(opts, fm) {
+				pixlrSetup.call(this, opts, fm);
+			},
+			// Initialization of editing node (this: this editors HTML node)
+			init : function(id, file, url, fm) {
+				initImgTag.call(this, id, file, fm.convAbsUrl(url), fm);
+			},
+			// Get data uri scheme (this: this editors HTML node)
+			getContent : function() {
+				return $(this).children('img:first').attr('src');
+			},
+			load : function(base) {
+				pixlrLoad.call(this, 'express', base);
+			},
+			save : function(base) {},
+			close : function(base) {}
+		},
+		{
+			// Adobe Creative SDK Creative Tools Image Editor UI
+			// MIME types to accept
+			info : {
+				name : 'Creative Cloud',
+				iconImg : 'img/edit_creativecloud.png',
+				schemeContent: true,
+				single: true
+			},
+			mimes : ['image/jpeg', 'image/png'],
+			// HTML of this editor
+			html : '<div style="width:100%;height:300px;max-height:100%;text-align:center;"><img/></div>',
+			// called on initialization of elFinder cmd edit (this: this editor's config object)
+			setup : function(opts, fm) {
+				if (fm.UA.ltIE8 || !opts.extraOptions || !opts.extraOptions.creativeCloudApiKey) {
+					this.disabled = true;
+				} else {
+					this.apiKey = opts.extraOptions.creativeCloudApiKey;
+				}
+			},
+			// Initialization of editing node (this: this editors HTML node)
+			init : function(id, file, content, fm) {
+				initImgTag.call(this, id, file, content, fm);
+			},
+			// Get data uri scheme (this: this editors HTML node)
+			getContent : function() {
+				return $(this).children('img:first').attr('src');
+			},
+			// Launch Aviary Feather editor when dialog open
+			load : function(base) {
+				var self = this,
+					fm = this.fm,
+					node = $(base).children('img:first'),
+					elfNode = fm.getUI(),
+					dfrd = $.Deferred(),
+					container = $('#elfinder-aviary-container'),
+					init = function(onload) {
+						var getLang = function() {
+								var langMap = {
+									'jp' : 'ja',
+									'zh_TW' : 'zh_HANT',
+									'zh_CN' : 'zh_HANS'
+								};
+								return langMap[fm.lang]? langMap[fm.lang] : fm.lang;
+							};
+							
+						if (!container.length) {
+							container = $('<div id="elfinder-aviary-container" class="ui-front"/>').css({
+								position: 'fixed',
+								top: 0,
+								right: 0,
+								width: '100%',
+								height: $(window).height(),
+								overflow: 'auto'
+							}).hide().appendTo(elfNode.hasClass('elfinder-fullscreen')? elfNode : 'body');
+							// fit to window size
+							$(window).on('resize.'+fm.namespace, function() {
+								container.css('height', $(window).height());
+							});
+							// bind switch fullscreen event
+							elfNode.on('resize.'+fm.namespace, function(e, data) {
+								e.preventDefault();
+								e.stopPropagation();
+								data && data.fullscreen && container.appendTo(data.fullscreen === 'on'? elfNode : 'body');
+							});
+							fm.bind('destroy', function() {
+								container.remove();
+							});
+						} else {
+							// always moves to last
+							container.appendTo(container.parent());
+						}
+						node.on('click', launch).data('loading')();
+						featherEditor = new Aviary.Feather({
+							apiKey: self.confObj.apiKey,
+							onSave: function(imageID, newURL) {
+								featherEditor.showWaitIndicator();
+								node.on('load error', function() {
+										node.data('loading')(true);
+									})
+									.attr('crossorigin', 'anonymous')
+									.attr('src', newURL)
+									.data('loading')();
+								featherEditor.close();
+							},
+							onLoad: onload || function(){},
+							onClose: function() { $(container).hide(); },
+							appendTo: container.get(0),
+							maxSize: 2048,
+							language: getLang()
+						});
+						// return editor instance
+						dfrd.resolve(featherEditor);
+					},
+					launch = function() {
+						$(container).show();
+						featherEditor.launch({
+							image: node.attr('id'),
+							url: node.attr('src')
+						});
+						node.data('loading')(true);
+					},
+					featherEditor, extraOpts;
+				
+				// load script then init
+				if (typeof Aviary === 'undefined') {
+					fm.loadScript(['https://dme0ih8comzn4.cloudfront.net/imaging/v3/editor.js'], function() {
+						init(launch);
+					}, {loadType: 'tag'});
+				} else {
+					init();
+					launch();
+				}
+				return dfrd;
+			},
+			// Convert content url to data uri scheme to save content
+			save : function(base) {
+				var node = $(base).children('img:first');
+				if (node.attr('src').substr(0, 5) !== 'data:') {
+					node.attr('src', imgBase64(node, this.file.mime));
+				}
+			}
+		},
+		{
+			// ACE Editor
+			// called on initialization of elFinder cmd edit (this: this editor's config object)
+			setup : function(opts, fm) {
+				if (fm.UA.ltIE8) {
+					this.disabled = true;
+				}
+			},
+			// `mimes` is not set for support everything kind of text file
+			info : {
+				name : 'ACE Editor',
+				iconImg : 'img/edit_aceeditor.png'
+			},
+			load : function(textarea) {
+				var self = this,
+					dfrd = $.Deferred(),
+					cdn  = this.fm.options.cdns.ace,
+					start = function() {
+						var editor, editorBase, mode,
+						ta = $(textarea),
+						taBase = ta.parent(),
+						dialog = taBase.parent(),
+						id = textarea.id + '_ace',
+						ext = self.file.name.replace(/^.+\.([^.]+)|(.+)$/, '$1$2').toLowerCase(),
+						// MIME/mode map
+						mimeMode = {
+							'text/x-php'			  : 'php',
+							'application/x-php'		  : 'php',
+							'text/html'				  : 'html',
+							'application/xhtml+xml'	  : 'html',
+							'text/javascript'		  : 'javascript',
+							'application/javascript'  : 'javascript',
+							'text/css'				  : 'css',
+							'text/x-c'				  : 'c_cpp',
+							'text/x-csrc'			  : 'c_cpp',
+							'text/x-chdr'			  : 'c_cpp',
+							'text/x-c++'			  : 'c_cpp',
+							'text/x-c++src'			  : 'c_cpp',
+							'text/x-c++hdr'			  : 'c_cpp',
+							'text/x-shellscript'	  : 'sh',
+							'application/x-csh'		  : 'sh',
+							'text/x-python'			  : 'python',
+							'text/x-java'			  : 'java',
+							'text/x-java-source'	  : 'java',
+							'text/x-ruby'			  : 'ruby',
+							'text/x-perl'			  : 'perl',
+							'application/x-perl'	  : 'perl',
+							'text/x-sql'			  : 'sql',
+							'text/xml'				  : 'xml',
+							'application/docbook+xml' : 'xml',
+							'application/xml'		  : 'xml'
+						};
+
+						// set base height
+						taBase.height(taBase.height());
+
+						// set basePath of ace
+						ace.config.set('basePath', cdn);
+
+						// Base node of Ace editor
+						editorBase = $('<div id="'+id+'" style="width:100%; height:100%;"/>').text(ta.val()).insertBefore(ta.hide());
+
+						// Editor flag
+						ta.data('ace', true);
+
+						// Aceeditor instance
+						editor = ace.edit(id);
+
+						// Ace editor configure
+						editor.$blockScrolling = Infinity;
+						editor.setOptions({
+							theme: 'ace/theme/monokai',
+							fontSize: '14px',
+							wrap: true,
+						});
+						ace.config.loadModule('ace/ext/modelist', function() {
+							// detect mode
+							mode = ace.require('ace/ext/modelist').getModeForPath('/' + self.file.name).name;
+							if (mode === 'text') {
+								if (mimeMode[self.file.mime]) {
+									mode = mimeMode[self.file.mime];
+								}
+							}
+							// show MIME:mode in title bar
+							taBase.prev().children('.elfinder-dialog-title').append(' (' + self.file.mime + ' : ' + mode.split(/[\/\\]/).pop() + ')');
+							editor.setOptions({
+								mode: 'ace/mode/' + mode
+							});
+						});
+						ace.config.loadModule('ace/ext/language_tools', function() {
+							ace.require('ace/ext/language_tools');
+							editor.setOptions({
+								enableBasicAutocompletion: true,
+								enableSnippets: true,
+								enableLiveAutocompletion: false
+							});
+						});
+						ace.config.loadModule('ace/ext/settings_menu', function() {
+							ace.require('ace/ext/settings_menu').init(editor);
+						});
+						
+						// Short cuts
+						editor.commands.addCommand({
+							name : "saveFile",
+							bindKey: {
+								win : 'Ctrl-s',
+								mac : 'Command-s'
+							},
+							exec: function(editor) {
+								self.doSave();
+							}
+						});
+						editor.commands.addCommand({
+							name : "closeEditor",
+							bindKey: {
+								win : 'Ctrl-w|Ctrl-q',
+								mac : 'Command-w|Command-q'
+							},
+							exec: function(editor) {
+								self.doCancel();
+							}
+						});
+
+						editor.resize();
+
+						// TextArea button and Setting button
+						$('<div class="ui-dialog-buttonset"/>').css('float', 'left')
+						.append(
+							$('<button/>').html(self.fm.i18n('TextArea'))
+							.button()
+							.on('click', function(){
+								if (ta.data('ace')) {
+									ta.removeData('ace');
+									editorBase.hide();
+									ta.val(editor.session.getValue()).show().focus();
+									$(this).text('AceEditor');
+								} else {
+									ta.data('ace', true);
+									editorBase.show();
+									editor.setValue(ta.hide().val(), -1);
+									editor.focus();
+									$(this).html(self.fm.i18n('TextArea'));
+								}
+							})
+						)
+						.append(
+							$('<button>Ace editor setting</button>')
+							.button({
+								icons: {
+									primary: 'ui-icon-gear',
+									secondary: 'ui-icon-triangle-1-e'
+								},
+								text: false
+							})
+							.on('click', function(){
+								editor.showSettingsMenu();
+								$('#ace_settingsmenu')
+									.css('font-size', '80%')
+									.find('div[contains="setOptions"]').hide().end()
+									.parent().parent().appendTo($('#elfinder'));
+							})
+						)
+						.prependTo(taBase.next());
+
+						dfrd.resolve(editor);
+					};
+
+				// check ace & start
+				if (!self.confObj.loader) {
+					self.confObj.loader = $.Deferred();
+					self.fm.loadScript([ cdn+'/ace.js' ], function() {
+						self.confObj.loader.resolve();
+					}, void 0, {obj: window, name: 'ace'});
+				}
+				self.confObj.loader.done(start);
+
+				return dfrd;
+			},
+			close : function(textarea, instance) {
+				instance && instance.destroy();
+			},
+			save : function(textarea, instance) {
+				instance && $(textarea).data('ace') && (textarea.value = instance.session.getValue());
+			},
+			focus : function(textarea, instance) {
+				instance && $(textarea).data('ace') && instance.focus();
+			},
+			resize : function(textarea, instance, e, data) {
+				instance && instance.resize();
+			}
+		},
+		{
+			// CodeMirror
+			// called on initialization of elFinder cmd edit (this: this editor's config object)
+			setup : function(opts, fm) {
+				if (fm.UA.ltIE10) {
+					this.disabled = true;
+				}
+			},
+			// `mimes` is not set for support everything kind of text file
+			info : {
+				name : 'CodeMirror',
+				iconImg : 'img/edit_codemirror.png'
+			},
+			load : function(textarea) {
+				var cmUrl = this.fm.options.cdns.codemirror,
+					dfrd = $.Deferred(),
+					self = this,
+					start = function(CodeMirror) {
+						var ta   = $(textarea),
+							base = ta.parent(),
+							editor, editorBase;
+						
+						// set base height
+						base.height(base.height());
+						
+						// CodeMirror configure
+						editor = CodeMirror.fromTextArea(textarea, {
+							lineNumbers: true,
+							lineWrapping: true,
+							extraKeys : {
+								'Ctrl-S': function() { self.doSave(); },
+								'Ctrl-Q': function() { self.doCancel(); },
+								'Ctrl-W': function() { self.doCancel(); }
+							}
+						});
+						
+						// return editor instance
+						dfrd.resolve(editor);
+						
+						// Auto mode set
+						var info, m, mode, spec;
+						if (! info) {
+							info = CodeMirror.findModeByMIME(self.file.mime);
+						}
+						if (! info && (m = self.file.name.match(/.+\.([^.]+)$/))) {
+							info = CodeMirror.findModeByExtension(m[1]);
+						}
+						if (info) {
+							CodeMirror.modeURL = useRequire? 'codemirror/mode/%N/%N.min' : cmUrl + '/mode/%N/%N.min.js';
+							mode = info.mode;
+							spec = info.mime;
+							editor.setOption('mode', spec);
+							CodeMirror.autoLoadMode(editor, mode);
+							// show MIME:mode in title bar
+							base.prev().children('.elfinder-dialog-title').append(' (' + spec + ' : ' + mode + ')');
+						}
+						
+						// editor base node
+						editorBase = $(editor.getWrapperElement()).css({
+							// fix CSS conflict to SimpleMDE
+							padding: 0,
+					    	border: 'none'
+						});
+						ta.data('cm', true);
+						
+						// fit height to base
+						editorBase.height('100%');
+						
+						// TextArea button and Setting button
+						$('<div class="ui-dialog-buttonset"/>').css('float', 'left')
+						.append(
+							$('<button/>').html(self.fm.i18n('TextArea'))
+							.button()
+							.on('click', function(){
+								if (ta.data('cm')) {
+									ta.removeData('cm');
+									editorBase.hide();
+									ta.val(editor.getValue()).show().focus();
+									$(this).text('CodeMirror');
+								} else {
+									ta.data('cm', true);
+									editorBase.show();
+									editor.setValue(ta.hide().val());
+									editor.refresh();
+									editor.focus();
+									$(this).html(self.fm.i18n('TextArea'));
+								}
+							})
+						)
+						.prependTo(base.next());
+					};
+				// load script then start
+				if (!self.confObj.loader) {
+					self.confObj.loader = $.Deferred();
+					if (useRequire) {
+						require.config({
+							packages: [{
+								name: 'codemirror',
+								location: cmUrl,
+								main: 'codemirror.min'
+							}],
+							map: {
+								'codemirror': {
+									'codemirror/lib/codemirror': 'codemirror'
+								}
+							}
+						});
+						require([
+							'codemirror',
+							'codemirror/addon/mode/loadmode.min',
+							'codemirror/mode/meta.min'
+						], function(CodeMirror) {
+							self.confObj.loader.resolve(CodeMirror);
+						});
+					} else {
+						self.fm.loadScript([
+							cmUrl + '/codemirror.min.js'
+						], function() {
+							self.fm.loadScript([
+								cmUrl + '/addon/mode/loadmode.min.js',
+								cmUrl + '/mode/meta.min.js'
+							], function() {
+								self.confObj.loader.resolve(CodeMirror);
+							});
+						}, {loadType: 'tag'});
+					}
+					self.fm.loadCss(cmUrl + '/codemirror.css');
+				}
+				self.confObj.loader.done(start);
+				return dfrd;
+			},
+			close : function(textarea, instance) {
+				instance && instance.toTextArea();
+			},
+			save : function(textarea, instance) {
+				instance && $(textarea).data('cm') && (textarea.value = instance.getValue());
+			},
+			focus : function(textarea, instance) {
+				instance && $(textarea).data('cm') && instance.focus();
+			},
+			resize : function(textarea, instance, e, data) {
+				instance && instance.refresh();
+			}
+		},
+		{
+			// SimpleMDE
+			// called on initialization of elFinder cmd edit (this: this editor's config object)
+			setup : function(opts, fm) {
+				if (fm.UA.ltIE10) {
+					this.disabled = true;
+				}
+			},
+			info : {
+				name : 'SimpleMDE',
+				iconImg : 'img/edit_simplemde.png'
+			},
+			exts  : ['md'],
+			load : function(textarea) {
+				var self = this,
+					base = $(textarea).parent(),
+					dfrd = $.Deferred(),
+					cdn  = this.fm.options.cdns.simplemde,
+					start = function(SimpleMDE) {
+						var h     = base.height(),
+							delta = base.outerHeight(true) - h + 14,
+							editor, editorBase;
+						
+						// fit height function
+						textarea._setHeight = function(h) {
+							var h    = h || base.height(),
+								ctrH = 0,
+								areaH;
+							base.children('.editor-toolbar,.editor-statusbar').each(function() {
+								ctrH += $(this).outerHeight(true);
+							});
+							areaH = h - ctrH - delta;
+							editorBase.height(areaH);
+							editor.codemirror.refresh();
+							return areaH;
+						};
+						
+						// set base height
+						base.height(h);
+						
+						// make editor
+						editor = new SimpleMDE({
+							element: textarea,
+							autofocus: true
+						});
+						dfrd.resolve(editor);
+						
+						// editor base node
+						editorBase = $(editor.codemirror.getWrapperElement());
+						
+						// fit height to base
+						editorBase.css('min-height', '50px')
+							.children('.CodeMirror-scroll').css('min-height', '50px');
+						textarea._setHeight(h);
+					};
+
+				// check SimpleMDE & start
+				if (!self.confObj.loader) {
+					self.confObj.loader = $.Deferred();
+					self.fm.loadCss(cdn+'/simplemde.min.css');
+					if (useRequire) {
+						require([
+							cdn+'/simplemde.min.js'
+						], function(SimpleMDE) {
+							self.confObj.loader.resolve(SimpleMDE);
+						});
+					} else {
+						self.fm.loadScript([cdn+'/simplemde.min.js'], function() {
+							self.confObj.loader.resolve(SimpleMDE);
+						}, {loadType: 'tag'});
+					}
+				}
+				self.confObj.loader.done(start);
+
+				return dfrd;
+			},
+			close : function(textarea, instance) {
+				instance && instance.toTextArea();
+				instance = null;
+			},
+			save : function(textarea, instance) {
+				instance && (textarea.value = instance.value());
+			},
+			focus : function(textarea, instance) {
+				instance && instance.codemirror.focus();
+			},
+			resize : function(textarea, instance, e, data) {
+				instance && textarea._setHeight();
+			}
+		},
+		{
+			// CKEditor for html file
+			info : {
+				name : 'CKEditor',
+				iconImg : 'img/edit_ckeditor.png'
+			},
+			exts  : ['htm', 'html', 'xhtml'],
+			setup : function(opts, fm) {
+				if (opts.extraOptions && opts.extraOptions.managerUrl) {
+					this.managerUrl = opts.extraOptions.managerUrl;
+				}
+			},
+			load : function(textarea) {
+				var self = this,
+					fm   = this.fm,
+					dfrd = $.Deferred(),
+					init = function() {
+						var base = $(textarea).parent(),
+							dlg = base.closest('.elfinder-dialog'),
+							h = base.height(),
+							reg = /([&?]getfile=)[^&]+/,
+							loc = self.confObj.managerUrl || window.location.href.replace(/#.*$/, ''),
+							name = 'ckeditor';
+						
+						// make manager location
+						if (reg.test(loc)) {
+							loc = loc.replace(reg, '$1' + name);
+						} else {
+							loc += '?getfile=' + name;
+						}
+						// set base height
+						base.height(h);
+						// CKEditor configure
+						CKEDITOR.replace(textarea.id, {
+							startupFocus : true,
+							fullPage: true,
+							allowedContent: true,
+							filebrowserBrowseUrl : loc,
+							removePlugins: 'resize',
+							on: {
+								'instanceReady' : function(e) {
+									var editor = e.editor;
+									editor.resize('100%', h);
+									// re-build on dom move
+									dlg.one('beforedommove.'+fm.namespace, function() {
+										editor.destroy();
+									}).one('dommove.'+fm.namespace, function() {
+										self.load(textarea).done(function(editor) {
+											self.instance = editor;
+										});
+									});
+									// return editor instance
+									dfrd.resolve(e.editor);
+								}
+							}
+						});
+						CKEDITOR.on('dialogDefinition', function(e) {
+							var dlg = e.data.definition.dialog;
+							dlg.on('show', function(e) {
+								fm.getUI().append($('.cke_dialog_background_cover')).append(this.getElement().$)
+							});
+							dlg.on('hide', function(e) {
+								$('body:first').append($('.cke_dialog_background_cover')).append(this.getElement().$)
+							});
+						});
+					};
+
+				if (!self.confObj.loader) {
+					self.confObj.loader = $.Deferred();
+					$.getScript(fm.options.cdns.ckeditor + '/ckeditor.js', function() {
+						self.confObj.loader.resolve();
+					});
+				}
+				self.confObj.loader.done(init);
+				return dfrd;
+			},
+			close : function(textarea, instance) {
+				instance && instance.destroy();
+			},
+			save : function(textarea, instance) {
+				instance && (textarea.value = instance.getData());
+			},
+			focus : function(textarea, instance) {
+				instance && instance.focus();
+			},
+			resize : function(textarea, instance, e, data) {
+				var self;
+				if (instance) {
+					if (instance.status === 'ready') {
+						instance.resize('100%', $(textarea).parent().height());
+					}
+				}
+			}
+		},
+		{
+			// TinyMCE for html file
+			info : {
+				name : 'TinyMCE',
+				iconImg : 'img/edit_tinymce.png'
+			},
+			exts  : ['htm', 'html', 'xhtml'],
+			setup : function(opts, fm) {
+				if (opts.extraOptions && opts.extraOptions.managerUrl) {
+					this.managerUrl = opts.extraOptions.managerUrl;
+				}
+			},
+			load : function(textarea) {
+				var self = this,
+					fm   = this.fm,
+					dfrd = $.Deferred(),
+					init = function() {
+						var base = $(textarea).parent(),
+							dlg = base.closest('.elfinder-dialog'),
+							h = base.height(),
+							delta = base.outerHeight(true) - h;
+						// set base height
+						base.height(h);
+						// fit height function
+						textarea._setHeight = function(h) {
+							var base = $(this).parent(),
+								h    = h || base.height(),
+								ctrH = 0,
+								areaH;
+							base.find('.mce-container-body:first').children('.mce-toolbar,.mce-toolbar-grp,.mce-statusbar').each(function() {
+								ctrH += $(this).outerHeight(true);
+							});
+							areaH = h - ctrH - delta;
+							base.find('.mce-edit-area iframe:first').height(areaH);
+							return areaH;
+						};
+						// TinyMCE configure
+						tinymce.init({
+							selector: '#' + textarea.id,
+							resize: false,
+							plugins: [
+								'fullpage', // require for getting full HTML
+								'image', 'link', 'media',
+								'code', 'fullscreen'
+							],
+							init_instance_callback : function(editor) {
+								// fit height on init
+								textarea._setHeight(h);
+								// re-build on dom move
+								dlg.one('beforedommove.'+fm.namespace, function() {
+									tinymce.execCommand('mceRemoveEditor', false, textarea.id);
+								}).one('dommove.'+fm.namespace, function() {
+									self.load(textarea).done(function(editor) {
+										self.instance = editor;
+									});
+								});
+								// return editor instance
+								dfrd.resolve(editor);
+							},
+							file_picker_callback : function (callback, value, meta) {
+								var reg = /([&?]getfile=)[^&]+/,
+									loc = self.confObj.managerUrl || window.location.href.replace(/#.*$/, ''),
+									name = 'tinymce';
+								
+								// make manager location
+								if (reg.test(loc)) {
+									loc = loc.replace(reg, '$1' + name);
+								} else {
+									loc += '?getfile=' + name;
+								}
+								// launch TinyMCE
+								tinymce.activeEditor.windowManager.open({
+									file: loc,
+									title: 'elFinder',
+									width: 900,	 
+									height: 450,
+									resizable: 'yes'
+								}, {
+									oninsert: function (file, elf) {
+										var url, reg, info;
+
+										// URL normalization
+										url = elf.convAbsUrl(file.url);
+										
+										// Make file info
+										info = file.name + ' (' + elf.formatSize(file.size) + ')';
+
+										// Provide file and text for the link dialog
+										if (meta.filetype == 'file') {
+											callback(url, {text: info, title: info});
+										}
+
+										// Provide image and alt text for the image dialog
+										if (meta.filetype == 'image') {
+											callback(url, {alt: info});
+										}
+
+										// Provide alternative source and posted for the media dialog
+										if (meta.filetype == 'media') {
+											callback(url);
+										}
+									}
+								});
+								return false;
+							}
+						});
+					};
+				
+ 				// impossible launch TineMCE in native fullscreen mode
+ 				fm.getUI().hasClass('elfinder-fullscreen-native') && fm.exec('fullscreen');
+				
+				if (!self.confObj.loader) {
+					self.confObj.loader = $.Deferred();
+					$.getScript(fm.options.cdns.tinymce + '/tinymce.min.js', function() {
+						setTimeout(function() {
+							self.confObj.loader.resolve();
+						}, 0);
+					});
+				}
+				self.confObj.loader.done(init);
+				return dfrd;
+			},
+			close : function(textarea, instance) {
+				instance && tinymce.execCommand('mceRemoveEditor', false, textarea.id);
+			},
+			save : function(textarea, instance) {
+				instance && instance.save();
+			},
+			focus : function(textarea, instance) {
+				instance && instance.focus();
+			},
+			resize : function(textarea, instance, e, data) {
+				// fit height to base node on dialog resize
+				instance && textarea._setHeight();
+			}
+		},
+		{
+			// Simple Text (basic textarea editor)
+			info : {
+				name : 'TextArea',
+				useTextAreaEvent : true
+			},
+			load : function(){},
+			save : function(){}
+		}
+	];
+}, window.elFinder));

文件差異過大導致無法顯示
+ 0 - 0
src/assets/js/extras/editors.default.min.js


文件差異過大導致無法顯示
+ 6 - 0
src/assets/js/extras/encoding-japanese.min.js


+ 69 - 0
src/assets/js/extras/quicklook.googledocs.js

@@ -0,0 +1,69 @@
+"use strict";
+
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+try {
+	if (! elFinder.prototype.commands.quicklook.plugins) {
+		elFinder.prototype.commands.quicklook.plugins = [];
+	}
+	elFinder.prototype.commands.quicklook.plugins.push(function(ql) {
+		var fm      = ql.fm,
+			preview = ql.preview;
+			
+		preview.on('update', function(e) {
+			var win  = ql.window,
+				file = e.file, node, loading;
+			
+			if (file.mime.indexOf('application/vnd.google-apps.') === 0) {
+				if (file.url == '1') {
+					$('<div class="elfinder-quicklook-info-data"><button class="elfinder-info-button">'+fm.i18n('getLink')+'</button></div>').appendTo(ql.info.find('.elfinder-quicklook-info'))
+					.on('click', function() {
+						$(this).html('<span class="elfinder-info-spinner">');
+						fm.request({
+							data : {cmd : 'url', target : file.hash},
+							preventDefault : true
+						})
+						.always(function() {
+							$(this).html('');
+						})
+						.done(function(data) {
+							var rfile = fm.file(file.hash);
+							ql.value.url = rfile.url = data.url || '';
+							if (ql.value.url) {
+								preview.trigger($.Event('update', {file : ql.value}));
+							}
+						});
+					});
+				}
+				if (file.url !== '' && file.url != '1') {
+					e.stopImmediatePropagation();
+					preview.one('change', function() {
+						loading.remove();
+						node.off('load').remove();
+					});
+					
+					loading = $('<div class="elfinder-quicklook-info-data"> Now loading...<span class="elfinder-info-spinner"></div>').appendTo(ql.info.find('.elfinder-quicklook-info'));
+					
+					node = $('<iframe class="elfinder-quicklook-preview-iframe"/>')
+						.css('background-color', 'transparent')
+						.appendTo(preview)
+						.on('load', function() {
+							ql.hideinfo();
+							loading.remove();
+							$(this).css('background-color', '#fff').show();
+						})
+						.attr('src', fm.url(file.hash).replace('/edit', '/embed'));
+				}
+			}
+			
+		});
+	});
+} catch(e) {}
+}));

+ 1 - 0
src/assets/js/extras/quicklook.googledocs.min.js

@@ -0,0 +1 @@
+"use strict";!function(e,n){"function"==typeof define&&define.amd?define(["elfinder"],n):"undefined"!=typeof exports?module.exports=n(require("elfinder")):n(e.elFinder)}(this,function(e){try{e.prototype.commands.quicklook.plugins||(e.prototype.commands.quicklook.plugins=[]),e.prototype.commands.quicklook.plugins.push(function(e){var n=e.fm,o=e.preview;o.on("update",function(i){var t,l,r=(e.window,i.file);0===r.mime.indexOf("application/vnd.google-apps.")&&("1"==r.url&&$('<div class="elfinder-quicklook-info-data"><button class="elfinder-info-button">'+n.i18n("getLink")+"</button></div>").appendTo(e.info.find(".elfinder-quicklook-info")).on("click",function(){$(this).html('<span class="elfinder-info-spinner">'),n.request({data:{cmd:"url",target:r.hash},preventDefault:!0}).always(function(){$(this).html("")}).done(function(i){var t=n.file(r.hash);e.value.url=t.url=i.url||"",e.value.url&&o.trigger($.Event("update",{file:e.value}))})}),""!==r.url&&"1"!=r.url&&(i.stopImmediatePropagation(),o.one("change",function(){l.remove(),t.off("load").remove()}),l=$('<div class="elfinder-quicklook-info-data"> Now loading...<span class="elfinder-info-spinner"></div>').appendTo(e.info.find(".elfinder-quicklook-info")),t=$('<iframe class="elfinder-quicklook-preview-iframe"/>').css("background-color","transparent").appendTo(o).on("load",function(){e.hideinfo(),l.remove(),$(this).css("background-color","#fff").show()}).attr("src",n.url(r.hash).replace("/edit","/embed"))))})})}catch(n){}});

+ 526 - 0
src/assets/js/i18n/elfinder.LANG.js

@@ -0,0 +1,526 @@
+/**
+ * elFinder translation template
+ * use this file to create new translation
+ * submit new translation via https://github.com/Studio-42/elFinder/issues
+ * or make a pull request
+ */
+
+/**
+ * XXXXX translation
+ * @author Translator Name <translator@email.tld>
+ * @version 201x-xx-xx
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.REPLACE_WITH_xx_OR_xx_YY_LANG_CODE = {
+		translator : 'Translator name &lt;translator@email.tld&gt;',
+		language   : 'Language of translation in your language',
+		direction  : 'ltr',
+		dateFormat : 'd.m.Y H:i', // Mar 13, 2012 05:27 PM
+		fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM
+		nonameDateFormat : 'ymd-His', // to apply if upload file is noname: 120513172700
+		messages   : {
+
+			/********************************** errors **********************************/
+			'error'                : 'Error',
+			'errUnknown'           : 'Unknown error.',
+			'errUnknownCmd'        : 'Unknown command.',
+			'errJqui'              : 'Invalid jQuery UI configuration. Selectable, draggable and droppable components must be included.',
+			'errNode'              : 'elFinder requires DOM Element to be created.',
+			'errURL'               : 'Invalid elFinder configuration! URL option is not set.',
+			'errAccess'            : 'Access denied.',
+			'errConnect'           : 'Unable to connect to backend.',
+			'errAbort'             : 'Connection aborted.',
+			'errTimeout'           : 'Connection timeout.',
+			'errNotFound'          : 'Backend not found.',
+			'errResponse'          : 'Invalid backend response.',
+			'errConf'              : 'Invalid backend configuration.',
+			'errJSON'              : 'PHP JSON module not installed.',
+			'errNoVolumes'         : 'Readable volumes not available.',
+			'errCmdParams'         : 'Invalid parameters for command "$1".',
+			'errDataNotJSON'       : 'Data is not JSON.',
+			'errDataEmpty'         : 'Data is empty.',
+			'errCmdReq'            : 'Backend request requires command name.',
+			'errOpen'              : 'Unable to open "$1".',
+			'errNotFolder'         : 'Object is not a folder.',
+			'errNotFile'           : 'Object is not a file.',
+			'errRead'              : 'Unable to read "$1".',
+			'errWrite'             : 'Unable to write into "$1".',
+			'errPerm'              : 'Permission denied.',
+			'errLocked'            : '"$1" is locked and can not be renamed, moved or removed.',
+			'errExists'            : 'File named "$1" already exists.',
+			'errInvName'           : 'Invalid file name.',
+			'errInvDirname'        : 'Invalid folder name.',  // from v2.1.24 added 12.4.2017
+			'errFolderNotFound'    : 'Folder not found.',
+			'errFileNotFound'      : 'File not found.',
+			'errTrgFolderNotFound' : 'Target folder "$1" not found.',
+			'errPopup'             : 'Browser prevented opening popup window. To open file enable it in browser options.',
+			'errMkdir'             : 'Unable to create folder "$1".',
+			'errMkfile'            : 'Unable to create file "$1".',
+			'errRename'            : 'Unable to rename "$1".',
+			'errCopyFrom'          : 'Copying files from volume "$1" not allowed.',
+			'errCopyTo'            : 'Copying files to volume "$1" not allowed.',
+			'errMkOutLink'         : 'Unable to create a link to outside the volume root.', // from v2.1 added 03.10.2015
+			'errUpload'            : 'Upload error.',  // old name - errUploadCommon
+			'errUploadFile'        : 'Unable to upload "$1".', // old name - errUpload
+			'errUploadNoFiles'     : 'No files found for upload.',
+			'errUploadTotalSize'   : 'Data exceeds the maximum allowed size.', // old name - errMaxSize
+			'errUploadFileSize'    : 'File exceeds maximum allowed size.', //  old name - errFileMaxSize
+			'errUploadMime'        : 'File type not allowed.',
+			'errUploadTransfer'    : '"$1" transfer error.',
+			'errUploadTemp'        : 'Unable to make temporary file for upload.', // from v2.1 added 26.09.2015
+			'errNotReplace'        : 'Object "$1" already exists at this location and can not be replaced by object with another type.', // new
+			'errReplace'           : 'Unable to replace "$1".',
+			'errSave'              : 'Unable to save "$1".',
+			'errCopy'              : 'Unable to copy "$1".',
+			'errMove'              : 'Unable to move "$1".',
+			'errCopyInItself'      : 'Unable to copy "$1" into itself.',
+			'errRm'                : 'Unable to remove "$1".',
+			'errTrash'             : 'Unable into trash.', // from v2.1.24 added 30.4.2017
+			'errRmSrc'             : 'Unable remove source file(s).',
+			'errExtract'           : 'Unable to extract files from "$1".',
+			'errArchive'           : 'Unable to create archive.',
+			'errArcType'           : 'Unsupported archive type.',
+			'errNoArchive'         : 'File is not archive or has unsupported archive type.',
+			'errCmdNoSupport'      : 'Backend does not support this command.',
+			'errReplByChild'       : 'The folder "$1" can\'t be replaced by an item it contains.',
+			'errArcSymlinks'       : 'For security reason denied to unpack archives contains symlinks or files with not allowed names.', // edited 24.06.2012
+			'errArcMaxSize'        : 'Archive files exceeds maximum allowed size.',
+			'errResize'            : 'Unable to resize "$1".',
+			'errResizeDegree'      : 'Invalid rotate degree.',  // added 7.3.2013
+			'errResizeRotate'      : 'Unable to rotate image.',  // added 7.3.2013
+			'errResizeSize'        : 'Invalid image size.',  // added 7.3.2013
+			'errResizeNoChange'    : 'Image size not changed.',  // added 7.3.2013
+			'errUsupportType'      : 'Unsupported file type.',
+			'errNotUTF8Content'    : 'File "$1" is not in UTF-8 and cannot be edited.',  // added 9.11.2011
+			'errNetMount'          : 'Unable to mount "$1".', // added 17.04.2012
+			'errNetMountNoDriver'  : 'Unsupported protocol.',     // added 17.04.2012
+			'errNetMountFailed'    : 'Mount failed.',         // added 17.04.2012
+			'errNetMountHostReq'   : 'Host required.', // added 18.04.2012
+			'errSessionExpires'    : 'Your session has expired due to inactivity.',
+			'errCreatingTempDir'   : 'Unable to create temporary directory: "$1"',
+			'errFtpDownloadFile'   : 'Unable to download file from FTP: "$1"',
+			'errFtpUploadFile'     : 'Unable to upload file to FTP: "$1"',
+			'errFtpMkdir'          : 'Unable to create remote directory on FTP: "$1"',
+			'errArchiveExec'       : 'Error while archiving files: "$1"',
+			'errExtractExec'       : 'Error while extracting files: "$1"',
+			'errNetUnMount'        : 'Unable to unmount.', // from v2.1 added 30.04.2012
+			'errConvUTF8'          : 'Not convertible to UTF-8', // from v2.1 added 08.04.2014
+			'errFolderUpload'      : 'Try the modern browser, If you\'d like to upload the folder.', // from v2.1 added 26.6.2015
+			'errSearchTimeout'     : 'Timed out while searching "$1". Search result is partial.', // from v2.1 added 12.1.2016
+			'errReauthRequire'     : 'Re-authorization is required.', // from v2.1.10 added 24.3.2016
+			'errMaxTargets'        : 'Max number of selectable items is $1.', // from v2.1.17 added 17.10.2016
+			'errRestore'           : 'Unable to restore from the trash. Can\'t identify the restore destination.', // from v2.1.24 added 3.5.2017
+			'errEditorNotFound'    : 'Editor not found to this file type.', // from v2.1.25 added 23.5.2017
+			'errServerError'       : 'Error occurred on the server side.', // from v2.1.25 added 16.6.2017
+			'errEmpty'             : 'Unable to empty folder "$1".', // from v2.1.25 added 22.6.2017
+
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'Create archive',
+			'cmdback'      : 'Back',
+			'cmdcopy'      : 'Copy',
+			'cmdcut'       : 'Cut',
+			'cmddownload'  : 'Download',
+			'cmdduplicate' : 'Duplicate',
+			'cmdedit'      : 'Edit file',
+			'cmdextract'   : 'Extract files from archive',
+			'cmdforward'   : 'Forward',
+			'cmdgetfile'   : 'Select files',
+			'cmdhelp'      : 'About this software',
+			'cmdhome'      : 'Root',
+			'cmdinfo'      : 'Get info',
+			'cmdmkdir'     : 'New folder',
+			'cmdmkdirin'   : 'Into New Folder', // from v2.1.7 added 19.2.2016
+			'cmdmkfile'    : 'New text file',
+			'cmdopen'      : 'Open',
+			'cmdpaste'     : 'Paste',
+			'cmdquicklook' : 'Preview',
+			'cmdreload'    : 'Reload',
+			'cmdrename'    : 'Rename',
+			'cmdrm'        : 'Delete',
+			'cmdtrash'     : 'Into trash', //from v2.1.24 added 29.4.2017
+			'cmdrestore'   : 'Restore', //from v2.1.24 added 3.5.2017
+			'cmdsearch'    : 'Find files',
+			'cmdup'        : 'Go to parent folder',
+			'cmdupload'    : 'Upload files',
+			'cmdview'      : 'View',
+			'cmdresize'    : 'Resize & Rotate',
+			'cmdsort'      : 'Sort',
+			'cmdnetmount'  : 'Mount network volume', // added 18.04.2012
+			'cmdnetunmount': 'Unmount', // from v2.1 added 30.04.2012
+			'cmdplaces'    : 'To Places', // added 28.12.2014
+			'cmdchmod'     : 'Change mode', // from v2.1 added 20.6.2015
+			'cmdopendir'   : 'Open a folder', // from v2.1 added 13.1.2016
+			'cmdcolwidth'  : 'Reset column width', // from v2.1.13 added 12.06.2016
+			'cmdfullscreen': 'Full Screen', // from v2.1.15 added 03.08.2016
+			'cmdmove'      : 'Move', // from v2.1.15 added 21.08.2016
+			'cmdempty'     : 'Empty the folder', // from v2.1.25 added 22.06.2017
+			'cmdundo'      : 'Undo', // from v2.1.27 added 31.07.2017
+			'cmdredo'      : 'Redo', // from v2.1.27 added 31.07.2017
+			'cmdpreference': 'Preferences', // from v2.1.27 added 03.08.2017
+			'cmdselectall' : 'Select all', // from v2.1.28 added 15.08.2017
+			'cmdselectnone': 'Select none', // from v2.1.28 added 15.08.2017
+			'cmdselectinvert': 'Invert selection', // from v2.1.28 added 15.08.2017
+
+			/*********************************** buttons ***********************************/
+			'btnClose'  : 'Close',
+			'btnSave'   : 'Save',
+			'btnRm'     : 'Remove',
+			'btnApply'  : 'Apply',
+			'btnCancel' : 'Cancel',
+			'btnNo'     : 'No',
+			'btnYes'    : 'Yes',
+			'btnMount'  : 'Mount',  // added 18.04.2012
+			'btnApprove': 'Goto $1 & approve', // from v2.1 added 26.04.2012
+			'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012
+			'btnConv'   : 'Convert', // from v2.1 added 08.04.2014
+			'btnCwd'    : 'Here',      // from v2.1 added 22.5.2015
+			'btnVolume' : 'Volume',    // from v2.1 added 22.5.2015
+			'btnAll'    : 'All',       // from v2.1 added 22.5.2015
+			'btnMime'   : 'MIME Type', // from v2.1 added 22.5.2015
+			'btnFileName':'Filename',  // from v2.1 added 22.5.2015
+			'btnSaveClose': 'Save & Close', // from v2.1 added 12.6.2015
+			'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015
+			'btnRename'    : 'Rename',      // from v2.1.24 added 6.4.2017
+			'btnRenameAll' : 'Rename(All)', // from v2.1.24 added 6.4.2017
+			'btnPrevious' : 'Prev ($1/$2)', // from v2.1.24 added 11.5.2017
+			'btnNext'     : 'Next ($1/$2)', // from v2.1.24 added 11.5.2017
+			'btnSaveAs'   : 'Save As', // from v2.1.25 added 24.5.2017
+
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'Open folder',
+			'ntffile'     : 'Open file',
+			'ntfreload'   : 'Reload folder content',
+			'ntfmkdir'    : 'Creating folder',
+			'ntfmkfile'   : 'Creating files',
+			'ntfrm'       : 'Delete files',
+			'ntfcopy'     : 'Copy files',
+			'ntfmove'     : 'Move files',
+			'ntfprepare'  : 'Checking existing items',
+			'ntfrename'   : 'Rename files',
+			'ntfupload'   : 'Uploading files',
+			'ntfdownload' : 'Downloading files',
+			'ntfsave'     : 'Save files',
+			'ntfarchive'  : 'Creating archive',
+			'ntfextract'  : 'Extracting files from archive',
+			'ntfsearch'   : 'Searching files',
+			'ntfresize'   : 'Resizing images',
+			'ntfsmth'     : 'Doing something',
+			'ntfloadimg'  : 'Loading image',
+			'ntfnetmount' : 'Mounting network volume', // added 18.04.2012
+			'ntfnetunmount': 'Unmounting network volume', // from v2.1 added 30.04.2012
+			'ntfdim'      : 'Acquiring image dimension', // added 20.05.2013
+			'ntfreaddir'  : 'Reading folder infomation', // from v2.1 added 01.07.2013
+			'ntfurl'      : 'Getting URL of link', // from v2.1 added 11.03.2014
+			'ntfchmod'    : 'Changing file mode', // from v2.1 added 20.6.2015
+			'ntfpreupload': 'Verifying upload file name', // from v2.1 added 31.11.2015
+			'ntfzipdl'    : 'Creating a file for download', // from v2.1.7 added 23.1.2016
+			'ntfparents'  : 'Getting path infomation', // from v2.1.17 added 2.11.2016
+			'ntfchunkmerge': 'Processing the uploaded file', // from v2.1.17 added 2.11.2016
+			'ntftrash'    : 'Doing throw in the trash', // from v2.1.24 added 2.5.2017
+			'ntfrestore'  : 'Doing restore from tha trash', // from v2.1.24 added 3.5.2017
+			'ntfchkdir'   : 'Checking destination folder', // from v2.1.24 added 3.5.2017
+			'ntfundo'     : 'Undoing previous operation', // from v2.1.27 added 31.07.2017
+			'ntfredo'     : 'Redoing previous undone', // from v2.1.27 added 31.07.2017
+
+			/*********************************** volumes *********************************/
+			'volume_Trash' : 'Trash', //from v2.1.24 added 29.4.2017
+
+			/************************************ dates **********************************/
+			'dateUnknown' : 'unknown',
+			'Today'       : 'Today',
+			'Yesterday'   : 'Yesterday',
+			'msJan'       : 'Jan',
+			'msFeb'       : 'Feb',
+			'msMar'       : 'Mar',
+			'msApr'       : 'Apr',
+			'msMay'       : 'May',
+			'msJun'       : 'Jun',
+			'msJul'       : 'Jul',
+			'msAug'       : 'Aug',
+			'msSep'       : 'Sep',
+			'msOct'       : 'Oct',
+			'msNov'       : 'Nov',
+			'msDec'       : 'Dec',
+			'January'     : 'January',
+			'February'    : 'February',
+			'March'       : 'March',
+			'April'       : 'April',
+			'May'         : 'May',
+			'June'        : 'June',
+			'July'        : 'July',
+			'August'      : 'August',
+			'September'   : 'September',
+			'October'     : 'October',
+			'November'    : 'November',
+			'December'    : 'December',
+			'Sunday'      : 'Sunday',
+			'Monday'      : 'Monday',
+			'Tuesday'     : 'Tuesday',
+			'Wednesday'   : 'Wednesday',
+			'Thursday'    : 'Thursday',
+			'Friday'      : 'Friday',
+			'Saturday'    : 'Saturday',
+			'Sun'         : 'Sun',
+			'Mon'         : 'Mon',
+			'Tue'         : 'Tue',
+			'Wed'         : 'Wed',
+			'Thu'         : 'Thu',
+			'Fri'         : 'Fri',
+			'Sat'         : 'Sat',
+
+			/******************************** sort variants ********************************/
+			'sortname'          : 'by name',
+			'sortkind'          : 'by kind',
+			'sortsize'          : 'by size',
+			'sortdate'          : 'by date',
+			'sortFoldersFirst'  : 'Folders first',
+			'sortperm'          : 'by permission', // from v2.1.13 added 13.06.2016
+			'sortmode'          : 'by mode',       // from v2.1.13 added 13.06.2016
+			'sortowner'         : 'by owner',      // from v2.1.13 added 13.06.2016
+			'sortgroup'         : 'by group',      // from v2.1.13 added 13.06.2016
+			'sortAlsoTreeview'  : 'Also Treeview',  // from v2.1.15 added 01.08.2016
+
+			/********************************** new items **********************************/
+			'untitled file.txt' : 'NewFile.txt', // added 10.11.2015
+			'untitled folder'   : 'NewFolder',   // added 10.11.2015
+			'Archive'           : 'NewArchive',  // from v2.1 added 10.11.2015
+
+			/********************************** messages **********************************/
+			'confirmReq'      : 'Confirmation required',
+			'confirmRm'       : 'Are you sure you want to permanently remove items?<br/>This cannot be undone!',
+			'confirmRepl'     : 'Replace old item with new one?',
+			'confirmRest'     : 'Replace existing item with the item in trash?', // fromv2.1.24 added 5.5.2017
+			'confirmConvUTF8' : 'Not in UTF-8<br/>Convert to UTF-8?<br/>Contents become UTF-8 by saving after conversion.', // from v2.1 added 08.04.2014
+			'confirmNonUTF8'  : 'Character encoding of this file couldn\'t be detected. It need to temporarily convert to UTF-8 for editting.<br/>Please select character encoding of this file.', // from v2.1.19 added 28.11.2016
+			'confirmNotSave'  : 'It has been modified.<br/>Losing work if you do not save changes.', // from v2.1 added 15.7.2015
+			'confirmTrash'    : 'Are you sure you want to move items to trash bin?', //from v2.1.24 added 29.4.2017
+			'apllyAll'        : 'Apply to all',
+			'name'            : 'Name',
+			'size'            : 'Size',
+			'perms'           : 'Permissions',
+			'modify'          : 'Modified',
+			'kind'            : 'Kind',
+			'read'            : 'read',
+			'write'           : 'write',
+			'noaccess'        : 'no access',
+			'and'             : 'and',
+			'unknown'         : 'unknown',
+			'selectall'       : 'Select all files',
+			'selectfiles'     : 'Select file(s)',
+			'selectffile'     : 'Select first file',
+			'selectlfile'     : 'Select last file',
+			'viewlist'        : 'List view',
+			'viewicons'       : 'Icons view',
+			'places'          : 'Places',
+			'calc'            : 'Calculate',
+			'path'            : 'Path',
+			'aliasfor'        : 'Alias for',
+			'locked'          : 'Locked',
+			'dim'             : 'Dimensions',
+			'files'           : 'Files',
+			'folders'         : 'Folders',
+			'items'           : 'Items',
+			'yes'             : 'yes',
+			'no'              : 'no',
+			'link'            : 'Link',
+			'searcresult'     : 'Search results',
+			'selected'        : 'selected items',
+			'about'           : 'About',
+			'shortcuts'       : 'Shortcuts',
+			'help'            : 'Help',
+			'webfm'           : 'Web file manager',
+			'ver'             : 'Version',
+			'protocolver'     : 'protocol version',
+			'homepage'        : 'Project home',
+			'docs'            : 'Documentation',
+			'github'          : 'Fork us on Github',
+			'twitter'         : 'Follow us on twitter',
+			'facebook'        : 'Join us on facebook',
+			'team'            : 'Team',
+			'chiefdev'        : 'chief developer',
+			'developer'       : 'developer',
+			'contributor'     : 'contributor',
+			'maintainer'      : 'maintainer',
+			'translator'      : 'translator',
+			'icons'           : 'Icons',
+			'dontforget'      : 'and don\'t forget to take your towel',
+			'shortcutsof'     : 'Shortcuts disabled',
+			'dropFiles'       : 'Drop files here',
+			'or'              : 'or',
+			'selectForUpload' : 'Select files',
+			'moveFiles'       : 'Move items',
+			'copyFiles'       : 'Copy items',
+			'restoreFiles'    : 'Restore items', // from v2.1.24 added 5.5.2017
+			'rmFromPlaces'    : 'Remove from places',
+			'aspectRatio'     : 'Aspect ratio',
+			'scale'           : 'Scale',
+			'width'           : 'Width',
+			'height'          : 'Height',
+			'resize'          : 'Resize',
+			'crop'            : 'Crop',
+			'rotate'          : 'Rotate',
+			'rotate-cw'       : 'Rotate 90 degrees CW',
+			'rotate-ccw'      : 'Rotate 90 degrees CCW',
+			'degree'          : '°',
+			'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012
+			'protocol'            : 'Protocol', // added 18.04.2012
+			'host'                : 'Host', // added 18.04.2012
+			'port'                : 'Port', // added 18.04.2012
+			'user'                : 'User', // added 18.04.2012
+			'pass'                : 'Password', // added 18.04.2012
+			'confirmUnmount'      : 'Are you unmount $1?',  // from v2.1 added 30.04.2012
+			'dropFilesBrowser': 'Drop or Paste files from browser', // from v2.1 added 30.05.2012
+			'dropPasteFiles'  : 'Drop files, Paste URLs or images(clipboard) here', // from v2.1 added 07.04.2014
+			'encoding'        : 'Encoding', // from v2.1 added 19.12.2014
+			'locale'          : 'Locale',   // from v2.1 added 19.12.2014
+			'searchTarget'    : 'Target: $1',                // from v2.1 added 22.5.2015
+			'searchMime'      : 'Search by input MIME Type', // from v2.1 added 22.5.2015
+			'owner'           : 'Owner', // from v2.1 added 20.6.2015
+			'group'           : 'Group', // from v2.1 added 20.6.2015
+			'other'           : 'Other', // from v2.1 added 20.6.2015
+			'execute'         : 'Execute', // from v2.1 added 20.6.2015
+			'perm'            : 'Permission', // from v2.1 added 20.6.2015
+			'mode'            : 'Mode', // from v2.1 added 20.6.2015
+			'emptyFolder'     : 'Folder is empty', // from v2.1.6 added 30.12.2015
+			'emptyFolderDrop' : 'Folder is empty\\A Drop to add items', // from v2.1.6 added 30.12.2015
+			'emptyFolderLTap' : 'Folder is empty\\A Long tap to add items', // from v2.1.6 added 30.12.2015
+			'quality'         : 'Quality', // from v2.1.6 added 5.1.2016
+			'autoSync'        : 'Auto sync',  // from v2.1.6 added 10.1.2016
+			'moveUp'          : 'Move up',  // from v2.1.6 added 18.1.2016
+			'getLink'         : 'Get URL link', // from v2.1.7 added 9.2.2016
+			'selectedItems'   : 'Selected items ($1)', // from v2.1.7 added 2.19.2016
+			'folderId'        : 'Folder ID', // from v2.1.10 added 3.25.2016
+			'offlineAccess'   : 'Allow offline access', // from v2.1.10 added 3.25.2016
+			'reAuth'          : 'To re-authenticate', // from v2.1.10 added 3.25.2016
+			'nowLoading'      : 'Now loading...', // from v2.1.12 added 4.26.2016
+			'openMulti'       : 'Open multiple files', // from v2.1.12 added 5.14.2016
+			'openMultiConfirm': 'You are trying to open the $1 files. Are you sure you want to open in browser?', // from v2.1.12 added 5.14.2016
+			'emptySearch'     : 'Search results is empty in search target.', // from v2.1.12 added 5.16.2016
+			'editingFile'     : 'It is editing a file.', // from v2.1.13 added 6.3.2016
+			'hasSelected'     : 'You have selected $1 items.', // from v2.1.13 added 6.3.2016
+			'hasClipboard'    : 'You have $1 items in the clipboard.', // from v2.1.13 added 6.3.2016
+			'incSearchOnly'   : 'Incremental search is only from the current view.', // from v2.1.13 added 6.30.2016
+			'reinstate'       : 'Reinstate', // from v2.1.15 added 3.8.2016
+			'complete'        : '$1 complete', // from v2.1.15 added 21.8.2016
+			'contextmenu'     : 'Context menu', // from v2.1.15 added 9.9.2016
+			'pageTurning'     : 'Page turning', // from v2.1.15 added 10.9.2016
+			'volumeRoots'     : 'Volume roots', // from v2.1.16 added 16.9.2016
+			'reset'           : 'Reset', // from v2.1.16 added 1.10.2016
+			'bgcolor'         : 'Background color', // from v2.1.16 added 1.10.2016
+			'colorPicker'     : 'Color picker', // from v2.1.16 added 1.10.2016
+			'8pxgrid'         : '8px Grid', // from v2.1.16 added 4.10.2016
+			'enabled'         : 'Enabled', // from v2.1.16 added 4.10.2016
+			'disabled'        : 'Disabled', // from v2.1.16 added 4.10.2016
+			'emptyIncSearch'  : 'Search results is empty in current view.\\APress [Enter] to expand search target.', // from v2.1.16 added 5.10.2016
+			'emptyLetSearch'  : 'First letter search results is empty in current view.', // from v2.1.23 added 24.3.2017
+			'textLabel'       : 'Text label', // from v2.1.17 added 13.10.2016
+			'minsLeft'        : '$1 mins left', // from v2.1.17 added 13.11.2016
+			'openAsEncoding'  : 'Reopen with selected encoding', // from v2.1.19 added 2.12.2016
+			'saveAsEncoding'  : 'Save with the selected encoding', // from v2.1.19 added 2.12.2016
+			'selectFolder'    : 'Select folder', // from v2.1.20 added 13.12.2016
+			'firstLetterSearch': 'First letter search', // from v2.1.23 added 24.3.2017
+			'presets'         : 'Presets', // from v2.1.25 added 26.5.2017
+			'tooManyToTrash'  : 'It\'s too many items so it can\'t into trash.', // from v2.1.25 added 9.6.2017
+			'TextArea'        : 'TextArea', // from v2.1.25 added 14.6.2017
+			'folderToEmpty'   : 'Empty the folder "$1".', // from v2.1.25 added 22.6.2017
+			'filderIsEmpty'   : 'There are no items in a folder "$1".', // from v2.1.25 added 22.6.2017
+			'preference'      : 'Preference', // from v2.1.26 added 28.6.2017
+			'language'        : 'Language setting', // from v2.1.26 added 28.6.2017
+			'clearBrowserData': 'Initialize the settings saved in this browser', // from v2.1.26 added 28.6.2017
+			'toolbarPref'     : 'Toolbar setting', // from v2.1.27 added 2.8.2017
+			'charsLeft'       : '... $1 chars left.',  // from v2.1.29 added 30.8.2017
+			'sum'             : 'Sum', // from v2.1.29 added 28.9.2017
+
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : 'Unknown',
+			'kindRoot'        : 'Volume Root', // from v2.1.16 added 16.10.2016
+			'kindFolder'      : 'Folder',
+			'kindSelects'     : 'Selections', // from v2.1.29 added 29.8.2017
+			'kindAlias'       : 'Alias',
+			'kindAliasBroken' : 'Broken alias',
+			// applications
+			'kindApp'         : 'Application',
+			'kindPostscript'  : 'Postscript document',
+			'kindMsOffice'    : 'Microsoft Office document',
+			'kindMsWord'      : 'Microsoft Word document',
+			'kindMsExcel'     : 'Microsoft Excel document',
+			'kindMsPP'        : 'Microsoft Powerpoint presentation',
+			'kindOO'          : 'Open Office document',
+			'kindAppFlash'    : 'Flash application',
+			'kindPDF'         : 'Portable Document Format (PDF)',
+			'kindTorrent'     : 'Bittorrent file',
+			'kind7z'          : '7z archive',
+			'kindTAR'         : 'TAR archive',
+			'kindGZIP'        : 'GZIP archive',
+			'kindBZIP'        : 'BZIP archive',
+			'kindXZ'          : 'XZ archive',
+			'kindZIP'         : 'ZIP archive',
+			'kindRAR'         : 'RAR archive',
+			'kindJAR'         : 'Java JAR file',
+			'kindTTF'         : 'True Type font',
+			'kindOTF'         : 'Open Type font',
+			'kindRPM'         : 'RPM package',
+			// texts
+			'kindText'        : 'Text document',
+			'kindTextPlain'   : 'Plain text',
+			'kindPHP'         : 'PHP source',
+			'kindCSS'         : 'Cascading style sheet',
+			'kindHTML'        : 'HTML document',
+			'kindJS'          : 'Javascript source',
+			'kindRTF'         : 'Rich Text Format',
+			'kindC'           : 'C source',
+			'kindCHeader'     : 'C header source',
+			'kindCPP'         : 'C++ source',
+			'kindCPPHeader'   : 'C++ header source',
+			'kindShell'       : 'Unix shell script',
+			'kindPython'      : 'Python source',
+			'kindJava'        : 'Java source',
+			'kindRuby'        : 'Ruby source',
+			'kindPerl'        : 'Perl script',
+			'kindSQL'         : 'SQL source',
+			'kindXML'         : 'XML document',
+			'kindAWK'         : 'AWK source',
+			'kindCSV'         : 'Comma separated values',
+			'kindDOCBOOK'     : 'Docbook XML document',
+			'kindMarkdown'    : 'Markdown text', // added 20.7.2015
+			// images
+			'kindImage'       : 'Image',
+			'kindBMP'         : 'BMP image',
+			'kindJPEG'        : 'JPEG image',
+			'kindGIF'         : 'GIF Image',
+			'kindPNG'         : 'PNG Image',
+			'kindTIFF'        : 'TIFF image',
+			'kindTGA'         : 'TGA image',
+			'kindPSD'         : 'Adobe Photoshop image',
+			'kindXBITMAP'     : 'X bitmap image',
+			'kindPXM'         : 'Pixelmator image',
+			// media
+			'kindAudio'       : 'Audio media',
+			'kindAudioMPEG'   : 'MPEG audio',
+			'kindAudioMPEG4'  : 'MPEG-4 audio',
+			'kindAudioMIDI'   : 'MIDI audio',
+			'kindAudioOGG'    : 'Ogg Vorbis audio',
+			'kindAudioWAV'    : 'WAV audio',
+			'AudioPlaylist'   : 'MP3 playlist',
+			'kindVideo'       : 'Video media',
+			'kindVideoDV'     : 'DV movie',
+			'kindVideoMPEG'   : 'MPEG movie',
+			'kindVideoMPEG4'  : 'MPEG-4 movie',
+			'kindVideoAVI'    : 'AVI movie',
+			'kindVideoMOV'    : 'Quick Time movie',
+			'kindVideoWM'     : 'Windows Media movie',
+			'kindVideoFlash'  : 'Flash movie',
+			'kindVideoMKV'    : 'Matroska movie',
+			'kindVideoOGG'    : 'Ogg movie'
+		}
+	};
+}));
+

+ 516 - 0
src/assets/js/i18n/elfinder.ar.js

@@ -0,0 +1,516 @@
+/**
+ * العربية translation
+ * @author Tawfek Daghistani <tawfekov@gmail.com>
+ * @author Atef Ben Ali <atef.bettaib@gmail.com>
+ * @version 2017-08-28
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.ar = {
+		translator : 'Tawfek Daghistani &lt;tawfekov@gmail.com&gt;, Atef Ben Ali &lt;atef.bettaib@gmail.com&gt;',
+		language   : 'العربية',
+		direction  : 'rtl',
+		dateFormat : 'M d, Y h:i A', // Mar 13, 2012 05:27 PM
+		fancyDateFormat : '$1 h:i A', // will produce smth like: Today 12:25 PM
+		nonameDateFormat : 'ymd-His', // to apply if upload file is noname: 120513172700
+		messages   : {
+
+			/********************************** errors **********************************/
+			'error'                : 'خطأ',
+			'errUnknown'           : 'خطأ غير معروف .',
+			'errUnknownCmd'        : 'أمر غير معروف .',
+			'errJqui'              : 'إعدادات jQuery UI غير كاملة الرجاء التأكد من وجود كل من selectable, draggable and droppable',
+			'errNode'              : '. موجود DOM إلى عنصر  elFinder تحتاج  ',
+			'errURL'               : 'إعدادات خاطئة , عليك وضع الرابط ضمن الإعدادات',
+			'errAccess'            : 'وصول مرفوض .',
+			'errConnect'           : 'غير قادر على الاتصال بالخادم الخلفي  (backend)',
+			'errAbort'             : 'تم فصل الإتصال',
+			'errTimeout'           : 'مهلة الإتصال قد انتهت.',
+			'errNotFound'          : 'الخادوم الخلفي غير موجود .',
+			'errResponse'          : 'رد غير مقبول من الخادوم الخلفي',
+			'errConf'              : 'خطأ في الإعدادات الخاصة بالخادوم الخلفي ',
+			'errJSON'              : 'الميزة PHP JSON module غير موجودة ',
+			'errNoVolumes'         : 'لا يمكن القراءة من الوسائط الموجودة ',
+			'errCmdParams'         : 'البيانات المرسلة للأمر غير مقبولة "$1".',
+			'errDataNotJSON'       : 'المعلومات المرسلة ليست من نوع JSON ',
+			'errDataEmpty'         : 'لا يوجد معلومات مرسلة',
+			'errCmdReq'            : 'الخادوم الخلفي يطلب وجود اسم الأمر ',
+			'errOpen'              : 'غير قادر على فتح  "$1".',
+			'errNotFolder'         : 'العنصر المختار ليس مجلد',
+			'errNotFile'           : 'العنصر المختار ليس ملف',
+			'errRead'              : 'غير قادر على القراءة "$1".',
+			'errWrite'             : 'غير قادر على الكتابة "$1".',
+			'errPerm'              : 'وصول مرفوض ',
+			'errLocked'            : ' محمي ولا يمكن التعديل أو النقل أو إعادة التسمية"$1"',
+			'errExists'            : ' موجود مسبقاً "$1"',
+			'errInvName'           : 'الاسم مرفوض',
+			'errInvDirname'        : 'اسم مجلد غير صالح',  // from v2.1.24 added 12.4.2017
+			'errFolderNotFound'    : 'المجلد غير موجود',
+			'errFileNotFound'      : 'الملف غير موجود',
+			'errTrgFolderNotFound' : 'الملف الهدف  "$1" غير موجود ',
+			'errPopup'             : 'يمنع المتصفح من إنشاء نافذة منبثقة، الرجاء تعديل الخيارات الخاصة من إعدادات المتصفح',
+			'errMkdir'             : ' غير قادر على إنشاء مجلد جديد "$1".',
+			'errMkfile'            : ' غير قادر على إنشاء ملف جديد"$1".',
+			'errRename'            : 'غير قادر على إعادة تسمية الـ  "$1".',
+			'errCopyFrom'          : 'نسخ الملفات من الوسط المحدد "$1" غير مسموح.',
+			'errCopyTo'            : 'نسخ الملفات إلى الوسط المحدد "$1" غير مسموح .',
+			'errMkOutLink'         : 'لا يمكن إنشاء رابط خارج مساحة الملف الجذر.', // from v2.1 added 03.10.2015
+			'errUpload'            : 'خطأ أثناء عملية الرفع.',  // old name - errUploadCommon
+			'errUploadFile'        : 'غير قادر على رفع "$1".', // old name - errUpload
+			'errUploadNoFiles'     : 'لم يتم رفع أي ملف .',
+			'errUploadTotalSize'   : 'حجم البيانات أكبر من الحجم المسموح به.', // old name - errMaxSize
+			'errUploadFileSize'    : 'حجم الملف أكبر من الحجم المسموح به.', //  old name - errFileMaxSize
+			'errUploadMime'        : ' نوع ملف غير مسموح به.',
+			'errUploadTransfer'    : '"$1" خطأ أثناء عملية النقل.',
+			'errUploadTemp'        : 'لا يمكن إنشاء ملف وقتي للرفع.', // from v2.1 added 26.09.2015
+			'errNotReplace'        : 'الكائن "$1" موجود في هذا المكان ولا يمكن استبداله بكائن من نوع آخر.', // new
+			'errReplace'           : 'لا يمكن استبدال "$1".',
+			'errSave'              : 'غير قادر على الحفظ في "$1".',
+			'errCopy'              : 'غير قادر على النسخ إلى "$1".',
+			'errMove'              : 'غير قادر على النقل إلى "$1".',
+			'errCopyInItself'      : 'غير قادر على نسخ الملف "$1" ضمن الملف نفسه.',
+			'errRm'                : 'غير قادر على الحذف "$1".',
+			'errTrash'             : 'لا يمكن النقل إلى سلة المهملات', // from v2.1.24 added 30.4.2017
+			'errRmSrc'             : 'لا يمكن فسخ الملف(ـات) المصدري(ـة).',
+			'errExtract'           : 'غير قادر على استخراج الملفات من "$1".',
+			'errArchive'           : 'غير قادر على إنشاء ملف مضغوط.',
+			'errArcType'           : 'نوع الملف المضغوط غير مدعومة.',
+			'errNoArchive'         : 'هذا الملف ليس ملف مضغوط أو ذو صيغة غير مدعومة.',
+			'errCmdNoSupport'      : 'الخادوم الخلفي لا يدعم هذا الأمر ',
+			'errReplByChild'       : 'لا يمكن استبدال الملف "$1" بعنصر محتوِ فيه.',
+			'errArcSymlinks'       : 'For security reason denied to unpack archives contains symlinks.', // edited 24.06.2012
+			'errArcMaxSize'        : 'الملفات المضغوطة تجاوزت السعة المسموح بها.',
+			'errResize'            : 'Unable to resize "$1".',
+			'errResizeDegree'      : 'Invalid rotate degree.',  // added 7.3.2013
+			'errResizeRotate'      : 'Unable to rotate image.',  // added 7.3.2013
+			'errResizeSize'        : 'Invalid image size.',  // added 7.3.2013
+			'errResizeNoChange'    : 'Image size not changed.',  // added 7.3.2013
+			'errUsupportType'      : 'نوع ملف غير مدعوم.',
+			'errNotUTF8Content'    : 'File "$1" is not in UTF-8 and cannot be edited.',  // added 9.11.2011
+			'errNetMount'          : 'Unable to mount "$1".', // added 17.04.2012
+			'errNetMountNoDriver'  : 'Unsupported protocol.',     // added 17.04.2012
+			'errNetMountFailed'    : 'Mount failed.',         // added 17.04.2012
+			'errNetMountHostReq'   : 'Host required.', // added 18.04.2012
+			'errSessionExpires'    : 'Your session has expired due to inactivity.',
+			'errCreatingTempDir'   : 'Unable to create temporary directory: "$1"',
+			'errFtpDownloadFile'   : 'Unable to download file from FTP: "$1"',
+			'errFtpUploadFile'     : 'Unable to upload file to FTP: "$1"',
+			'errFtpMkdir'          : 'Unable to create remote directory on FTP: "$1"',
+			'errArchiveExec'       : 'Error while archiving files: "$1"',
+			'errExtractExec'       : 'Error while extracting files: "$1"',
+			'errNetUnMount'        : 'Unable to unmount.', // from v2.1 added 30.04.2012
+			'errConvUTF8'          : 'Not convertible to UTF-8', // from v2.1 added 08.04.2014
+			'errFolderUpload'      : 'Try the modern browser, If you\'d like to upload the folder.', // from v2.1 added 26.6.2015
+			'errSearchTimeout'     : 'Timed out while searching "$1". Search result is partial.', // from v2.1 added 12.1.2016
+			'errReauthRequire'     : 'Re-authorization is required.', // from v2.1.10 added 24.3.2016
+			'errMaxTargets'        : 'Max number of selectable items is $1.', // from v2.1.17 added 17.10.2016
+			'errRestore'           : 'Unable to restore from the trash. Can\'t identify the restore destination.', // from v2.1.24 added 3.5.2017
+			'errEditorNotFound'    : 'Editor not found to this file type.', // from v2.1.25 added 23.5.2017
+			'errServerError'       : 'Error occurred on the server side.', // from v2.1.25 added 16.6.2017
+			'errEmpty'             : 'Unable to empty folder "$1".', // from v2.1.25 added 22.6.2017
+
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'أنشئ مجلد مضغوط',
+			'cmdback'      : 'الخلف',
+			'cmdcopy'      : 'نسخ',
+			'cmdcut'       : 'قص',
+			'cmddownload'  : 'تحميل',
+			'cmdduplicate' : 'تكرار',
+			'cmdedit'      : 'تعديل الملف',
+			'cmdextract'   : 'استخراج الملفات',
+			'cmdforward'   : 'الأمام',
+			'cmdgetfile'   : 'اختيار الملفات',
+			'cmdhelp'      : 'عن هذا المشروع',
+			'cmdhome'      : 'المجلد الرئيس',
+			'cmdinfo'      : 'معلومات ',
+			'cmdmkdir'     : 'مجلد جديد',
+			'cmdmkdirin'   : 'داخل ملف جديد', // from v2.1.7 added 19.2.2016
+			'cmdmkfile'    : 'ملف نصي جديد',
+			'cmdopen'      : 'فتح',
+			'cmdpaste'     : 'لصق',
+			'cmdquicklook' : 'معاينة',
+			'cmdreload'    : 'إعادة تحميل',
+			'cmdrename'    : 'إعادة تسمية',
+			'cmdrm'        : 'حذف',
+			'cmdtrash'     : 'داخل سلة المهملات', //from v2.1.24 added 29.4.2017
+			'cmdrestore'   : 'Restore', //from v2.1.24 added 3.5.2017
+			'cmdsearch'    : 'بحث عن ملفات',
+			'cmdup'        : 'تغيير المسار إلى مستوى أعلى',
+			'cmdupload'    : 'رفع ملفات',
+			'cmdview'      : 'عرض',
+			'cmdresize'    : 'Resize & Rotate',
+			'cmdsort'      : 'فرز',
+			'cmdnetmount'  : 'Mount network volume', // added 18.04.2012
+			'cmdnetunmount': 'Unmount', // from v2.1 added 30.04.2012
+			'cmdplaces'    : 'To Places', // added 28.12.2014
+			'cmdchmod'     : 'Change mode', // from v2.1 added 20.6.2015
+			'cmdopendir'   : 'فتح ملف', // from v2.1 added 13.1.2016
+			'cmdcolwidth'  : 'Reset column width', // from v2.1.13 added 12.06.2016
+			'cmdfullscreen': 'ملء الشاشة', // from v2.1.15 added 03.08.2016
+			'cmdmove'      : 'Move', // from v2.1.15 added 21.08.2016
+			'cmdempty'     : 'تفريغ الملف', // from v2.1.25 added 22.06.2017
+			'cmdundo'      : 'تراجع', // from v2.1.27 added 31.07.2017
+			'cmdredo'      : 'إعاجة', // from v2.1.27 added 31.07.2017
+			'cmdpreference': 'Preferences', // from v2.1.27 added 03.08.2017
+			'cmdselectall' : 'Select all', // from v2.1.28 added 15.08.2017
+			'cmdselectnone': 'Select none', // from v2.1.28 added 15.08.2017
+			'cmdselectinvert': 'Invert selection', // from v2.1.28 added 15.08.2017
+
+			/*********************************** buttons ***********************************/
+			'btnClose'  : 'إغلاق',
+			'btnSave'   : 'حفظ',
+			'btnRm'     : 'إزالة',
+			'btnApply'  : 'تطبيق',
+			'btnCancel' : 'إلغاء',
+			'btnNo'     : 'لا',
+			'btnYes'    : 'نعم',
+			'btnMount'  : 'Mount',  // added 18.04.2012
+			'btnApprove': 'Goto $1 & approve', // from v2.1 added 26.04.2012
+			'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012
+			'btnConv'   : 'Convert', // from v2.1 added 08.04.2014
+			'btnCwd'    : 'Here',      // from v2.1 added 22.5.2015
+			'btnVolume' : 'Volume',    // from v2.1 added 22.5.2015
+			'btnAll'    : 'All',       // from v2.1 added 22.5.2015
+			'btnMime'   : 'MIME Type', // from v2.1 added 22.5.2015
+			'btnFileName':'Filename',  // from v2.1 added 22.5.2015
+			'btnSaveClose': 'Save & Close', // from v2.1 added 12.6.2015
+			'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015
+			'btnRename'    : 'إعادة تسمية',      // from v2.1.24 added 6.4.2017
+			'btnRenameAll' : 'إعادة تسمية (الجميع)', // from v2.1.24 added 6.4.2017
+			'btnPrevious' : 'Prev ($1/$2)', // from v2.1.24 added 11.5.2017
+			'btnNext'     : 'Next ($1/$2)', // from v2.1.24 added 11.5.2017
+			'btnSaveAs'   : 'حفظ إلى', // from v2.1.25 added 24.5.2017
+
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'فتح مجلد',
+			'ntffile'     : 'فتح ملف',
+			'ntfreload'   : 'إعادة عرض محتويات المجلد ',
+			'ntfmkdir'    : 'ينشئ المجلدات',
+			'ntfmkfile'   : 'ينشئ الملفات',
+			'ntfrm'       : 'حذف الملفات',
+			'ntfcopy'     : 'نسخ الملفات',
+			'ntfmove'     : 'نقل الملفات',
+			'ntfprepare'  : 'تحضير لنسخ الملفات',
+			'ntfrename'   : 'إعادة تسمية الملفات',
+			'ntfupload'   : 'رفع الملفات',
+			'ntfdownload' : 'تحميل الملفات',
+			'ntfsave'     : 'حفظ الملفات',
+			'ntfarchive'  : 'ينشئ ملف مضغوط',
+			'ntfextract'  : 'استخراج ملفات من الملف المضغوط ',
+			'ntfsearch'   : 'يبحث عن ملفات',
+			'ntfresize'   : 'Resizing images',
+			'ntfsmth'     : 'يفعل شيئا',
+			'ntfloadimg'  : 'تحميل الصورة',
+			'ntfnetmount' : 'Mounting network volume', // added 18.04.2012
+			'ntfnetunmount': 'Unmounting network volume', // from v2.1 added 30.04.2012
+			'ntfdim'      : 'Acquiring image dimension', // added 20.05.2013
+			'ntfreaddir'  : 'قراءة معلومات الملف', // from v2.1 added 01.07.2013
+			'ntfurl'      : 'Getting URL of link', // from v2.1 added 11.03.2014
+			'ntfchmod'    : 'Changing file mode', // from v2.1 added 20.6.2015
+			'ntfpreupload': 'Verifying upload file name', // from v2.1 added 31.11.2015
+			'ntfzipdl'    : 'Creating a file for download', // from v2.1.7 added 23.1.2016
+			'ntfparents'  : 'Getting path infomation', // from v2.1.17 added 2.11.2016
+			'ntfchunkmerge': 'Processing the uploaded file', // from v2.1.17 added 2.11.2016
+			'ntftrash'    : 'Doing throw in the trash', // from v2.1.24 added 2.5.2017
+			'ntfrestore'  : 'Doing restore from tha trash', // from v2.1.24 added 3.5.2017
+			'ntfchkdir'   : 'Checking destination folder', // from v2.1.24 added 3.5.2017
+			'ntfundo'     : 'Undoing previous operation', // from v2.1.27 added 31.07.2017
+			'ntfredo'     : 'Redoing previous undone', // from v2.1.27 added 31.07.2017
+
+			/*********************************** volumes *********************************/
+			'volume_Trash' : 'Trash', //from v2.1.24 added 29.4.2017
+
+			/************************************ dates **********************************/
+			'dateUnknown' : 'غير معلوم',
+			'Today'       : 'اليوم',
+			'Yesterday'   : 'البارحة',
+			'msJan'       : 'كانون الثاني',
+			'msFeb'       : 'شباط',
+			'msMar'       : 'آذار',
+			'msApr'       : 'نيسان',
+			'msMay'       : 'أيار',
+			'msJun'       : 'حزيران',
+			'msJul'       : 'تموز',
+			'msAug'       : 'آب',
+			'msSep'       : 'أيلول',
+			'msOct'       : 'تشرين الأول',
+			'msNov'       : 'تشرين الثاني',
+			'msDec'       : 'كانون الأول ',
+			'January'     : 'January',
+			'February'    : 'February',
+			'March'       : 'March',
+			'April'       : 'April',
+			'May'         : 'May',
+			'June'        : 'June',
+			'July'        : 'July',
+			'August'      : 'August',
+			'September'   : 'September',
+			'October'     : 'October',
+			'November'    : 'November',
+			'December'    : 'December',
+			'Sunday'      : 'الأحد',
+			'Monday'      : 'الاثنين',
+			'Tuesday'     : 'الثلاثاء',
+			'Wednesday'   : 'الإربعاء',
+			'Thursday'    : 'الخميس',
+			'Friday'      : 'الجمعة',
+			'Saturday'    : 'السبت',
+			'Sun'         : 'الأحد',
+			'Mon'         : 'الاثنين',
+			'Tue'         : 'الثلاثاء',
+			'Wed'         : 'الإربعاء',
+			'Thu'         : 'الخميس',
+			'Fri'         : 'الجمعة',
+			'Sat'         : 'السبت',
+
+			/******************************** sort variants ********************************/
+			'sortname'          : 'بالاسم',
+			'sortkind'          : 'بالنوع',
+			'sortsize'          : 'بالحجم',
+			'sortdate'          : 'بالتاريخ',
+			'sortFoldersFirst'  : 'الملفات أولا',
+			'sortperm'          : 'بالصلاحيات', // from v2.1.13 added 13.06.2016
+			'sortmode'          : 'by mode',       // from v2.1.13 added 13.06.2016
+			'sortowner'         : 'by owner',      // from v2.1.13 added 13.06.2016
+			'sortgroup'         : 'بالمجموعة',      // from v2.1.13 added 13.06.2016
+			'sortAlsoTreeview'  : 'Also Treeview',  // from v2.1.15 added 01.08.2016
+
+			/********************************** new items **********************************/
+			'untitled file.txt' : 'ملف_جديد.txt', // added 10.11.2015
+			'untitled folder'   : 'مجلد_جديد',   // added 10.11.2015
+			'Archive'           : 'ملف_مضغوط',  // from v2.1 added 10.11.2015
+
+			/********************************** messages **********************************/
+			'confirmReq'      : 'يرجى التأكيد',
+			'confirmRm'       : 'هل أنت متأكد من أنك تريد الحذف؟ لا يمكن التراجع عن هذه العملية ',
+			'confirmRepl'     : 'استبدال الملف القديم بملف جديد؟',
+			'confirmRest'     : 'استبدال العنصر بالعنصر من سلة المهملات؟', // fromv2.1.24 added 5.5.2017
+			'confirmConvUTF8' : 'Not in UTF-8<br/>Convert to UTF-8?<br/>Contents become UTF-8 by saving after conversion.', // from v2.1 added 08.04.2014
+			'confirmNonUTF8'  : 'Character encoding of this file couldn\'t be detected. It need to temporarily convert to UTF-8 for editting.<br/>Please select character encoding of this file.', // from v2.1.19 added 28.11.2016
+			'confirmNotSave'  : 'It has been modified.<br/>Losing work if you do not save changes.', // from v2.1 added 15.7.2015
+			'confirmTrash'    : 'Are you sure you want to move items to trash bin?', //from v2.1.24 added 29.4.2017
+			'apllyAll'        : 'تطبيق على الكل',
+			'name'            : 'الاسم',
+			'size'            : 'الحجم',
+			'perms'           : 'الصلاحيات',
+			'modify'          : 'آخر تعديل',
+			'kind'            : 'نوع الملف',
+			'read'            : 'قراءة',
+			'write'           : 'كتابة',
+			'noaccess'        : 'وصول ممنوع',
+			'and'             : 'و',
+			'unknown'         : 'غير معروف',
+			'selectall'       : 'تحديد كل الملفات',
+			'selectfiles'     : 'تحديد ملفات',
+			'selectffile'     : 'تحديد الملف الأول',
+			'selectlfile'     : 'تحديد الملف الأخير',
+			'viewlist'        : 'عرض قائمة',
+			'viewicons'       : 'عرض أيْقونات',
+			'places'          : 'المواقع',
+			'calc'            : 'حساب',
+			'path'            : 'مسار',
+			'aliasfor'        : 'Alias for',
+			'locked'          : 'مقفول',
+			'dim'             : 'الأبعاد',
+			'files'           : 'ملفات',
+			'folders'         : 'مجلدات',
+			'items'           : 'عناصر',
+			'yes'             : 'نعم',
+			'no'              : 'لا',
+			'link'            : 'رابط',
+			'searcresult'     : 'نتائج البحث',
+			'selected'        : 'العناصر المحددة',
+			'about'           : 'عن البرنامج',
+			'shortcuts'       : 'الاختصارات',
+			'help'            : 'مساعدة',
+			'webfm'           : 'مدير ملفات الويب',
+			'ver'             : 'رقم الإصدار',
+			'protocolver'     : 'إصدار البرتوكول',
+			'homepage'        : 'الصفحة الرئيسة',
+			'docs'            : 'التوثيق',
+			'github'          : 'شاركنا بتطوير المشروع على Github',
+			'twitter'         : 'تابعنا على تويتر',
+			'facebook'        : 'انضم إلينا على الفيس بوك',
+			'team'            : 'الفريق',
+			'chiefdev'        : 'رئيس المبرمجين',
+			'developer'       : 'مبرمج',
+			'contributor'     : 'مساعم',
+			'maintainer'      : 'مشارك',
+			'translator'      : 'مترجم',
+			'icons'           : 'أيقونات',
+			'dontforget'      : 'and don\'t forget to take your towel',
+			'shortcutsof'     : 'الاختصارات غير مفعلة',
+			'dropFiles'       : 'لصق الملفات هنا',
+			'or'              : 'أو',
+			'selectForUpload' : 'اختر الملفات التي تريد رفعها',
+			'moveFiles'       : 'قص الملفات',
+			'copyFiles'       : 'نسخ الملفات',
+			'restoreFiles'    : 'Restore items', // from v2.1.24 added 5.5.2017
+			'rmFromPlaces'    : 'Remove from places',
+			'aspectRatio'     : 'Aspect ratio',
+			'scale'           : 'Scale',
+			'width'           : 'عرض',
+			'height'          : 'طول',
+			'resize'          : 'Resize',
+			'crop'            : 'Crop',
+			'rotate'          : 'Rotate',
+			'rotate-cw'       : 'Rotate 90 degrees CW',
+			'rotate-ccw'      : 'Rotate 90 degrees CCW',
+			'degree'          : '°',
+			'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012
+			'protocol'            : 'Protocol', // added 18.04.2012
+			'host'                : 'Host', // added 18.04.2012
+			'port'                : 'Port', // added 18.04.2012
+			'user'                : 'مستخدم', // added 18.04.2012
+			'pass'                : 'كلمة العبور', // added 18.04.2012
+			'confirmUnmount'      : 'Are you unmount $1?',  // from v2.1 added 30.04.2012
+			'dropFilesBrowser': 'Drop or Paste files from browser', // from v2.1 added 30.05.2012
+			'dropPasteFiles'  : 'Drop files, Paste URLs or images(clipboard) here', // from v2.1 added 07.04.2014
+			'encoding'        : 'Encoding', // from v2.1 added 19.12.2014
+			'locale'          : 'Locale',   // from v2.1 added 19.12.2014
+			'searchTarget'    : 'Target: $1',                // from v2.1 added 22.5.2015
+			'searchMime'      : 'Search by input MIME Type', // from v2.1 added 22.5.2015
+			'owner'           : 'Owner', // from v2.1 added 20.6.2015
+			'group'           : 'Group', // from v2.1 added 20.6.2015
+			'other'           : 'Other', // from v2.1 added 20.6.2015
+			'execute'         : 'Execute', // from v2.1 added 20.6.2015
+			'perm'            : 'Permission', // from v2.1 added 20.6.2015
+			'mode'            : 'Mode', // from v2.1 added 20.6.2015
+			'emptyFolder'     : 'Folder is empty', // from v2.1.6 added 30.12.2015
+			'emptyFolderDrop' : 'Folder is empty\\A Drop to add items', // from v2.1.6 added 30.12.2015
+			'emptyFolderLTap' : 'Folder is empty\\A Long tap to add items', // from v2.1.6 added 30.12.2015
+			'quality'         : 'Quality', // from v2.1.6 added 5.1.2016
+			'autoSync'        : 'Auto sync',  // from v2.1.6 added 10.1.2016
+			'moveUp'          : 'Move up',  // from v2.1.6 added 18.1.2016
+			'getLink'         : 'Get URL link', // from v2.1.7 added 9.2.2016
+			'selectedItems'   : 'Selected items ($1)', // from v2.1.7 added 2.19.2016
+			'folderId'        : 'Folder ID', // from v2.1.10 added 3.25.2016
+			'offlineAccess'   : 'Allow offline access', // from v2.1.10 added 3.25.2016
+			'reAuth'          : 'To re-authenticate', // from v2.1.10 added 3.25.2016
+			'nowLoading'      : 'Now loading...', // from v2.1.12 added 4.26.2016
+			'openMulti'       : 'Open multiple files', // from v2.1.12 added 5.14.2016
+			'openMultiConfirm': 'You are trying to open the $1 files. Are you sure you want to open in browser?', // from v2.1.12 added 5.14.2016
+			'emptySearch'     : 'Search results is empty in search target.', // from v2.1.12 added 5.16.2016
+			'editingFile'     : 'It is editing a file.', // from v2.1.13 added 6.3.2016
+			'hasSelected'     : 'You have selected $1 items.', // from v2.1.13 added 6.3.2016
+			'hasClipboard'    : 'You have $1 items in the clipboard.', // from v2.1.13 added 6.3.2016
+			'incSearchOnly'   : 'Incremental search is only from the current view.', // from v2.1.13 added 6.30.2016
+			'reinstate'       : 'Reinstate', // from v2.1.15 added 3.8.2016
+			'complete'        : '$1 complete', // from v2.1.15 added 21.8.2016
+			'contextmenu'     : 'Context menu', // from v2.1.15 added 9.9.2016
+			'pageTurning'     : 'Page turning', // from v2.1.15 added 10.9.2016
+			'volumeRoots'     : 'Volume roots', // from v2.1.16 added 16.9.2016
+			'reset'           : 'Reset', // from v2.1.16 added 1.10.2016
+			'bgcolor'         : 'Background color', // from v2.1.16 added 1.10.2016
+			'colorPicker'     : 'Color picker', // from v2.1.16 added 1.10.2016
+			'8pxgrid'         : '8px Grid', // from v2.1.16 added 4.10.2016
+			'enabled'         : 'Enabled', // from v2.1.16 added 4.10.2016
+			'disabled'        : 'Disabled', // from v2.1.16 added 4.10.2016
+			'emptyIncSearch'  : 'Search results is empty in current view.\\APress [Enter] to expand search target.', // from v2.1.16 added 5.10.2016
+			'emptyLetSearch'  : 'First letter search results is empty in current view.', // from v2.1.23 added 24.3.2017
+			'textLabel'       : 'Text label', // from v2.1.17 added 13.10.2016
+			'minsLeft'        : '$1 mins left', // from v2.1.17 added 13.11.2016
+			'openAsEncoding'  : 'Reopen with selected encoding', // from v2.1.19 added 2.12.2016
+			'saveAsEncoding'  : 'Save with the selected encoding', // from v2.1.19 added 2.12.2016
+			'selectFolder'    : 'Select folder', // from v2.1.20 added 13.12.2016
+			'firstLetterSearch': 'First letter search', // from v2.1.23 added 24.3.2017
+			'presets'         : 'Presets', // from v2.1.25 added 26.5.2017
+			'tooManyToTrash'  : 'It\'s too many items so it can\'t into trash.', // from v2.1.25 added 9.6.2017
+			'TextArea'        : 'TextArea', // from v2.1.25 added 14.6.2017
+			'folderToEmpty'   : 'Empty the folder "$1".', // from v2.1.25 added 22.6.2017
+			'filderIsEmpty'   : 'There are no items in a folder "$1".', // from v2.1.25 added 22.6.2017
+			'preference'      : 'Preference', // from v2.1.26 added 28.6.2017
+			'language'        : 'Language setting', // from v2.1.26 added 28.6.2017
+			'clearBrowserData': 'Initialize the settings saved in this browser', // from v2.1.26 added 28.6.2017
+			'toolbarPref'     : 'Toolbar setting', // from v2.1.27 added 2.8.2017
+
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : 'غير معروف',
+			'kindRoot'        : 'Volume Root', // from v2.1.16 added 16.10.2016
+			'kindFolder'      : 'مجلد',
+			'kindAlias'       : 'اختصار',
+			'kindAliasBroken' : 'اختصار غير صالح',
+			// applications
+			'kindApp'         : 'برنامج',
+			'kindPostscript'  : 'Postscript ملف',
+			'kindMsOffice'    : 'Microsoft Office ملف',
+			'kindMsWord'      : 'Microsoft Word ملف',
+			'kindMsExcel'     : 'Microsoft Excel ملف',
+			'kindMsPP'        : 'Microsoft Powerpoint عرض تقديمي ',
+			'kindOO'          : 'Open Office ملف',
+			'kindAppFlash'    : 'تطبيق فلاش',
+			'kindPDF'         : 'ملف (PDF)',
+			'kindTorrent'     : 'Bittorrent ملف',
+			'kind7z'          : '7z ملف',
+			'kindTAR'         : 'TAR ملف',
+			'kindGZIP'        : 'GZIP ملف',
+			'kindBZIP'        : 'BZIP ملف',
+			'kindXZ'          : 'XZ ملف',
+			'kindZIP'         : 'ZIP ملف',
+			'kindRAR'         : 'RAR ملف',
+			'kindJAR'         : 'Java JAR ملف',
+			'kindTTF'         : 'True Type خط ',
+			'kindOTF'         : 'Open Type خط ',
+			'kindRPM'         : 'RPM ملف تنصيب',
+			// texts
+			'kindText'        : 'Text ملف',
+			'kindTextPlain'   : 'مستند نصي',
+			'kindPHP'         : 'PHP ملف نصي برمجي لـ',
+			'kindCSS'         : 'Cascading style sheet',
+			'kindHTML'        : 'HTML ملف',
+			'kindJS'          : 'Javascript ملف نصي برمجي لـ',
+			'kindRTF'         : 'Rich Text Format',
+			'kindC'           : 'C ملف نصي برمجي لـ',
+			'kindCHeader'     : 'C header ملف نصي برمجي لـ',
+			'kindCPP'         : 'C++ ملف نصي برمجي لـ',
+			'kindCPPHeader'   : 'C++ header ملف نصي برمجي لـ',
+			'kindShell'       : 'Unix shell script',
+			'kindPython'      : 'Python ملف نصي برمجي لـ',
+			'kindJava'        : 'Java ملف نصي برمجي لـ',
+			'kindRuby'        : 'Ruby ملف نصي برمجي لـ',
+			'kindPerl'        : 'Perl script',
+			'kindSQL'         : 'SQL ملف نصي برمجي لـ',
+			'kindXML'         : 'XML ملف',
+			'kindAWK'         : 'AWK ملف نصي برمجي لـ',
+			'kindCSV'         : 'ملف CSV',
+			'kindDOCBOOK'     : 'Docbook XML ملف',
+			'kindMarkdown'    : 'Markdown text', // added 20.7.2015
+			// images
+			'kindImage'       : 'صورة',
+			'kindBMP'         : 'BMP صورة',
+			'kindJPEG'        : 'JPEG صورة',
+			'kindGIF'         : 'GIF صورة',
+			'kindPNG'         : 'PNG صورة',
+			'kindTIFF'        : 'TIFF صورة',
+			'kindTGA'         : 'TGA صورة',
+			'kindPSD'         : 'Adobe Photoshop صورة',
+			'kindXBITMAP'     : 'X bitmap صورة',
+			'kindPXM'         : 'Pixelmator صورة',
+			// media
+			'kindAudio'       : 'ملف صوتي',
+			'kindAudioMPEG'   : 'MPEG ملف صوتي',
+			'kindAudioMPEG4'  : 'MPEG-4 ملف صوتي',
+			'kindAudioMIDI'   : 'MIDI ملف صوتي',
+			'kindAudioOGG'    : 'Ogg Vorbis ملف صوتي',
+			'kindAudioWAV'    : 'WAV ملف صوتي',
+			'AudioPlaylist'   : 'MP3 قائمة تشغيل',
+			'kindVideo'       : 'ملف فيديو',
+			'kindVideoDV'     : 'DV ملف فيديو',
+			'kindVideoMPEG'   : 'MPEG ملف فيديو',
+			'kindVideoMPEG4'  : 'MPEG-4 ملف فيديو',
+			'kindVideoAVI'    : 'AVI ملف فيديو',
+			'kindVideoMOV'    : 'Quick Time ملف فيديو',
+			'kindVideoWM'     : 'Windows Media ملف فيديو',
+			'kindVideoFlash'  : 'Flash ملف فيديو',
+			'kindVideoMKV'    : 'Matroska ملف فيديو',
+			'kindVideoOGG'    : 'Ogg ملف فيديو'
+		}
+	};
+}));

+ 412 - 0
src/assets/js/i18n/elfinder.bg.js

@@ -0,0 +1,412 @@
+/**
+ * Bulgarian translation
+ * @author Stamo Petkov <stamo.petkov@gmail.com>
+ * @version 2014-12-19, 2015-10-20
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.bg = {
+		translator : 'Stamo Petkov &lt;stamo.petkov@gmail.com&gt;',
+		language   : 'Български',
+		direction  : 'ltr',
+		dateFormat : 'd M Y h:i A', // 13 Mar 2012 05:27 PM
+		fancyDateFormat : '$1 h:i A', // will produce smth like: Today 12:25 PM
+		messages   : {
+			
+			/********************************** errors **********************************/
+			'error'                : 'Грешка',
+			'errUnknown'           : 'Непозната грешка.',
+			'errUnknownCmd'        : 'Непозната команда.',
+			'errJqui'              : 'Грешна конфигурация на jQuery UI. Компонентите selectable, draggable и droppable трябва да са включени.',
+			'errNode'              : 'elFinder изисква да бъде създаден DOM елемент.',
+			'errURL'               : 'Грешка в настройките на elFinder! не е зададена стойност на URL.',
+			'errAccess'            : 'Достъп отказан.',
+			'errConnect'           : 'Няма връзка със сървъра.',
+			'errAbort'             : 'Връзката е прекъсната.',
+			'errTimeout'           : 'Просрочена връзка.',
+			'errNotFound'          : 'Сървърът не е намерен.', 
+			'errResponse'          : 'Грешен отговор от сървъра.',
+			'errConf'              : 'Грешни настройки на сървъра.', 
+			'errJSON'              : 'Не е инсталиран модул на PHP за JSON.',
+			'errNoVolumes'         : 'Няма дялове достъпни за четене.',
+			'errCmdParams'         : 'Грешни параметри на командата "$1".',
+			'errDataNotJSON'       : 'Данните не са JSON.',
+			'errDataEmpty'         : 'Липсват данни.',
+			'errCmdReq'            : 'Запитването от сървъра изисква име на команда.',
+			'errOpen'              : 'Не мога да отворя "$1".',
+			'errNotFolder'         : 'Обектът не е папка.',
+			'errNotFile'           : 'Обектът не е файл.',
+			'errRead'              : 'Не мога да прочета "$1".',
+			'errWrite'             : 'Не мога да пиша в "$1".',
+			'errPerm'              : 'Разрешение отказано.',
+			'errLocked'            : '"$1" е заключен и не може да бъде преименуван, местен или премахван.',
+			'errExists'            : 'Вече съществува файл с име "$1"',
+			'errInvName'           : 'Грешно име на файл.',
+			'errFolderNotFound'    : 'Папката не е открита.',
+			'errFileNotFound'      : 'Файлът не е открит.',
+			'errTrgFolderNotFound' : 'Целевата папка "$1" не е намерена.',
+			'errPopup'             : 'Браузъра блокира отварянето на прозорец. За да отворите файла, разрешете отварянето в настройките на браузъра.',
+			'errMkdir'             : 'Не мога да създам папка"$1".',
+			'errMkfile'            : 'Не мога да създам файл "$1".',
+			'errRename'            : 'Не мога да преименувам "$1".',
+			'errCopyFrom'          : 'Копирането на файлове от том "$1" не е разрешено.',
+			'errCopyTo'            : 'Копирането на файлове в том "$1" не е разрешено.',
+			'errMkOutLink'         : 'Не мога да създам връзка извън началото на ресурса.',
+			'errUpload'            : 'Грешка при качване.',
+			'errUploadFile'        : 'Не мога да кача "$1".',
+			'errUploadNoFiles'     : 'Не са намерени файлове за качване.',
+			'errUploadTotalSize'   : 'Данните превишават максимално допостумия размер.',
+			'errUploadFileSize'    : 'Файла превишава максимално допустимия размер.',
+			'errUploadMime'        : 'Не е позволен тип на файла.',
+			'errUploadTransfer'    : '"$1" грешка при предаване.', 
+			'errUploadTemp'        : 'Не мога да създам временен файл за качване.',
+			'errNotReplace'        : 'Обект "$1" вече съществува на това място и не може да бъде заменен от обект от друг тип.',
+			'errReplace'           : 'Не мога да заменя "$1".',
+			'errSave'              : 'Не мога да запиша "$1".',
+			'errCopy'              : 'Не мога да копирам "$1".',
+			'errMove'              : 'Не мога да преместя "$1".',
+			'errCopyInItself'      : 'Не мога да копирам "$1" върху самия него.',
+			'errRm'                : 'Не мога да премахна "$1".',
+			'errRmSrc'             : 'Не мога да премахна изходния файл(ове).',
+			'errExtract'           : 'Не мога да извлеча файловете от "$1".',
+			'errArchive'           : 'Не мога да създам архив.',
+			'errArcType'           : 'Неподдържан тип на архива.',
+			'errNoArchive'         : 'Файлът не е архив или е от неподдържан тип.',
+			'errCmdNoSupport'      : 'Сървъра не поддържа тази команда.', 
+			'errReplByChild'       : 'Папката “$1” не може да бъде заменена от съдържащ се в нея елемент.',
+			'errArcSymlinks'       : 'От съображения за сигурност няма да бъдат разопаковани архиви съдържащи symlinks.',
+			'errArcMaxSize'        : 'Архивните файлове превишават максимално допустимия размер.',
+			'errResize'            : 'Не мога да преоразмеря "$1".',
+			'errResizeDegree'      : 'Невалиден градус за ротация.',
+			'errResizeRotate'      : 'Изображението не е ротирано.',
+			'errResizeSize'        : 'Невалиден размер на изображение.',
+			'errResizeNoChange'    : 'Размерът на изображението не е променен.',
+			'errUsupportType'      : 'Неподдържан тип на файл.',
+			'errNotUTF8Content'    : 'Файл "$1" не е в UTF-8 формат и не може да бъде редактиран.',
+			'errNetMount'          : 'Не мога да монтирам "$1".',
+			'errNetMountNoDriver'  : 'Неподдържан протокол.',
+			'errNetMountFailed'    : 'Монтирането не е успешно.',
+			'errNetMountHostReq'   : 'Хост се изисква.',
+			'errSessionExpires'    : 'Сесията ви изтече поради липса на активност.',
+			'errCreatingTempDir'   : 'Не мога да създам временна директория: "$1"',
+			'errFtpDownloadFile'   : 'Не мога да изтегля файл от FTP: "$1"',
+			'errFtpUploadFile'     : 'Не мога да кача файл на FTP: "$1"',
+			'errFtpMkdir'          : 'Не мога да създам директория на FTP: "$1"',
+			'errArchiveExec'       : 'Грешка при архивиране на файлове: "$1"',
+			'errExtractExec'       : 'Грешка при разархивиране на файлове: "$1"',
+			'errNetUnMount'        : 'Не мога да размонтирам',
+			'errConvUTF8'          : 'Не е конвертируем до UTF-8',
+			'errFolderUpload'      : 'Опитайте Google Chrome, ако искате да качите папка.',
+			
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'Създай архив',
+			'cmdback'      : 'Назад',
+			'cmdcopy'      : 'Копирай',
+			'cmdcut'       : 'Изрежи',
+			'cmddownload'  : 'Свали',
+			'cmdduplicate' : 'Дублирай',
+			'cmdedit'      : 'Редактирай файл',
+			'cmdextract'   : 'Извлечи файловете от архива',
+			'cmdforward'   : 'Напред',
+			'cmdgetfile'   : 'Избери файлове',
+			'cmdhelp'      : 'За тази програма',
+			'cmdhome'      : 'Начало',
+			'cmdinfo'      : 'Информация',
+			'cmdmkdir'     : 'Нова папка',
+			'cmdmkfile'    : 'Нов текстови файл',
+			'cmdopen'      : 'Отвори',
+			'cmdpaste'     : 'Вмъкни',
+			'cmdquicklook' : 'Преглед',
+			'cmdreload'    : 'Презареди',
+			'cmdrename'    : 'Преименувай',
+			'cmdrm'        : 'Изтрий',
+			'cmdsearch'    : 'Намери файлове',
+			'cmdup'        : 'Една директория нагоре',
+			'cmdupload'    : 'Качи файлове',
+			'cmdview'      : 'Виж',
+			'cmdresize'    : 'Размер на изображение',
+			'cmdsort'      : 'Подреди',
+			'cmdnetmount'  : 'Монтирай мрежов ресурс',
+			'cmdnetunmount': 'Размонтирай',
+			'cmdplaces'    : 'To Places', // added 28.12.2014
+			'cmdchmod'     : 'Change mode', // from v2.1 added 20.6.2015
+			
+			/*********************************** buttons ***********************************/ 
+			'btnClose'  : 'Затвори',
+			'btnSave'   : 'Запиши',
+			'btnRm'     : 'Премахни',
+			'btnApply'  : 'Приложи',
+			'btnCancel' : 'Отказ',
+			'btnNo'     : 'Не',
+			'btnYes'    : 'Да',
+			'btnMount'  : 'Монтирай',
+			'btnApprove': 'Отиди на $1 и одобри',
+			'btnUnmount': 'Размонтирай',
+			'btnConv'   : 'Конвертирай',
+			'btnCwd'    : 'Тук',
+			'btnVolume' : 'Ресурс',
+			'btnAll'    : 'Всички',
+			'btnMime'   : 'MIME тип',
+			'btnFileName':'Име на файл',
+			'btnSaveClose': 'Запази и затвори',
+			
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'Отваряне на папка',
+			'ntffile'     : 'Отваряне на файл',
+			'ntfreload'   : 'Презареждане съдържанието на папка',
+			'ntfmkdir'    : 'Създавам директория',
+			'ntfmkfile'   : 'Създавам файл',
+			'ntfrm'       : 'Изтриване на файлове',
+			'ntfcopy'     : 'Копиране на файлове',
+			'ntfmove'     : 'Преместване на файлове',
+			'ntfprepare'  : 'Подготовка за копиране на файлове',
+			'ntfrename'   : 'Преименуване на файлове',
+			'ntfupload'   : 'Качвам файлове',
+			'ntfdownload' : 'Свалям файлове',
+			'ntfsave'     : 'Запис на файлове',
+			'ntfarchive'  : 'Създавам архив',
+			'ntfextract'  : 'Извличам файловете от архив',
+			'ntfsearch'   : 'Търся файлове',
+			'ntfresize'   : 'Преоразмерявам изображения',
+			'ntfsmth'     : 'Зает съм >_<',
+			'ntfloadimg'  : 'Зареждам изображения',
+			'ntfnetmount' : 'Монтирам мрежов ресурс',
+			'ntfnetunmount': 'Размонтирам мрежов ресурс',
+			'ntfdim'      : 'Извличам размерите на изображение',
+			'ntfreaddir'  : 'Извличам информация за папка',
+			'ntfurl'      : 'Взимам URL от връзка',
+			'ntfchmod'    : 'Променям характеристики на файл',
+			
+			/************************************ dates **********************************/
+			'dateUnknown' : 'неизвестна',
+			'Today'       : 'Днес',
+			'Yesterday'   : 'Вчера',
+			'msJan'       : 'яну',
+			'msFeb'       : 'фев',
+			'msMar'       : 'мар',
+			'msApr'       : 'апр',
+			'msMay'       : 'май',
+			'msJun'       : 'юни',
+			'msJul'       : 'юли',
+			'msAug'       : 'авг',
+			'msSep'       : 'сеп',
+			'msOct'       : 'окт',
+			'msNov'       : 'ное',
+			'msDec'       : 'дек',
+			'January'     : 'януари',
+			'February'    : 'февруари',
+			'March'       : 'март',
+			'April'       : 'април',
+			'May'         : 'май',
+			'June'        : 'юни',
+			'July'        : 'юли',
+			'August'      : 'август',
+			'September'   : 'септември',
+			'October'     : 'октомври',
+			'November'    : 'ноември',
+			'December'    : 'декември',
+			'Sunday'      : 'неделя',
+			'Monday'      : 'понеделник',
+			'Tuesday'     : 'вторник',
+			'Wednesday'   : 'сряда',
+			'Thursday'    : 'четвъртък',
+			'Friday'      : 'петък',
+			'Saturday'    : 'събота',
+			'Sun'         : 'нед', 
+			'Mon'         : 'пон', 
+			'Tue'         : 'вто', 
+			'Wed'         : 'сря', 
+			'Thu'         : 'чет', 
+			'Fri'         : 'пет', 
+			'Sat'         : 'съб',
+			
+			/******************************** sort variants ********************************/
+			'sortname'          : 'по име', 
+			'sortkind'          : 'по вид', 
+			'sortsize'          : 'по размер',
+			'sortdate'          : 'по дата',
+			'sortFoldersFirst'  : 'Папките първи',
+			
+			/********************************** messages **********************************/
+			'confirmReq'      : 'Изисква се подтвърждение',
+			'confirmRm'       : 'Сигурни ли сте, че желаете да премахнете файловете?<br/>Това действие е необратимо!',
+			'confirmRepl'     : 'Да заменя ли стария файл с новия?',
+			'confirmConvUTF8' : 'Не е в UTF-8 формат<br/>Конвертиране до UTF-8?<br/>Съдържанието става в UTF-8 формат при запазване след конверсията.',
+			'confirmNotSave'  : 'Има направени промени.<br/>Те ще бъдат загубени, ако не запишете промените.',
+			'apllyAll'        : 'Приложи за всички',
+			'name'            : 'Име',
+			'size'            : 'Размер',
+			'perms'           : 'Привилегии',
+			'modify'          : 'Променен',
+			'kind'            : 'Вид',
+			'read'            : 'четене',
+			'write'           : 'запис',
+			'noaccess'        : 'без достъп',
+			'and'             : 'и',
+			'unknown'         : 'непознат',
+			'selectall'       : 'Избери всички файлове',
+			'selectfiles'     : 'Избери файл(ове)',
+			'selectffile'     : 'Избери първият файл',
+			'selectlfile'     : 'Избери последният файл',
+			'viewlist'        : 'Изглед списък',
+			'viewicons'       : 'Изглед икони',
+			'places'          : 'Места',
+			'calc'            : 'Изчисли', 
+			'path'            : 'Път',
+			'aliasfor'        : 'Връзка към',
+			'locked'          : 'Заключен',
+			'dim'             : 'Размери',
+			'files'           : 'Файлове',
+			'folders'         : 'Папки',
+			'items'           : 'Елементи',
+			'yes'             : 'да',
+			'no'              : 'не',
+			'link'            : 'Връзка',
+			'searcresult'     : 'Резултати от търсенето',  
+			'selected'        : 'Избрани елементи',
+			'about'           : 'За',
+			'shortcuts'       : 'Бързи клавиши',
+			'help'            : 'Помощ',
+			'webfm'           : 'Файлов менаджер за Интернет',
+			'ver'             : 'Версия',
+			'protocolver'        : 'версия на протокола',
+			'homepage'        : 'Начало',
+			'docs'            : 'Документация',
+			'github'          : 'Разклонение в Github',
+			'twitter'         : 'Последвайте ни в Twitter',
+			'facebook'        : 'Присъединете се към нас във Facebook',
+			'team'            : 'Екип',
+			'chiefdev'        : 'Главен разработчик',
+			'developer'       : 'разработчик',
+			'contributor'     : 'сътрудник',
+			'maintainer'      : 'поддръжка',
+			'translator'      : 'преводач',
+			'icons'           : 'Икони',
+			'dontforget'      : 'и не забравяйте да си вземете кърпата',
+			'shortcutsof'     : 'Преките пътища са изключени',
+			'dropFiles'       : 'Пуснете файловете тук',
+			'or'              : 'или',
+			'selectForUpload' : 'Избери файлове за качване',
+			'moveFiles'       : 'Премести файлове',
+			'copyFiles'       : 'Копирай файлове',
+			'rmFromPlaces'    : 'Премахни от Места',
+			'aspectRatio'     : 'Отношение',
+			'scale'           : 'Мащаб',
+			'width'           : 'Ширина',
+			'height'          : 'Височина',
+			'resize'          : 'Преоразмери',
+			'crop'            : 'Отрежи',
+			'rotate'          : 'Ротирай',
+			'rotate-cw'       : 'Ротирай 90 градуса CW',
+			'rotate-ccw'      : 'Ротирай 90 градуса CCW',
+			'degree'          : '°',
+			'netMountDialogTitle' : 'Монтиране на мрежов ресурс',
+			'protocol'        : 'Протокол',
+			'host'            : 'Хост',
+			'port'            : 'Порт',
+			'user'            : 'Потребител',
+			'pass'            : 'Парола',
+			'confirmUnmount'  : 'Ще размонтирате $1?',
+			'dropFilesBrowser': 'Пусни или вмъкни файлове от браузера',
+			'dropPasteFiles'  : 'Пусни или вмъкни файлове тук',
+			'encoding'        : 'Кодировка',
+			'locale'          : 'Локали',
+			'searchTarget'    : 'Цел: $1',
+			'searchMime'      : 'Търсене по въведен MIME тип',
+			'owner'           : 'Собственик',
+			'group'           : 'Група',
+			'other'           : 'Други',
+			'execute'         : 'Изпълнява',
+			'perm'            : 'Разрешение',
+			'mode'            : 'Поведение',
+			
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : 'Непознат',
+			'kindFolder'      : 'Папка',
+			'kindAlias'       : 'Връзка',
+			'kindAliasBroken' : 'Счупена връзка',
+			// applications
+			'kindApp'         : 'Приложение',
+			'kindPostscript'  : 'Postscript документ',
+			'kindMsOffice'    : 'Microsoft Office документ',
+			'kindMsWord'      : 'Microsoft Word документ',
+			'kindMsExcel'     : 'Microsoft Excel документ',
+			'kindMsPP'        : 'Microsoft Powerpoint презентация',
+			'kindOO'          : 'Open Office документ',
+			'kindAppFlash'    : 'Flash приложение',
+			'kindPDF'         : 'PDF документ',
+			'kindTorrent'     : 'Bittorrent файл',
+			'kind7z'          : '7z архив',
+			'kindTAR'         : 'TAR архив',
+			'kindGZIP'        : 'GZIP архив',
+			'kindBZIP'        : 'BZIP архив',
+			'kindXZ'          : 'XZ архив',
+			'kindZIP'         : 'ZIP архив',
+			'kindRAR'         : 'RAR архив',
+			'kindJAR'         : 'Java JAR файл',
+			'kindTTF'         : 'True Type шрифт',
+			'kindOTF'         : 'Open Type шрифт',
+			'kindRPM'         : 'RPM пакет',
+			// texts
+			'kindText'        : 'Текстов документ',
+			'kindTextPlain'   : 'Чист текст',
+			'kindPHP'         : 'PHP изходен код',
+			'kindCSS'         : 'CSS таблица със стилове',
+			'kindHTML'        : 'HTML документ',
+			'kindJS'          : 'Javascript изходен код',
+			'kindRTF'         : 'RTF текстови файл',
+			'kindC'           : 'C изходен код',
+			'kindCHeader'     : 'C header изходен код',
+			'kindCPP'         : 'C++ изходен код',
+			'kindCPPHeader'   : 'C++ header изходен код',
+			'kindShell'       : 'Unix shell script',
+			'kindPython'      : 'Python изходен код',
+			'kindJava'        : 'Java изходен код',
+			'kindRuby'        : 'Ruby изходен код',
+			'kindPerl'        : 'Perl изходен код',
+			'kindSQL'         : 'SQL изходен код',
+			'kindXML'         : 'XML документ',
+			'kindAWK'         : 'AWK изходен код',
+			'kindCSV'         : 'CSV стойности разделени със запетая',
+			'kindDOCBOOK'     : 'Docbook XML документ',
+			'kindMarkdown'    : 'Markdown текст',
+			// images
+			'kindImage'       : 'Изображение',
+			'kindBMP'         : 'BMP изображение',
+			'kindJPEG'        : 'JPEG изображение',
+			'kindGIF'         : 'GIF изображение',
+			'kindPNG'         : 'PNG изображение',
+			'kindTIFF'        : 'TIFF изображение',
+			'kindTGA'         : 'TGA изображение',
+			'kindPSD'         : 'Adobe Photoshop изображение',
+			'kindXBITMAP'     : 'X bitmap изображение',
+			'kindPXM'         : 'Pixelmator изображение',
+			// media
+			'kindAudio'       : 'Аудио медия',
+			'kindAudioMPEG'   : 'MPEG звук',
+			'kindAudioMPEG4'  : 'MPEG-4 звук',
+			'kindAudioMIDI'   : 'MIDI звук',
+			'kindAudioOGG'    : 'Ogg Vorbis звук',
+			'kindAudioWAV'    : 'WAV звук',
+			'AudioPlaylist'   : 'MP3 списък за изпълнение',
+			'kindVideo'       : 'Видео медия',
+			'kindVideoDV'     : 'DV филм',
+			'kindVideoMPEG'   : 'MPEG филм',
+			'kindVideoMPEG4'  : 'MPEG-4 филм',
+			'kindVideoAVI'    : 'AVI филм',
+			'kindVideoMOV'    : 'Quick Time филм',
+			'kindVideoWM'     : 'Windows Media филм',
+			'kindVideoFlash'  : 'Flash филм',
+			'kindVideoMKV'    : 'Matroska филм',
+			'kindVideoOGG'    : 'Ogg филм'
+		}
+	};
+}));
+

+ 375 - 0
src/assets/js/i18n/elfinder.ca.js

@@ -0,0 +1,375 @@
+/**
+ * Catalan translation
+ * @author Sergio Jovani <lesergi@gmail.com>
+ * @version 2014-12-19
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.ca = {
+		translator : 'Sergio Jovani &lt;lesergi@gmail.com&gt;',
+		language   : 'Català',
+		direction  : 'ltr',
+		dateFormat : 'M d, Y h:i A', // Mar 13, 2012 05:27 PM
+		fancyDateFormat : '$1 h:i A', // will produce smth like: Today 12:25 PM
+		messages   : {
+			
+			/********************************** errors **********************************/
+			'error'                : 'Error',
+			'errUnknown'           : 'Error desconegut.',
+			'errUnknownCmd'        : 'Ordre desconeguda.',
+			'errJqui'              : 'La configuració de jQuery UI no és vàlida. S\'han d\'incloure els components "selectable", "draggable" i "droppable".',
+			'errNode'              : 'elFinder necessita crear elements DOM.',
+			'errURL'               : 'La configuració de l\'elFinder no és vàlida! L\'opció URL no està configurada.',
+			'errAccess'            : 'Accés denegat.',
+			'errConnect'           : 'No s\'ha pogut connectar amb el rerefons.',
+			'errAbort'             : 'S\'ha interromput la connexió.',
+			'errTimeout'           : 'Temps de connexió excedit.',
+			'errNotFound'          : 'No s\'ha trobat el rerefons.',
+			'errResponse'          : 'La resposta del rerefons no és vàlida.',
+			'errConf'              : 'La configuració del rerefons no és vàlida.',
+			'errJSON'              : 'No està instal·lat el mòdul JSON del PHP.',
+			'errNoVolumes'         : 'No s\'han trobat volums llegibles.',
+			'errCmdParams'         : 'Els paràmetres per l\'ordre "$1" no són vàlids.',
+			'errDataNotJSON'       : 'Les dades no són JSON.',
+			'errDataEmpty'         : 'Les dades estan buides.',
+			'errCmdReq'            : 'La sol·licitud del rerefons necessita el nom de l\'ordre.',
+			'errOpen'              : 'No s\'ha pogut obrir "$1".',
+			'errNotFolder'         : 'L\'objecte no és una carpeta.',
+			'errNotFile'           : 'L\'objecte no és un fitxer.',
+			'errRead'              : 'No s\'ha pogut llegir "$1".',
+			'errWrite'             : 'No s\'ha pogut escriure a "$1".',
+			'errPerm'              : 'Permís denegat.',
+			'errLocked'            : '"$1" està bloquejat i no podeu canviar-li el nom, moure-lo ni suprimir-lo.',
+			'errExists'            : 'Ja existeix un fitxer anomenat "$1".',
+			'errInvName'           : 'El nom de fitxer no és vàlid.',
+			'errFolderNotFound'    : 'No s\'ha trobat la carpeta.',
+			'errFileNotFound'      : 'No s\'ha trobat el fitxer.',
+			'errTrgFolderNotFound' : 'No s\'ha trobat la carpeta de destí "$1".',
+			'errPopup'             : 'El navegador ha evitat obrir una finestra emergent. Autoritzeu-la per obrir el fitxer.',
+			'errMkdir'             : 'No s\'ha pogut crear la carpeta "$1".',
+			'errMkfile'            : 'No s\'ha pogut crear el fitxer "$1".',
+			'errRename'            : 'No s\'ha pogut canviar el nom de "$1".',
+			'errCopyFrom'          : 'No està permès copiar fitxers des del volum "$1".',
+			'errCopyTo'            : 'No està permès copiar fitxers al volum "$1".',
+			'errUpload'            : 'S\'ha produït un error en la càrrega.',
+			'errUploadFile'        : 'No s\'ha pogut carregar "$1".',
+			'errUploadNoFiles'     : 'No s\'han trobat fitxers per carregar.',
+			'errUploadTotalSize'   : 'Les dades excedeixen la mida màxima permesa.',
+			'errUploadFileSize'    : 'El fitxer excedeix la mida màxima permesa.',
+			'errUploadMime'        : 'El tipus de fitxer no està permès.',
+			'errUploadTransfer'    : 'S\'ha produït un error en transferir "$1".', 
+			'errNotReplace'        : 'Object "$1" already exists at this location and can not be replaced by object with another type.',
+			'errReplace'           : 'Unable to replace "$1".',
+			'errSave'              : 'No s\'ha pogut desar "$1".',
+			'errCopy'              : 'No s\'ha pogut copiar "$1".',
+			'errMove'              : 'No s\'ha pogut moure "$1".',
+			'errCopyInItself'      : 'No s\'ha pogut copiar "$1" a si mateix.',
+			'errRm'                : 'No s\'ha pogut suprimir "$1".',
+			'errRmSrc'             : 'Unable remove source file(s).',
+			'errExtract'           : 'No s\'han pogut extreure els fitxers de "$1".',
+			'errArchive'           : 'No s\'ha pogut crear l\'arxiu.',
+			'errArcType'           : 'El tipus d\'arxiu no està suportat.',
+			'errNoArchive'         : 'El fitxer no és un arxiu o és un tipus no suportat.',
+			'errCmdNoSupport'      : 'El rerefons no suporta aquesta ordre.',
+			'errReplByChild'       : 'No es pot reemplaçar la carpeta “$1” per un element que conté.',
+			'errArcSymlinks'       : 'Per raons de seguretat, no es permet extreure arxius que contenen enllaços simbòlics.',
+			'errArcMaxSize'        : 'Els fitxers de l\'arxiu excedeixen la mida màxima permesa.',
+			'errResize'            : 'No s\'ha pogut redimensionar "$1".',
+			'errResizeDegree' : 'Invalid rotate degree.',
+			'errResizeRotate' : 'Unable to rotate image.',
+			'errResizeSize' : 'Invalid image size.',
+			'errResizeNoChange' : 'Image size not changed.',
+			'errUsupportType'      : 'El tipus de fitxer no està suportat.',
+			'errNotUTF8Content' : 'File "$1" is not in UTF-8 and cannot be edited.',
+			'errNetMount' : 'Unable to mount "$1".',
+			'errNetMountNoDriver' : 'Unsupported protocol.',
+			'errNetMountFailed' : 'Mount failed.',
+			'errNetMountHostReq' : 'Host required.',
+			'errSessionExpires' : 'Your session has expired due to inactivity.',
+			'errCreatingTempDir' : 'Unable to create temporary directory: "$1"',
+			'errFtpDownloadFile' : 'Unable to download file from FTP: "$1"',
+			'errFtpUploadFile' : 'Unable to upload file to FTP: "$1"',
+			'errFtpMkdir' : 'Unable to create remote directory on FTP: "$1"',
+			'errArchiveExec' : 'Error while archiving files: "$1"',
+			'errExtractExec' : 'Error while extracting files: "$1"',
+			
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'Crea arxiu',
+			'cmdback'      : 'Enrere',
+			'cmdcopy'      : 'Copia',
+			'cmdcut'       : 'Retalla',
+			'cmddownload'  : 'Descarrega',
+			'cmdduplicate' : 'Duplica',
+			'cmdedit'      : 'Edita el fitxer',
+			'cmdextract'   : 'Extreu els fitxers de l\'arxiu',
+			'cmdforward'   : 'Endavant',
+			'cmdgetfile'   : 'Selecciona els fitxers',
+			'cmdhelp'      : 'Quant a aquest programari',
+			'cmdhome'      : 'Inici',
+			'cmdinfo'      : 'Obté informació',
+			'cmdmkdir'     : 'Nova carpeta',
+			'cmdmkfile'    : 'Nou fitxer de text',
+			'cmdopen'      : 'Obre',
+			'cmdpaste'     : 'Enganxa',
+			'cmdquicklook' : 'Previsualitza',
+			'cmdreload'    : 'Torna a carregar',
+			'cmdrename'    : 'Canvia el nom',
+			'cmdrm'        : 'Suprimeix',
+			'cmdsearch'    : 'Cerca fitxers',
+			'cmdup'        : 'Vés al directori superior',
+			'cmdupload'    : 'Carrega fitxers',
+			'cmdview'      : 'Visualitza',
+			'cmdresize'    : 'Redimensiona la imatge',
+			'cmdsort'      : 'Ordena',
+			'cmdnetmount'  : 'Mount network volume',
+			
+			/*********************************** buttons ***********************************/ 
+			'btnClose'  : 'Tanca',
+			'btnSave'   : 'Desa',
+			'btnRm'     : 'Suprimeix',
+			'btnApply'  : 'Aplica',
+			'btnCancel' : 'Cancel·la',
+			'btnNo'     : 'No',
+			'btnYes'    : 'Sí',
+			'btnMount'  : 'Mount',
+			
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'S\'està obrint la carpeta',
+			'ntffile'     : 'S\'està obrint el fitxer',
+			'ntfreload'   : 'S\'està tornant a carregar el contingut de la carpeta',
+			'ntfmkdir'    : 'S\'està creant el directori',
+			'ntfmkfile'   : 'S\'estan creant el fitxers',
+			'ntfrm'       : 'S\'estan suprimint els fitxers',
+			'ntfcopy'     : 'S\'estan copiant els fitxers',
+			'ntfmove'     : 'S\'estan movent els fitxers',
+			'ntfprepare'  : 'S\'està preparant per copiar fitxers',
+			'ntfrename'   : 'S\'estan canviant els noms del fitxers',
+			'ntfupload'   : 'S\'estan carregant els fitxers',
+			'ntfdownload' : 'S\'estan descarregant els fitxers',
+			'ntfsave'     : 'S\'estan desant els fitxers',
+			'ntfarchive'  : 'S\'està creant l\'arxiu',
+			'ntfextract'  : 'S\'estan extreient els fitxers de l\'arxiu',
+			'ntfsearch'   : 'S\'estan cercant els fitxers',
+			'ntfresize'   : 'Resizing images',
+			'ntfsmth'     : 'S\'estan realitzant operacions',
+			'ntfloadimg'  : 'S\'està carregant la imatge',
+			'ntfnetmount' : 'Mounting network volume',
+			'ntfdim'      : 'Acquiring image dimension',
+			
+			/************************************ dates **********************************/
+			'dateUnknown' : 'desconegut',
+			'Today'       : 'Avui',
+			'Yesterday'   : 'Ahir',
+			'msJan'       : 'gen.',
+			'msFeb'       : 'febr.',
+			'msMar'       : 'març',
+			'msApr'       : 'abr.',
+			'msMay'       : 'maig',
+			'msJun'       : 'juny',
+			'msJul'       : 'jul.',
+			'msAug'       : 'ag.',
+			'msSep'       : 'set.',
+			'msOct'       : 'oct.',
+			'msNov'       : 'nov.',
+			'msDec'       : 'des.',
+			'January'     : 'January',
+			'February'    : 'February',
+			'March'       : 'March',
+			'April'       : 'April',
+			'May'         : 'May',
+			'June'        : 'June',
+			'July'        : 'July',
+			'August'      : 'August',
+			'September'   : 'September',
+			'October'     : 'October',
+			'November'    : 'November',
+			'December'    : 'December',
+			'Sunday'      : 'Sunday',
+			'Monday'      : 'Monday',
+			'Tuesday'     : 'Tuesday',
+			'Wednesday'   : 'Wednesday',
+			'Thursday'    : 'Thursday',
+			'Friday'      : 'Friday',
+			'Saturday'    : 'Saturday',
+			'Sun'         : 'Sun', 
+			'Mon'         : 'Mon', 
+			'Tue'         : 'Tue', 
+			'Wed'         : 'Wed', 
+			'Thu'         : 'Thu', 
+			'Fri'         : 'Fri', 
+			'Sat'         : 'Sat',
+			
+			/******************************** sort variants ********************************/
+			'sortname'          : 'per nom', 
+			'sortkind'          : 'per tipus', 
+			'sortsize'          : 'per mida',
+			'sortdate'          : 'per data',
+			'sortFoldersFirst' : 'Folders first',
+			
+			/********************************** messages **********************************/
+			'confirmReq'      : 'Es necessita confirmació',
+			'confirmRm'       : 'Voleu suprimir els fitxers?<br />L\'acció es podrà desfer!',
+			'confirmRepl'     : 'Voleu reemplaçar el fitxer antic amb el nou?',
+			'apllyAll'        : 'Aplica a tot',
+			'name'            : 'Nom',
+			'size'            : 'Mida',
+			'perms'           : 'Permisos',
+			'modify'          : 'Modificat',
+			'kind'            : 'Tipus',
+			'read'            : 'llegir',
+			'write'           : 'escriure',
+			'noaccess'        : 'sense accés',
+			'and'             : 'i',
+			'unknown'         : 'desconegut',
+			'selectall'       : 'Selecciona tots els fitxers',
+			'selectfiles'     : 'Selecciona el(s) fitxer(s)',
+			'selectffile'     : 'Selecciona el primer fitxer',
+			'selectlfile'     : 'Selecciona l\'últim fitxer',
+			'viewlist'        : 'Vista en llista',
+			'viewicons'       : 'Vista en icones',
+			'places'          : 'Llocs',
+			'calc'            : 'Calcula', 
+			'path'            : 'Camí',
+			'aliasfor'        : 'Àlies per',
+			'locked'          : 'Bloquejat',
+			'dim'             : 'Dimensions',
+			'files'           : 'Fitxers',
+			'folders'         : 'Carpetes',
+			'items'           : 'Elements',
+			'yes'             : 'sí',
+			'no'              : 'no',
+			'link'            : 'Enllaç',
+			'searcresult'     : 'Resultats de la cerca',  
+			'selected'        : 'Elements seleccionats',
+			'about'           : 'Quant a',
+			'shortcuts'       : 'Dreceres',
+			'help'            : 'Ajuda',
+			'webfm'           : 'Gestor de fitxers web',
+			'ver'             : 'Versió',
+			'protocolver'     : 'versió de protocol',
+			'homepage'        : 'Pàgina del projecte',
+			'docs'            : 'Documentació',
+			'github'          : 'Bifurca\'ns a GitHub',
+			'twitter'         : 'Segueix-nos a Twitter',
+			'facebook'        : 'Uniu-vos a Facebook',
+			'team'            : 'Equip',
+			'chiefdev'        : 'cap desenvolupador',
+			'developer'       : 'desenvolupador',
+			'contributor'     : 'col·laborador',
+			'maintainer'      : 'mantenidor',
+			'translator'      : 'traductor',
+			'icons'           : 'Icones',
+			'dontforget'      : 'i no oblideu agafar la vostra tovallola',
+			'shortcutsof'     : 'Les dreceres estan inhabilitades',
+			'dropFiles'       : 'Arrossegueu els fitxers aquí',
+			'or'              : 'o',
+			'selectForUpload' : 'Seleccioneu els fitxer a carregar',
+			'moveFiles'       : 'Mou els fitxers',
+			'copyFiles'       : 'Copia els fitxers',
+			'rmFromPlaces'    : 'Suprimeix dels llocs',
+			'aspectRatio'     : 'Relació d\'aspecte',
+			'scale'           : 'Escala',
+			'width'           : 'Amplada',
+			'height'          : 'Alçada',
+			'resize'          : 'Redimensiona',
+			'crop'            : 'Retalla',
+			'rotate'          : 'Rotate',
+			'rotate-cw'       : 'Rotate 90 degrees CW',
+			'rotate-ccw'      : 'Rotate 90 degrees CCW',
+			'degree'          : '°',
+			'netMountDialogTitle' : 'Mount network volume',
+			'protocol'        : 'Protocol',
+			'host'            : 'Host',
+			'port'            : 'Port',
+			'user'            : 'User',
+			'pass'            : 'Password',
+			
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : 'Desconegut',
+			'kindFolder'      : 'Carpeta',
+			'kindAlias'       : 'Àlies',
+			'kindAliasBroken' : 'Àlies no vàlid',
+			// applications
+			'kindApp'         : 'Aplicació',
+			'kindPostscript'  : 'Document Postscript',
+			'kindMsOffice'    : 'Document del Microsoft Office',
+			'kindMsWord'      : 'Document del Microsoft Word',
+			'kindMsExcel'     : 'Document del Microsoft Excel',
+			'kindMsPP'        : 'Presentació del Microsoft Powerpoint',
+			'kindOO'          : 'Document de l\'Open Office',
+			'kindAppFlash'    : 'Aplicació Flash',
+			'kindPDF'         : 'Document PDF',
+			'kindTorrent'     : 'Fitxer Bittorrent',
+			'kind7z'          : 'Arxiu 7z',
+			'kindTAR'         : 'Arxiu TAR',
+			'kindGZIP'        : 'Arxiu GZIP',
+			'kindBZIP'        : 'Arxiu BZIP',
+			'kindXZ'          : 'Arxiu XZ',
+			'kindZIP'         : 'Arxiu ZIP',
+			'kindRAR'         : 'Arxiu RAR',
+			'kindJAR'         : 'Fitxer JAR de Java',
+			'kindTTF'         : 'Tipus de lletra True Type',
+			'kindOTF'         : 'Tipus de lletra Open Type',
+			'kindRPM'         : 'Paquet RPM',
+			// texts
+			'kindText'        : 'Document de text',
+			'kindTextPlain'   : 'Document de text net',
+			'kindPHP'         : 'Codi PHP',
+			'kindCSS'         : 'Full d\'estils CSS',
+			'kindHTML'        : 'Document HTML',
+			'kindJS'          : 'Codi Javascript',
+			'kindRTF'         : 'Document RTF',
+			'kindC'           : 'Codi C',
+			'kindCHeader'     : 'Codi de caçalera C',
+			'kindCPP'         : 'Codi C++',
+			'kindCPPHeader'   : 'Codi de caçalera C++',
+			'kindShell'       : 'Script Unix',
+			'kindPython'      : 'Codi Python',
+			'kindJava'        : 'Codi Java',
+			'kindRuby'        : 'Codi Ruby',
+			'kindPerl'        : 'Script Perl',
+			'kindSQL'         : 'Codi SQL',
+			'kindXML'         : 'Document XML',
+			'kindAWK'         : 'Codi AWK',
+			'kindCSV'         : 'Document CSV',
+			'kindDOCBOOK'     : 'Document XML de Docbook',
+			// images
+			'kindImage'       : 'Imatge',
+			'kindBMP'         : 'Imatge BMP',
+			'kindJPEG'        : 'Imatge JPEG',
+			'kindGIF'         : 'Imatge GIF',
+			'kindPNG'         : 'Imatge PNG',
+			'kindTIFF'        : 'Imatge TIFF',
+			'kindTGA'         : 'Imatge TGA',
+			'kindPSD'         : 'Imatge Adobe Photoshop',
+			'kindXBITMAP'     : 'Imatge X bitmap',
+			'kindPXM'         : 'Imatge Pixelmator',
+			// media
+			'kindAudio'       : 'Fitxer d\'àudio',
+			'kindAudioMPEG'   : 'Fitxer d\'àudio MPEG',
+			'kindAudioMPEG4'  : 'Fitxer d\'àudio MPEG-4',
+			'kindAudioMIDI'   : 'Fitxer d\'àudio MIDI',
+			'kindAudioOGG'    : 'Fitxer d\'àudio Ogg Vorbis',
+			'kindAudioWAV'    : 'Fitxer d\'àudio WAV',
+			'AudioPlaylist'   : 'Llista de reproducció MP3',
+			'kindVideo'       : 'Fitxer de vídeo',
+			'kindVideoDV'     : 'Fitxer de vídeo DV',
+			'kindVideoMPEG'   : 'Fitxer de vídeo MPEG',
+			'kindVideoMPEG4'  : 'Fitxer de vídeo MPEG-4',
+			'kindVideoAVI'    : 'Fitxer de vídeo AVI',
+			'kindVideoMOV'    : 'Fitxer de vídeo Quick Time',
+			'kindVideoWM'     : 'Fitxer de vídeo Windows Media',
+			'kindVideoFlash'  : 'Fitxer de vídeo Flash',
+			'kindVideoMKV'    : 'Fitxer de vídeo Matroska',
+			'kindVideoOGG'    : 'Fitxer de vídeo Ogg'
+		}
+	};
+}));
+

+ 517 - 0
src/assets/js/i18n/elfinder.cs.js

@@ -0,0 +1,517 @@
+/**
+ * Czech translation
+ * @author Jay Gridley <gridley.jay@hotmail.com>
+ * @author RobiNN <kelcakrobo@gmail.com>
+ * @version 2017-08-23
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.cs = {
+		translator : 'Jay Gridley &lt;gridley.jay@hotmail.com&gt;, RobiNN &lt;kelcakrobo@gmail.com&gt;',
+		language   : 'čeština',
+		direction  : 'ltr',
+		dateFormat : 'd. m. Y H:i', // Mar 13, 2012 05:27 PM
+		fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM
+		nonameDateFormat : 'ymd-His', // to apply if upload file is noname: 120513172700
+		messages   : {
+
+			/********************************** errors **********************************/
+			'error'                : 'Chyba',
+			'errUnknown'           : 'Neznámá chyba.',
+			'errUnknownCmd'        : 'Neznámý příkaz.',
+			'errJqui'              : 'Nedostačující konfigurace jQuery UI. Musí být zahrnuty komponenty Selectable, Draggable a Droppable.',
+			'errNode'              : 'elFinder vyžaduje vytvořený DOM Elementu.',
+			'errURL'               : 'Chybná konfigurace elFinderu! Není nastavena hodnota URL.',
+			'errAccess'            : 'Přístup zamítnut.',
+			'errConnect'           : 'Nepodařilo se připojit k backendu.',
+			'errAbort'             : 'Připojení zrušeno.',
+			'errTimeout'           : 'Vypšel limit pro připojení.',
+			'errNotFound'          : 'Backend nenalezen.',
+			'errResponse'          : 'Nesprávná odpověď backendu.',
+			'errConf'              : 'Nepsrávná konfigurace backendu.',
+			'errJSON'              : 'PHP modul JSON není nainstalován.',
+			'errNoVolumes'         : 'Není dostupný čitelný oddíl.',
+			'errCmdParams'         : 'Nesprávné parametry příkazu "$1".',
+			'errDataNotJSON'       : 'Data nejsou ve formátu JSON.',
+			'errDataEmpty'         : 'Data jsou prázdná.',
+			'errCmdReq'            : 'Dotaz backendu vyžaduje název příkazu.',
+			'errOpen'              : 'Chyba při otevírání "$1".',
+			'errNotFolder'         : 'Objekt není složka.',
+			'errNotFile'           : 'Objekt není soubor.',
+			'errRead'              : 'Chyba při čtení "$1".',
+			'errWrite'             : 'Chyba při zápisu do "$1".',
+			'errPerm'              : 'Přístup odepřen.',
+			'errLocked'            : '"$1" je uzamčený a nemůže být přejmenován, přesunut nebo smazán.',
+			'errExists'            : 'Soubor s názvem "$1" již existuje.',
+			'errInvName'           : 'Nesprávný název souboru.',
+			'errInvDirname'        : 'Neplatný název adresáře.',  // from v2.1.24 added 12.4.2017
+			'errFolderNotFound'    : 'Složka nenalezena.',
+			'errFileNotFound'      : 'Soubor nenalezen.',
+			'errTrgFolderNotFound' : 'Cílová složka "$1" nenalezena.',
+			'errPopup'             : 'Prohlížeč zabránil otevření vyskakovacího okna. K otevření souboru, povolte vyskakovací okno v prohlížeči.',
+			'errMkdir'             : 'Nepodařilo se vytvořit složku "$1".',
+			'errMkfile'            : 'Nepodařilo se vytvořit soubor "$1".',
+			'errRename'            : 'Nepodařilo se přejmenovat "$1".',
+			'errCopyFrom'          : 'Kopírování souborů z oddílu "$1" není povoleno.',
+			'errCopyTo'            : 'Kopírování souborů do oddílu "$1" není povoleno.',
+			'errMkOutLink'         : 'Nelze vytvořit odkaz mimo kořenového svazku.', // from v2.1 added 03.10.2015
+			'errUpload'            : 'Chyba nahrávání.',  // old name - errUploadCommon
+			'errUploadFile'        : 'Nepodařilo se nahrát "$1".', // old name - errUpload
+			'errUploadNoFiles'     : 'Nejsou vybrány žádné soubory k nahrání.',
+			'errUploadTotalSize'   : 'Překročena maximální povolená velikost dat.', // old name - errMaxSize
+			'errUploadFileSize'    : 'Překročena maximální povolená velikost souboru.', //  old name - errFileMaxSize
+			'errUploadMime'        : 'Nepovolený typ souboru.',
+			'errUploadTransfer'    : '"$1" chyba přenosu.',
+			'errUploadTemp'        : 'Nelze vytvořit dočasný soubor pro upload.', // from v2.1 added 26.09.2015
+			'errNotReplace'        : 'Objekt "$1" v tomto umístění již existuje a nelze jej nahradit s jiným typem objektu.', // new
+			'errReplace'           : 'Nelze nahradit "$1".',
+			'errSave'              : '"$1" nelze uložit.',
+			'errCopy'              : '"$1" nelze zkopírovat.',
+			'errMove'              : '"$1" nelze přemístit.',
+			'errCopyInItself'      : '"$1" nelze zkopírovat do sebe sama.',
+			'errRm'                : '"$1" nelze odstranit.',
+			'errTrash'             : 'Nelze se dostat do koše.', // from v2.1.24 added 30.4.2017
+			'errRmSrc'             : 'Nelze odstranit zdrojový soubor(y).',
+			'errExtract'           : 'Nelze extrahovat soubory z "$1".',
+			'errArchive'           : 'Nelze vytvořit archív.',
+			'errArcType'           : 'Nepodporovaný typ archívu.',
+			'errNoArchive'         : 'Soubor není archív nebo má nepodporovaný formát.',
+			'errCmdNoSupport'      : 'Backend tento příkaz nepodporuje.',
+			'errReplByChild'       : 'Složka "$1" nemůže být nahrazena souborem, který sama obsahuje.',
+			'errArcSymlinks'       : 'Z bezpečnostních důvodů je zakázáno rozbalit archívy obsahující symlinky.', // edited 24.06.2012
+			'errArcMaxSize'        : 'Soubory archívu překračují maximální povolenou velikost.',
+			'errResize'            : 'Nepodařilo se změnit velikost obrázku "$1".',
+			'errResizeDegree'      : 'Neplatný stupeň rotace.',  // added 7.3.2013
+			'errResizeRotate'      : 'Nelze otočit obrázek.',  // added 7.3.2013
+			'errResizeSize'        : 'Neplatná velikost obrázku.',  // added 7.3.2013
+			'errResizeNoChange'    : 'Velikost obrazu se nezmění.',  // added 7.3.2013
+			'errUsupportType'      : 'Nepodporovaný typ souboru.',
+			'errNotUTF8Content'    : 'Soubor "$1" nemá ani obsah kódovaný v UTF-8 a nelze změnit.',  // added 9.11.2011
+			'errNetMount'          : 'Není možné se připojit "$ 1".', // added 17.04.2012
+			'errNetMountNoDriver'  : 'Nepodporovaný protokol.',     // added 17.04.2012
+			'errNetMountFailed'    : 'Připojení se nezdařilo.',         // added 17.04.2012
+			'errNetMountHostReq'   : 'Hostitel se vyžaduje.', // added 18.04.2012
+			'errSessionExpires'    : 'Relace byla ukončena z důvodu nečinnosti.',
+			'errCreatingTempDir'   : 'Nelze vytvořit dočasný adresář: "$1"',
+			'errFtpDownloadFile'   : 'Nelze stáhnout soubor z FTP: "$1"',
+			'errFtpUploadFile'     : 'Nelze nahrát soubor na FTP: "$1"',
+			'errFtpMkdir'          : 'Nepodařilo se vytvořit vzdálený adresář na FTP: "$1"',
+			'errArchiveExec'       : 'Při archivaci do souboru došlo k chybě: "$1"',
+			'errExtractExec'       : 'Chyba při extrahování souboru: "$1"',
+			'errNetUnMount'        : 'Nepodařilo se odpojit', // from v2.1 added 30.04.2012
+			'errConvUTF8'          : 'Nelze převést na UTF-8', // from v2.1 added 08.04.2014
+			'errFolderUpload'      : 'Chcete-li nahrát složku, zkuste moderní prohlížeč.', // from v2.1 added 26.6.2015
+			'errSearchTimeout'     : 'Vypršení časového limitu při hledání "$1". Je částečně výsledkem hledání.', // from v2.1 added 12.1.2016
+			'errReauthRequire'     : 'Opětovné povolení je nutné.', // from v2.1.10 added 24.3.2016
+			'errMaxTargets'        : 'Maximální počet volitelných předmětů je $1.', // from v2.1.17 added 17.10.2016
+			'errRestore'           : 'Nelze obnovit z koše. Nelze identifikovat cíl obnovení.', // from v2.1.24 added 3.5.2017
+			'errEditorNotFound'    : 'Editor tohoto typu souboru nebyl nalezen.', // from v2.1.25 added 23.5.2017
+			'errServerError'       : 'Došlo k chybě na straně serveru.', // from v2.1.25 added 16.6.2017
+			'errEmpty'             : 'Nelze vyprázdnit složku "$1".', // from v2.1.25 added 22.6.2017
+
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'Vytvořit archív',
+			'cmdback'      : 'Zpět',
+			'cmdcopy'      : 'Kopírovat',
+			'cmdcut'       : 'Vyjmout',
+			'cmddownload'  : 'Stáhnout',
+			'cmdduplicate' : 'Duplikovat',
+			'cmdedit'      : 'Upravit soubor',
+			'cmdextract'   : 'Rozbalit archív',
+			'cmdforward'   : 'Vpřed',
+			'cmdgetfile'   : 'Vybrat soubory',
+			'cmdhelp'      : 'O softwaru',
+			'cmdhome'      : 'Domů',
+			'cmdinfo'      : 'Zobrazit informace',
+			'cmdmkdir'     : 'Nová složka',
+			'cmdmkdirin'   : 'Do nové složky', // from v2.1.7 added 19.2.2016
+			'cmdmkfile'    : 'Nový textový soubor',
+			'cmdopen'      : 'Otevřít',
+			'cmdpaste'     : 'Vložit',
+			'cmdquicklook' : 'Náhled',
+			'cmdreload'    : 'Obnovit',
+			'cmdrename'    : 'Přejmenovat',
+			'cmdrm'        : 'Smazat',
+			'cmdtrash'     : 'Do koše', //from v2.1.24 added 29.4.2017
+			'cmdrestore'   : 'Obnovit', //from v2.1.24 added 3.5.2017
+			'cmdsearch'    : 'Najít soubory',
+			'cmdup'        : 'Přejít do nadřazené složky',
+			'cmdupload'    : 'Nahrát soubor(y)',
+			'cmdview'      : 'Zobrazit',
+			'cmdresize'    : 'Změnit velikost',
+			'cmdsort'      : 'Seřadit',
+			'cmdnetmount'  : 'Připojit síťovou jednotku', // added 18.04.2012
+			'cmdnetunmount': 'Odpojit', // from v2.1 added 30.04.2012
+			'cmdplaces'    : 'Umístění', // added 28.12.2014
+			'cmdchmod'     : 'Změnit režim', // from v2.1 added 20.6.2015
+			'cmdopendir'   : 'Otevření složky', // from v2.1 added 13.1.2016
+			'cmdcolwidth'  : 'Obnovení šířku sloupce', // from v2.1.13 added 12.06.2016
+			'cmdfullscreen': 'Celá obrazovka', // from v2.1.15 added 03.08.2016
+			'cmdmove'      : 'Posouvat', // from v2.1.15 added 21.08.2016
+			'cmdempty'     : 'Vyprázdnit složku', // from v2.1.25 added 22.06.2017
+			'cmdundo'      : 'Krok zpět', // from v2.1.27 added 31.07.2017
+			'cmdredo'      : 'Udělat to znovu', // from v2.1.27 added 31.07.2017
+			'cmdpreference': 'Preference', // from v2.1.27 added 03.08.2017
+			'cmdselectall' : 'Vyberat vše', // from v2.1.28 added 15.08.2017
+			'cmdselectnone': 'Nic nevyberať', // from v2.1.28 added 15.08.2017
+			'cmdselectinvert': 'Invertovat výběr', // from v2.1.28 added 15.08.2017
+
+			/*********************************** buttons ***********************************/
+			'btnClose'  : 'Zavřít',
+			'btnSave'   : 'Uložit',
+			'btnRm'     : 'Odstranit',
+			'btnApply'  : 'Použít',
+			'btnCancel' : 'Zrušit',
+			'btnNo'     : 'Ne',
+			'btnYes'    : 'Ano',
+			'btnMount'  : 'Připojit',  // added 18.04.2012
+			'btnApprove': 'Přejít do části 1 $ & schválit', // from v2.1 added 26.04.2012
+			'btnUnmount': 'Odpojit', // from v2.1 added 30.04.2012
+			'btnConv'   : 'Převést', // from v2.1 added 08.04.2014
+			'btnCwd'    : 'Tu',      // from v2.1 added 22.5.2015
+			'btnVolume' : 'Médium',    // from v2.1 added 22.5.2015
+			'btnAll'    : 'Všechno',       // from v2.1 added 22.5.2015
+			'btnMime'   : 'MIME typ', // from v2.1 added 22.5.2015
+			'btnFileName':'Název souboru',  // from v2.1 added 22.5.2015
+			'btnSaveClose': 'Uložit & zavřít', // from v2.1 added 12.6.2015
+			'btnBackup' : 'Zálohovat', // fromv2.1 added 28.11.2015
+			'btnRename'    : 'Přejmenovat',      // from v2.1.24 added 6.4.2017
+			'btnRenameAll' : 'Přejmenovat vše', // from v2.1.24 added 6.4.2017
+			'btnPrevious' : 'Předch ($1/$2)', // from v2.1.24 added 11.5.2017
+			'btnNext'     : 'Další ($1/$2)', // from v2.1.24 added 11.5.2017
+			'btnSaveAs'   : 'Uložit jako', // from v2.1.25 added 24.5.2017
+
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'Otevírání složky',
+			'ntffile'     : 'Otevírání souboru',
+			'ntfreload'   : 'Obnovování obsahu složky',
+			'ntfmkdir'    : 'Vytváření složky',
+			'ntfmkfile'   : 'Vytváření souborů',
+			'ntfrm'       : 'Mazání souborů',
+			'ntfcopy'     : 'Kopírování souborů',
+			'ntfmove'     : 'Přesunování souborů',
+			'ntfprepare'  : 'Příprava ke kopírování souborů',
+			'ntfrename'   : 'Přejmenovávání souborů',
+			'ntfupload'   : 'Nahrávání souborů',
+			'ntfdownload' : 'Stahování souborů',
+			'ntfsave'     : 'Ukládání souborů',
+			'ntfarchive'  : 'Vytváření archívu',
+			'ntfextract'  : 'Rozbalování souborů z archívu',
+			'ntfsearch'   : 'Vyhledávání souborů',
+			'ntfresize'   : 'Změna velikosti obrázků',
+			'ntfsmth'     : 'Čekejte prosím...',
+			'ntfloadimg'  : 'Načítání obrázků',
+			'ntfnetmount' : 'Připojení síťového média', // added 18.04.2012
+			'ntfnetunmount': 'Odpojení síťového média', // from v2.1 added 30.04.2012
+			'ntfdim'      : 'Získejte rozměr obrazu', // added 20.05.2013
+			'ntfreaddir'  : 'Přečtěte si informace o složce', // from v2.1 added 01.07.2013
+			'ntfurl'      : 'Získejte adresu URL odkazu', // from v2.1 added 11.03.2014
+			'ntfchmod'    : 'Změna souboru', // from v2.1 added 20.6.2015
+			'ntfpreupload': 'Zkontrolujte název nahravaného souboru', // from v2.1 added 31.11.2015
+			'ntfzipdl'    : 'Vytvořit soubor ke stažení', // from v2.1.7 added 23.1.2016
+			'ntfparents'  : 'Získání informací o cestě', // from v2.1.17 added 2.11.2016
+			'ntfchunkmerge': 'Zpracování nahraného souboru', // from v2.1.17 added 2.11.2016
+			'ntftrash'    : 'Hodit do koše', // from v2.1.24 added 2.5.2017
+			'ntfrestore'  : 'Obnova z koše', // from v2.1.24 added 3.5.2017
+			'ntfchkdir'   : 'Kontrola cílové složky', // from v2.1.24 added 3.5.2017
+			'ntfundo'     : 'Zrušit  předchozí operaci', // from v2.1.27 added 31.07.2017
+			'ntfredo'     : 'Obnovit předchozí zrušení', // from v2.1.27 added 31.07.2017
+
+			/*********************************** volumes *********************************/
+			'volume_Trash' : 'Koš', //from v2.1.24 added 29.4.2017
+
+			/************************************ dates **********************************/
+			'dateUnknown' : 'neznámý',
+			'Today'       : 'Dnes',
+			'Yesterday'   : 'Včera',
+			'msJan'       : 'Led',
+			'msFeb'       : 'Úno',
+			'msMar'       : 'Bře',
+			'msApr'       : 'Dub',
+			'msMay'       : 'Kvě',
+			'msJun'       : 'Čer',
+			'msJul'       : 'Čec',
+			'msAug'       : 'Srp',
+			'msSep'       : 'Zář',
+			'msOct'       : 'Říj',
+			'msNov'       : 'Lis',
+			'msDec'       : 'Pro',
+			'January'     : 'Leden',
+			'February'    : 'Únor',
+			'March'       : 'Březen',
+			'April'       : 'Duben',
+			'May'         : 'Květen',
+			'June'        : 'Červen',
+			'July'        : 'Červenec',
+			'August'      : 'Srpen',
+			'September'   : 'Září',
+			'October'     : 'Říjen',
+			'November'    : 'Listopad',
+			'December'    : 'Prosinec',
+			'Sunday'      : 'Neděle',
+			'Monday'      : 'Pondělí',
+			'Tuesday'     : 'Úterý',
+			'Wednesday'   : 'Středa',
+			'Thursday'    : 'Čtvrtek',
+			'Friday'      : 'Pátek',
+			'Saturday'    : 'Sobota',
+			'Sun'         : 'Ne',
+			'Mon'         : 'Po',
+			'Tue'         : 'Út',
+			'Wed'         : 'St',
+			'Thu'         : 'Čt',
+			'Fri'         : 'Pá',
+			'Sat'         : 'So',
+
+			/******************************** sort variants ********************************/
+			'sortname'          : 'dle jména',
+			'sortkind'          : 'dle typu',
+			'sortsize'          : 'dle velikosti',
+			'sortdate'          : 'dle data',
+			'sortFoldersFirst'  : 'Napřed složky',
+			'sortperm'          : 'dle povolení', // from v2.1.13 added 13.06.2016
+			'sortmode'          : 'dle módu',       // from v2.1.13 added 13.06.2016
+			'sortowner'         : 'dle majitele',      // from v2.1.13 added 13.06.2016
+			'sortgroup'         : 'dle skupiny',      // from v2.1.13 added 13.06.2016
+			'sortAlsoTreeview'  : 'Také stromové zobrazení',  // from v2.1.15 added 01.08.2016
+
+			/********************************** new items **********************************/
+			'untitled file.txt' : 'Nový textový soubor.txt', // added 10.11.2015
+			'untitled folder'   : 'Nová složka',   // added 10.11.2015
+			'Archive'           : 'Nový archiv',  // from v2.1 added 10.11.2015
+
+			/********************************** messages **********************************/
+			'confirmReq'      : 'Požadováno potvrzení',
+			'confirmRm'       : 'Opravdu chcete odstranit tyto soubory?<br/>Operace nelze vrátit!',
+			'confirmRepl'     : 'Nahradit staré soubory novými?',
+			'confirmRest'     : 'Nahradit stávající položku položkou z koše?', // fromv2.1.24 added 5.5.2017
+			'confirmConvUTF8' : 'Není v UTF-8, převést do UTF-8?<br/>Obsah po převodu se stává UTF-8.', // from v2.1 added 08.04.2014
+			'confirmNonUTF8'  : 'Kódování tohoto souboru nemoholo rozpoznán. Pro úpravy je třeba dočasně převést do kódování UTF-8.<br/>Prosím, vyberte kódování znaků souboru.', // from v2.1.19 added 28.11.2016
+			'confirmNotSave'  : 'Byl změněn.<br/>Pokud obsahuje neuložené změny, dojde ke ztrátě práce.', // from v2.1 added 15.7.2015
+			'confirmTrash'    : 'Opravdu chcete položky přesunout do koše?', //from v2.1.24 added 29.4.2017
+			'apllyAll'        : 'Pro všechny',
+			'name'            : 'Název',
+			'size'            : 'Velikost',
+			'perms'           : 'Práva',
+			'modify'          : 'Upravený',
+			'kind'            : 'Typ',
+			'read'            : 'čtení',
+			'write'           : 'zápis',
+			'noaccess'        : 'přístup odepřen',
+			'and'             : 'a',
+			'unknown'         : 'neznámý',
+			'selectall'       : 'Vybrat všechny soubory',
+			'selectfiles'     : 'Vybrat soubor(y)',
+			'selectffile'     : 'Vybrat první soubor',
+			'selectlfile'     : 'Vybrat poslední soubor',
+			'viewlist'        : 'Seznam',
+			'viewicons'       : 'Ikony',
+			'places'          : 'Místa',
+			'calc'            : 'Vypočítat',
+			'path'            : 'Cesta',
+			'aliasfor'        : 'Zástupce pro',
+			'locked'          : 'Uzamčený',
+			'dim'             : 'Rozměry',
+			'files'           : 'Soubory',
+			'folders'         : 'Složky',
+			'items'           : 'Položky',
+			'yes'             : 'ano',
+			'no'              : 'ne',
+			'link'            : 'Odkaz',
+			'searcresult'     : 'Výsledky hledání',
+			'selected'        : 'vybrané položky',
+			'about'           : 'O softwaru',
+			'shortcuts'       : 'Zkratky',
+			'help'            : 'Nápověda',
+			'webfm'           : 'Webový správce souborů',
+			'ver'             : 'Verze',
+			'protocolver'     : 'verze protokolu',
+			'homepage'        : 'Domovská stránka projektu',
+			'docs'            : 'Dokumentace',
+			'github'          : 'Najdete nás na Gitgube',
+			'twitter'         : 'Následujte nás na Twitteri',
+			'facebook'        : 'Připojte se k nám na Facebooku',
+			'team'            : 'Tým',
+			'chiefdev'        : 'séf vývojářů',
+			'developer'       : 'vývojár',
+			'contributor'     : 'spolupracovník',
+			'maintainer'      : 'údržba',
+			'translator'      : 'překlad',
+			'icons'           : 'Ikony',
+			'dontforget'      : 'a nezapomeňte si vzít plavky',
+			'shortcutsof'     : 'Zkratky nejsou povoleny',
+			'dropFiles'       : 'Sem přetáhněte soubory',
+			'or'              : 'nebo',
+			'selectForUpload' : 'Vyberte soubory',
+			'moveFiles'       : 'Přesunout sobory',
+			'copyFiles'       : 'Zkopírovat soubory',
+			'restoreFiles'    : 'Obnovit položky', // from v2.1.24 added 5.5.2017
+			'rmFromPlaces'    : 'Odstranit z míst',
+			'aspectRatio'     : 'Poměr stran',
+			'scale'           : 'Měřítko',
+			'width'           : 'Šířka',
+			'height'          : 'Výška',
+			'resize'          : 'Změnit vel.',
+			'crop'            : 'Ořezat',
+			'rotate'          : 'Otočit',
+			'rotate-cw'       : 'Otočit o +90 stupňů',
+			'rotate-ccw'      : 'Otočit o -90 stupňů',
+			'degree'          : ' stupňů',
+			'netMountDialogTitle' : 'Připojení síťového média', // added 18.04.2012
+			'protocol'            : 'Protokol', // added 18.04.2012
+			'host'                : 'Host', // added 18.04.2012
+			'port'                : 'Port', // added 18.04.2012
+			'user'                : 'Uživatel', // added 18.04.2012
+			'pass'                : 'Heslo', // added 18.04.2012
+			'confirmUnmount'      : 'Chcete odpojit $1?',  // from v2.1 added 30.04.2012
+			'dropFilesBrowser': 'Přemístěte nebo přesuňte soubory z prohlížeče', // from v2.1 added 30.05.2012
+			'dropPasteFiles'  : 'Zde přemístěte nebo přesuňte soubory a adresy URL', // from v2.1 added 07.04.2014
+			'encoding'        : 'Kódování', // from v2.1 added 19.12.2014
+			'locale'          : 'Lokalizce',   // from v2.1 added 19.12.2014
+			'searchTarget'    : 'Cíl: $1',                // from v2.1 added 22.5.2015
+			'searchMime'      : 'Vyhledávání podle vstupního MIME typu', // from v2.1 added 22.5.2015
+			'owner'           : 'Majitel', // from v2.1 added 20.6.2015
+			'group'           : 'Skupina', // from v2.1 added 20.6.2015
+			'other'           : 'Ostatní', // from v2.1 added 20.6.2015
+			'execute'         : 'Spustit', // from v2.1 added 20.6.2015
+			'perm'            : 'Povolení', // from v2.1 added 20.6.2015
+			'mode'            : 'Režim', // from v2.1 added 20.6.2015
+			'emptyFolder'     : 'Složka je prázdná', // from v2.1.6 added 30.12.2015
+			'emptyFolderDrop' : 'Složka je prázdná, přesunout nebo zkontrolovat položky', // from v2.1.6 added 30.12.2015
+			'emptyFolderLTap' : 'Složka je prázdná, dlouhim kliknutím přidáte položky', // from v2.1.6 added 30.12.2015
+			'quality'         : 'Kvalita', // from v2.1.6 added 5.1.2016
+			'autoSync'        : 'Automatická synchronizace',  // from v2.1.6 added 10.1.2016
+			'moveUp'          : 'Přesunout nahoru',  // from v2.1.6 added 18.1.2016
+			'getLink'         : 'Získat URL odkaz', // from v2.1.7 added 9.2.2016
+			'selectedItems'   : 'Vybrané položky ($1)', // from v2.1.7 added 2.19.2016
+			'folderId'        : 'ID složky', // from v2.1.10 added 3.25.2016
+			'offlineAccess'   : 'Povolit přístup offline', // from v2.1.10 added 3.25.2016
+			'reAuth'          : 'Znovu ověřit', // from v2.1.10 added 3.25.2016
+			'nowLoading'      : 'Načítání...', // from v2.1.12 added 4.26.2016
+			'openMulti'       : 'Otevření více souborů', // from v2.1.12 added 5.14.2016
+			'openMultiConfirm': 'Pokoušíte se otevřít soubor $1. Chcete jej otevřít v prohlížeči?', // from v2.1.12 added 5.14.2016
+			'emptySearch'     : 'Výsledky hledání jsou prázdné', // from v2.1.12 added 5.16.2016
+			'editingFile'     : 'Upravujete soubor.', // from v2.1.13 added 6.3.2016
+			'hasSelected'     : 'Vybrali jste $1 položky.', // from v2.1.13 added 6.3.2016
+			'hasClipboard'    : 'Máte $1 položky v schránce.', // from v2.1.13 added 6.3.2016
+			'incSearchOnly'   : 'Inkrementální hledání je pouze z aktuálního zobrazení.', // from v2.1.13 added 6.30.2016
+			'reinstate'       : 'Obnovit', // from v2.1.15 added 3.8.2016
+			'complete'        : '$1 kompletní', // from v2.1.15 added 21.8.2016
+			'contextmenu'     : 'Kontextové menu', // from v2.1.15 added 9.9.2016
+			'pageTurning'     : 'Otáčení stránky', // from v2.1.15 added 10.9.2016
+			'volumeRoots'     : 'Kořeny média', // from v2.1.16 added 16.9.2016
+			'reset'           : 'Reset', // from v2.1.16 added 1.10.2016
+			'bgcolor'         : 'Barva pozadí', // from v2.1.16 added 1.10.2016
+			'colorPicker'     : 'Výběr barvy', // from v2.1.16 added 1.10.2016
+			'8pxgrid'         : '8px mřížka', // from v2.1.16 added 4.10.2016
+			'enabled'         : 'Povoleno', // from v2.1.16 added 4.10.2016
+			'disabled'        : 'Zakázáno', // from v2.1.16 added 4.10.2016
+			'emptyIncSearch'  : 'Výsledky hledání jsou prázdné v aktuálním zobrazení.\\Stisknutím tlačítka [Enter] rozšíříte vyhledávání cíle.', // from v2.1.16 added 5.10.2016
+			'emptyLetSearch'  : 'Výsledky vyhledávání prvního listu jsou v aktuálním zobrazení prázdné.', // from v2.1.23 added 24.3.2017
+			'textLabel'       : 'Nápis textu', // from v2.1.17 added 13.10.2016
+			'minsLeft'        : '$1 minut zůstává', // from v2.1.17 added 13.11.2016
+			'openAsEncoding'  : 'Otevřít pomocí zvoleného kódování', // from v2.1.19 added 2.12.2016
+			'saveAsEncoding'  : 'Uložit s vybraným kódováním', // from v2.1.19 added 2.12.2016
+			'selectFolder'    : 'Vyberte složku', // from v2.1.20 added 13.12.2016
+			'firstLetterSearch': 'Hledání prvního listu', // from v2.1.23 added 24.3.2017
+			'presets'         : 'Předvolby', // from v2.1.25 added 26.5.2017
+			'tooManyToTrash'  : 'Je to příliš mnoho položek, takže se nemohou dostat do koše.', // from v2.1.25 added 9.6.2017
+			'TextArea'        : 'Textarea', // from v2.1.25 added 14.6.2017
+			'folderToEmpty'   : 'Vyprázdnit složku "$1".', // from v2.1.25 added 22.6.2017
+			'filderIsEmpty'   : 'Ve složce "$1" nejsou žádné položky.', // from v2.1.25 added 22.6.2017
+			'preference'      : 'Preference', // from v2.1.26 added 28.6.2017
+			'language'        : 'Nastavte jazyk', // from v2.1.26 added 28.6.2017
+			'clearBrowserData': 'Inicializujte nastavení uložená v tomto prohlížeči', // from v2.1.26 added 28.6.2017
+			'toolbarPref'     : 'Nastavení panelu nástrojů', // from v2.1.27 added 2.8.2017
+
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : 'Neznámý',
+			'kindRoot'        : 'Kořen média', // from v2.1.16 added 16.10.2016
+			'kindFolder'      : 'Složka',
+			'kindAlias'       : 'Alias',
+			'kindAliasBroken' : 'Zlomený alias',
+			// applications
+			'kindApp'         : 'Aplikace',
+			'kindPostscript'  : 'Dokument Postscriptu',
+			'kindMsOffice'    : 'Dokument Microsoft Office',
+			'kindMsWord'      : 'Dokument Microsoft Word',
+			'kindMsExcel'     : 'Dokument Microsoft Excel',
+			'kindMsPP'        : 'Prezentace Microsoft Powerpoint',
+			'kindOO'          : 'Otevřít dokument Office',
+			'kindAppFlash'    : 'Flash aplikace',
+			'kindPDF'         : 'PDF',
+			'kindTorrent'     : 'Soubor BitTorrent',
+			'kind7z'          : 'Archív 7z',
+			'kindTAR'         : 'Archív TAR',
+			'kindGZIP'        : 'Archív GZIP',
+			'kindBZIP'        : 'Archív BZIP',
+			'kindXZ'          : 'Archív XZ',
+			'kindZIP'         : 'Archív ZIP',
+			'kindRAR'         : 'Archív RAR',
+			'kindJAR'         : 'Soubor Java JAR',
+			'kindTTF'         : 'True Type font',
+			'kindOTF'         : 'Open Type font',
+			'kindRPM'         : 'RPM balíček',
+			// texts
+			'kindText'        : 'Textový dokument',
+			'kindTextPlain'   : 'Čistý text',
+			'kindPHP'         : 'PHP zdrojový kód',
+			'kindCSS'         : 'Kaskádové styly',
+			'kindHTML'        : 'HTML dokument',
+			'kindJS'          : 'Javascript zdrojový kód',
+			'kindRTF'         : 'Rich Text Format',
+			'kindC'           : 'C zdrojový kód',
+			'kindCHeader'     : 'C hlavička',
+			'kindCPP'         : 'C++ zdrojový kód',
+			'kindCPPHeader'   : 'C++ hlavička',
+			'kindShell'       : 'Unix shell skript',
+			'kindPython'      : 'Python zdrojový kód',
+			'kindJava'        : 'Java zdrojový kód',
+			'kindRuby'        : 'Ruby zdrojový kód',
+			'kindPerl'        : 'Perl skript',
+			'kindSQL'         : 'SQL zdrojový kód',
+			'kindXML'         : 'Dokument XML',
+			'kindAWK'         : 'AWK zdrojový kód',
+			'kindCSV'         : 'CSV',
+			'kindDOCBOOK'     : 'Docbook XML dokument',
+			'kindMarkdown'    : 'Markdown text', // added 20.7.2015
+			// images
+			'kindImage'       : 'Obrázek',
+			'kindBMP'         : 'Obrázek BMP',
+			'kindJPEG'        : 'Obrázek JPEG',
+			'kindGIF'         : 'Obrázek GIF',
+			'kindPNG'         : 'Obrázek PNG',
+			'kindTIFF'        : 'Obrázek TIFF',
+			'kindTGA'         : 'Obrázek TGA',
+			'kindPSD'         : 'Obrázek Adobe Photoshop',
+			'kindXBITMAP'     : 'Obrázek X bitmapa',
+			'kindPXM'         : 'Obrázek Pixelmator',
+			// media
+			'kindAudio'       : 'Audio sobory',
+			'kindAudioMPEG'   : 'MPEG audio',
+			'kindAudioMPEG4'  : 'MPEG-4 audio',
+			'kindAudioMIDI'   : 'MIDI audio',
+			'kindAudioOGG'    : 'Ogg Vorbis audio',
+			'kindAudioWAV'    : 'WAV audio',
+			'AudioPlaylist'   : 'MP3 playlist',
+			'kindVideo'       : 'Video sobory',
+			'kindVideoDV'     : 'DV video',
+			'kindVideoMPEG'   : 'MPEG video',
+			'kindVideoMPEG4'  : 'MPEG-4 video',
+			'kindVideoAVI'    : 'AVI video',
+			'kindVideoMOV'    : 'Quick Time video',
+			'kindVideoWM'     : 'Windows Media video',
+			'kindVideoFlash'  : 'Flash video',
+			'kindVideoMKV'    : 'Matroska video',
+			'kindVideoOGG'    : 'Ogg video'
+		}
+	};
+}));
+

+ 374 - 0
src/assets/js/i18n/elfinder.da.js

@@ -0,0 +1,374 @@
+/**
+ * Danish translation
+ * @author Mark Topper (webman.io)
+ * @version 2014-12-19
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.da = {
+		translator : 'Mark Topper (webman.io)',
+		language   : 'Language of translation in Danish',
+		direction  : 'ltr',
+		dateFormat : 'd.m.Y H:i',
+		fancyDateFormat : '$1 H:i',
+		messages   : {
+			
+			/********************************** errors **********************************/
+			'error'                : 'Fejl',
+			'errUnknown'           : 'Ukendt fejl.',
+			'errUnknownCmd'        : 'Ukendt kommando.',
+			'errJqui'              : 'Ugyldig jQuery UI konfiguration. Valgbare, som kan trækkes rundt og droppable komponenter skal medtages.',
+			'errNode'              : 'elFinder kræver DOM Element oprettet.',
+			'errURL'               : 'Ugyldig elFinder konfiguration! URL option er ikke sat.',
+			'errAccess'            : 'Adgang nægtet.',
+			'errConnect'           : 'Kan ikke få kontatkt med backend.',
+			'errAbort'             : 'Forbindelse afbrudt.',
+			'errTimeout'           : 'Connection timeout.',
+			'errNotFound'          : 'Backend ikke fundet.',
+			'errResponse'          : 'Ugyldigt backend svar.',
+			'errConf'              : 'Ugyldig backend konfiguration.',
+			'errJSON'              : 'PHP JSON module ikke installeret.',
+			'errNoVolumes'         : 'Læsbare volumener ikke tilgængelig.',
+			'errCmdParams'         : 'Ugyldige parametre for kommando "$1".',
+			'errDataNotJSON'       : 'Data er ikke JSON.',
+			'errDataEmpty'         : 'Data er tomt.',
+			'errCmdReq'            : 'Backend request kræver kommando navn.',
+			'errOpen'              : 'Kunne ikke åbne "$1".',
+			'errNotFolder'         : 'Objektet er ikke en mappe.',
+			'errNotFile'           : 'Objektet er ikke en fil.',
+			'errRead'              : 'Kunne ikke læse "$1".',
+			'errWrite'             : 'Kunne ikke skrive til "$1".',
+			'errPerm'              : 'Adgang nægtet.',
+			'errLocked'            : '"$1" er låst og kan ikke blive omdøbt, flyttet eller slettet.',
+			'errExists'            : 'Der findes allerede en fil ved navn "$1".',
+			'errInvName'           : 'Ugyldigt fil navn.',
+			'errFolderNotFound'    : 'Mappe ikke fundet.',
+			'errFileNotFound'      : 'Fil ikke fundet.',
+			'errTrgFolderNotFound' : 'Mappen "$1" blev ikke fundet.',
+			'errPopup'             : 'Browseren forhindrede åbne popup-vindue. For at åbne filen aktivere popup-vinduer i browserindstillinger.',
+			'errMkdir'             : 'Kunne ikke oprette mappen "$1".',
+			'errMkfile'            : 'Kunne ikke oprette filen "$1".',
+			'errRename'            : 'Kunne ikke omdøbe "$1".',
+			'errCopyFrom'          : 'Kopiering af filer fra volumen "$1" er ikke tilladt.',
+			'errCopyTo'            : 'Kopiering af filer til volumen "$1" er ikke tilladt.',
+			'errUpload'            : 'Upload fejl.',
+			'errUploadFile'        : 'Kunne ikke uploade "$1".',
+			'errUploadNoFiles'     : 'Ingen filer fundet til upload.',
+			'errUploadTotalSize'   : 'Dataen overskrider den maksimalt tilladte størrelse.',
+			'errUploadFileSize'    : 'Fil overskrider den maksimalt tilladte størrelse.',
+			'errUploadMime'        : 'Fil type ikke godkendt.',
+			'errUploadTransfer'    : '"$1" overførsels fejl.',
+			'errNotReplace'        : 'Object "$1" already exists at this location and can not be replaced by object with another type.',
+			'errReplace'           : 'Unable to replace "$1".',
+			'errSave'              : 'Kunne ikke gemme "$1".',
+			'errCopy'              : 'Kunne ikke kopier "$1".',
+			'errMove'              : 'Kunne ikke flytte "$1".',
+			'errCopyInItself'      : 'Kunne ikke kopier "$1" ind i sig selv.',
+			'errRm'                : 'Kunne ikke slette "$1".',
+			'errRmSrc'             : 'Unable remove source file(s).',
+			'errExtract'           : 'Kunne ikke udpakke filer fra "$1".',
+			'errArchive'           : 'Kunne ikke oprette arkiv.',
+			'errArcType'           : 'Arkiv typen er ikke understøttet.',
+			'errNoArchive'         : 'Filen er ikke et arkiv eller har ikke-understøttet arkiv type.',
+			'errCmdNoSupport'      : 'Backend understøtter ikke denne kommando.',
+			'errReplByChild'       : 'Mappen "$1" kan ikke erstattes af en vare, den indeholder.',
+			'errArcSymlinks'       : 'Af sikkerhedsmæssige årsager nægtede at udpakke arkiver der indeholder symlinks eller filer med ikke tilladte navne.', // edited 24.06.2012
+			'errArcMaxSize'        : 'Arkivfiler overskrider den maksimalt tilladte størrelse.',
+			'errResize'            : 'Kunne ikke ændre størrelsen på "$1".',
+			'errResizeDegree'      : 'Invalid rotate degree.',
+			'errResizeRotate'      : 'Unable to rotate image.',
+			'errResizeSize'        : 'Invalid image size.',
+			'errResizeNoChange'    : 'Image size not changed.',
+			'errUsupportType'      : 'Ikke-understøttet fil type.',
+			'errNotUTF8Content'    : 'Filen "$1" er ikke i UTF-8 og kan ikke blive redigeret.',  // added 9.11.2011
+			'errNetMount'          : 'Kunne ikke mounte "$1".',     // added 17.04.2012
+			'errNetMountNoDriver'  : 'Ikke-understøttet protocol.',     // added 17.04.2012
+			'errNetMountFailed'    : 'Mount mislykkedes.',             // added 17.04.2012
+			'errNetMountHostReq'   : 'Host krævet.', // added 18.04.2012
+			'errSessionExpires'    : 'Your session has expired due to inactivity.',
+			'errCreatingTempDir'   : 'Unable to create temporary directory: "$1"',
+			'errFtpDownloadFile'   : 'Unable to download file from FTP: "$1"',
+			'errFtpUploadFile'     : 'Unable to upload file to FTP: "$1"',
+			'errFtpMkdir'          : 'Unable to create remote directory on FTP: "$1"',
+			'errArchiveExec'       : 'Error while archiving files: "$1"',
+			'errExtractExec'       : 'Error while extracting files: "$1"',
+
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'Lav arkiv',
+			'cmdback'      : 'Tilbage',
+			'cmdcopy'      : 'Kopier',
+			'cmdcut'       : 'Klip',
+			'cmddownload'  : 'Download',
+			'cmdduplicate' : 'Dupliker',
+			'cmdedit'      : 'Rediger Fil',
+			'cmdextract'   : 'Udpak filer fra arkiv',
+			'cmdforward'   : 'Frem',
+			'cmdgetfile'   : 'Vælg filer',
+			'cmdhelp'      : 'Om dette produkt',
+			'cmdhome'      : 'Hjem',
+			'cmdinfo'      : 'Information',
+			'cmdmkdir'     : 'Ny mappe',
+			'cmdmkfile'    : 'Ny tekst fil',
+			'cmdopen'      : 'Åben',
+			'cmdpaste'     : 'Indsæt',
+			'cmdquicklook' : 'Vis',
+			'cmdreload'    : 'Reload',
+			'cmdrename'    : 'Omdøb',
+			'cmdrm'        : 'Slet',
+			'cmdsearch'    : 'Find filer',
+			'cmdup'        : 'Gå til forældre mappe',
+			'cmdupload'    : 'Upload filer',
+			'cmdview'      : 'Vis',
+			'cmdresize'    : 'Ændre størrelse',
+			'cmdsort'      : 'Sorter',
+			'cmdnetmount'  : 'Mount network volume',
+			
+			/*********************************** buttons ***********************************/ 
+			'btnClose'  : 'Luk',
+			'btnSave'   : 'Gem',
+			'btnRm'     : 'Slet',
+			'btnApply'  : 'Anvend',
+			'btnCancel' : 'Annuler',
+			'btnNo'     : 'Nej',
+			'btnYes'    : 'Ja',
+			'btnMount'  : 'Mount',
+			
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'Åben mappe',
+			'ntffile'     : 'Åben fil',
+			'ntfreload'   : 'Reload mappe indhold',
+			'ntfmkdir'    : 'Opretter mappe',
+			'ntfmkfile'   : 'Opretter filer',
+			'ntfrm'       : 'Sletter filer',
+			'ntfcopy'     : 'Kopier filer',
+			'ntfmove'     : 'Flytter filer',
+			'ntfprepare'  : 'Forbereder kopering af filer',
+			'ntfrename'   : 'Omdøb filer',
+			'ntfupload'   : 'Uploader filer',
+			'ntfdownload' : 'Downloader filer',
+			'ntfsave'     : 'Gemmer filer',
+			'ntfarchive'  : 'Opretter arkiv',
+			'ntfextract'  : 'Udpakker filer fra arkiv',
+			'ntfsearch'   : 'Søger filer',
+			'ntfresize'   : 'Resizing images',
+			'ntfsmth'     : 'Gør noget >_<',
+			'ntfloadimg'  : 'Loader billede',
+			'ntfnetmount' : 'Montere netværks volume', // added 18.04.2012
+			'ntfdim'      : 'Acquiring image dimension',
+			
+			/************************************ dates **********************************/
+			'dateUnknown' : 'Ukendt',
+			'Today'       : 'I dag',
+			'Yesterday'   : 'I går',
+			'msJan'       : 'Jan',
+			'msFeb'       : 'Feb',
+			'msMar'       : 'Mar',
+			'msApr'       : 'Apr',
+			'msMay'       : 'Maj',
+			'msJun'       : 'Jun',
+			'msJul'       : 'Jul',
+			'msAug'       : 'Aug',
+			'msSep'       : 'Sep',
+			'msOct'       : 'Okt',
+			'msNov'       : 'Nov',
+			'msDec'       : 'Dec',
+			'January'     : 'Januar',
+			'February'    : 'Februar',
+			'March'       : 'Marts',
+			'April'       : 'April',
+			'May'         : 'Maj',
+			'June'        : 'Juni',
+			'July'        : 'Juli',
+			'August'      : 'August',
+			'September'   : 'September',
+			'October'     : 'Oktober',
+			'November'    : 'November',
+			'December'    : 'December',
+			'Sunday'      : 'Søndag', 
+			'Monday'      : 'Mandag', 
+			'Tuesday'     : 'Tirsdag', 
+			'Wednesday'   : 'Onsdag', 
+			'Thursday'    : 'Torsdag', 
+			'Friday'      : 'Fredag', 
+			'Saturday'    : 'Lørdag',
+			'Sun'         : 'Søn', 
+			'Mon'         : 'Man', 
+			'Tue'         : 'Tir', 
+			'Wed'         : 'Ons', 
+			'Thu'         : 'Tor', 
+			'Fri'         : 'Fre', 
+			'Sat'         : 'Lør',
+			
+			/******************************** sort variants ********************************/
+			'sortname'          : 'efter navn', 
+			'sortkind'          : 'efter type', 
+			'sortsize'          : 'efter størrelse',
+			'sortdate'          : 'efter dato',
+			'sortFoldersFirst'  : 'Mapper først', // added 22.06.2012
+			
+			/********************************** messages **********************************/
+			'confirmReq'      : 'Bekræftelse påkrævet',
+			'confirmRm'       : 'Er du sikker på du vil slette valgte filer?<br/>Dette kan ikke blive fortrudt!',
+			'confirmRepl'     : 'Erstat gammel fil med ny fil?',
+			'apllyAll'        : 'Anvend ved alle',
+			'name'            : 'Navn',
+			'size'            : 'Størrelse',
+			'perms'           : 'Rettigheder',
+			'modify'          : 'Ændret',
+			'kind'            : 'Type',
+			'read'            : 'Læse',
+			'write'           : 'Skrive',
+			'noaccess'        : 'ingen adgang',
+			'and'             : 'og',
+			'unknown'         : 'ukendt',
+			'selectall'       : 'Vælg alle filer',
+			'selectfiles'     : 'Vælg fil(er)',
+			'selectffile'     : 'Vælg første fil',
+			'selectlfile'     : 'Vælg sidste fil',
+			'viewlist'        : 'Liste visning',
+			'viewicons'       : 'Ikon visning',
+			'places'          : 'Plaseringer',
+			'calc'            : 'Udregn', 
+			'path'            : 'Sti',
+			'aliasfor'        : 'Alias for',
+			'locked'          : 'Låst',
+			'dim'             : 'Størrelser',
+			'files'           : 'Filer',
+			'folders'         : 'Mapper',
+			'items'           : 'Varer',
+			'yes'             : 'ja',
+			'no'              : 'nej',
+			'link'            : 'Link',
+			'searcresult'     : 'Søge resultater',  
+			'selected'        : 'valgte varer',
+			'about'           : 'Om',
+			'shortcuts'       : 'Genveje',
+			'help'            : 'Hjælp',
+			'webfm'           : 'Internet fil manager',
+			'ver'             : 'Version',
+			'protocolver'     : 'protocol version',
+			'homepage'        : 'Projeckt side',
+			'docs'            : 'Dokumentation',
+			'github'          : 'Fork os på Github',
+			'twitter'         : 'Følg os på twitter',
+			'facebook'        : 'Følg os på facebook',
+			'team'            : 'Hold',
+			'chiefdev'        : 'hovede udvikler',
+			'developer'       : 'udvikler',
+			'contributor'     : 'bidragyder',
+			'maintainer'      : 'vedligeholder',
+			'translator'      : 'oversætter',
+			'icons'           : 'Ikoner',
+			'dontforget'      : 'og glemt ikke at tag dit håndklæde',
+			'shortcutsof'     : 'Gemveje deaktiveret',
+			'dropFiles'       : 'Drop filer hertil',
+			'or'              : 'eller',
+			'selectForUpload' : 'Vælg filer at uploade',
+			'moveFiles'       : 'Flyt filer',
+			'copyFiles'       : 'Kopier filer',
+			'rmFromPlaces'    : 'Slet fra placering',
+			'aspectRatio'     : 'Skærmformat',
+			'scale'           : 'Skala',
+			'width'           : 'Bredte',
+			'height'          : 'Højde',
+			'resize'          : 'Ændre størrelse',
+			'crop'            : 'Beskær',
+			'rotate'          : 'Roter',
+			'rotate-cw'       : 'Roter 90 grader med uret',
+			'rotate-ccw'      : 'Roter 90 grader imod uret',
+			'degree'          : 'Grader',
+			'netMountDialogTitle' : 'Monter netwærks volume', // added 18.04.2012
+			'protocol'            : 'Protokol', // added 18.04.2012
+			'host'                : 'Host', // added 18.04.2012
+			'port'                : 'Port', // added 18.04.2012
+			'user'                : 'Bruger', // added 18.04.2012
+			'pass'                : 'Kodeord', // added 18.04.2012
+			
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : 'Ukendt',
+			'kindFolder'      : 'Mappe',
+			'kindAlias'       : 'Alias',
+			'kindAliasBroken' : 'Ødelagt alias',
+			// applications
+			'kindApp'         : 'Applikation',
+			'kindPostscript'  : 'Postscript dokument',
+			'kindMsOffice'    : 'Microsoft Office dokument',
+			'kindMsWord'      : 'Microsoft Word dokument',
+			'kindMsExcel'     : 'Microsoft Excel dokument',
+			'kindMsPP'        : 'Microsoft Powerpoint præsentation',
+			'kindOO'          : 'Open Office dokument',
+			'kindAppFlash'    : 'Flash applikation',
+			'kindPDF'         : 'Flytbart Dokument Format (PDF)',
+			'kindTorrent'     : 'Bittorrent fil',
+			'kind7z'          : '7z arkiv',
+			'kindTAR'         : 'TAR arkiv',
+			'kindGZIP'        : 'GZIP arkiv',
+			'kindBZIP'        : 'BZIP arkiv',
+			'kindXZ'          : 'XZ arkiv',
+			'kindZIP'         : 'ZIP arkiv',
+			'kindRAR'         : 'RAR arkiv',
+			'kindJAR'         : 'Java JAR fil',
+			'kindTTF'         : 'True Type skrift',
+			'kindOTF'         : 'Open Type skrift',
+			'kindRPM'         : 'RPM pakke',
+			// texts
+			'kindText'        : 'Tekst dokument',
+			'kindTextPlain'   : 'Ren tekst',
+			'kindPHP'         : 'PHP kode',
+			'kindCSS'         : 'Cascading style sheet',
+			'kindHTML'        : 'HTML document',
+			'kindJS'          : 'Javascript kode',
+			'kindRTF'         : 'Rich Tekst Format',
+			'kindC'           : 'C kode',
+			'kindCHeader'     : 'C header kode',
+			'kindCPP'         : 'C++ kode',
+			'kindCPPHeader'   : 'C++ header kode',
+			'kindShell'       : 'Unix shell script',
+			'kindPython'      : 'Python kode',
+			'kindJava'        : 'Java kode',
+			'kindRuby'        : 'Ruby kode',
+			'kindPerl'        : 'Perl script',
+			'kindSQL'         : 'SQL kode',
+			'kindXML'         : 'XML dokument',
+			'kindAWK'         : 'AWK kode',
+			'kindCSV'         : 'Komma seperaret værdier',
+			'kindDOCBOOK'     : 'Docbook XML dokument',
+			// images
+			'kindImage'       : 'Billede',
+			'kindBMP'         : 'BMP billede',
+			'kindJPEG'        : 'JPEG billede',
+			'kindGIF'         : 'GIF billede',
+			'kindPNG'         : 'PNG billede',
+			'kindTIFF'        : 'TIFF billede',
+			'kindTGA'         : 'TGA billede',
+			'kindPSD'         : 'Adobe Photoshop billede',
+			'kindXBITMAP'     : 'X bitmap billede',
+			'kindPXM'         : 'Pixelmator billede',
+			// media
+			'kindAudio'       : 'Lyd medie',
+			'kindAudioMPEG'   : 'MPEG lyd',
+			'kindAudioMPEG4'  : 'MPEG-4 lyd',
+			'kindAudioMIDI'   : 'MIDI lyd',
+			'kindAudioOGG'    : 'Ogg Vorbis lyd',
+			'kindAudioWAV'    : 'WAV lyd',
+			'AudioPlaylist'   : 'MP3 spilleliste',
+			'kindVideo'       : 'Video medie',
+			'kindVideoDV'     : 'DV video',
+			'kindVideoMPEG'   : 'MPEG video',
+			'kindVideoMPEG4'  : 'MPEG-4 video',
+			'kindVideoAVI'    : 'AVI video',
+			'kindVideoMOV'    : 'Hurtig tids video',
+			'kindVideoWM'     : 'Windows Medie video',
+			'kindVideoFlash'  : 'Flash video',
+			'kindVideoMKV'    : 'Matroska video',
+			'kindVideoOGG'    : 'Ogg video'
+		}
+	};
+}));

+ 517 - 0
src/assets/js/i18n/elfinder.de.js

@@ -0,0 +1,517 @@
+/**
+ * Deutsch translation
+ * @author JPG & Mace <dev@flying-datacenter.de>
+ * @author tora60 from pragmaMx.org
+ * @author Timo-Linde <info@timo-linde.de>
+ * @author osworx.net
+ * @author Maximilian Schwarz <info@deefuse.de>
+ * @version 2017-08-07
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.de = {
+		translator : 'JPG & Mace &lt;dev@flying-datacenter.de&gt;, tora60 from pragmaMx.org, Timo-Linde &lt;info@timo-linde.de&gt;, osworx.net, Maximilian Schwarz &lt;info@deefuse.de&gt;',
+		language   : 'Deutsch',
+		direction  : 'ltr',
+		dateFormat : 'd. M Y H:i', // Mar 13, 2012 05:27 PM
+		fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM
+		nonameDateFormat : 'ymd-His', // to apply if upload file is noname: 120513172700
+		messages   : {
+
+			/********************************** errors **********************************/
+			'error'                : 'Fehler',
+			'errUnknown'           : 'Unbekannter Fehler.',
+			'errUnknownCmd'        : 'Unbekannter Befehl.',
+			'errJqui'              : 'Ungültige jQuery UI-Konfiguration. Die Komponenten Selectable, Draggable und Droppable müssen inkludiert sein.',
+			'errNode'              : 'Für elFinder muss das DOM-Element erstellt werden.',
+			'errURL'               : 'Ungültige elFinder Konfiguration! Die URL-Option ist nicht gesetzt.',
+			'errAccess'            : 'Zugriff verweigert.',
+			'errConnect'           : 'Verbindung zum Backend fehlgeschlagen.',
+			'errAbort'             : 'Verbindung abgebrochen.',
+			'errTimeout'           : 'Zeitüberschreitung der Verbindung.',
+			'errNotFound'          : 'Backend nicht gefunden.',
+			'errResponse'          : 'Ungültige Backend-Antwort.',
+			'errConf'              : 'Ungültige Backend-Konfiguration.',
+			'errJSON'              : 'PHP JSON-Modul nicht vorhanden.',
+			'errNoVolumes'         : 'Keine lesbaren Volumes vorhanden.',
+			'errCmdParams'         : 'Ungültige Parameter für Befehl: "$1".',
+			'errDataNotJSON'       : 'Daten nicht im JSON-Format.',
+			'errDataEmpty'         : 'Daten sind leer.',
+			'errCmdReq'            : 'Backend-Anfrage benötigt Befehl.',
+			'errOpen'              : 'Kann "$1" nicht öffnen.',
+			'errNotFolder'         : 'Objekt ist kein Ordner.',
+			'errNotFile'           : 'Objekt ist keine Datei.',
+			'errRead'              : 'Kann "$1" nicht öffnen.',
+			'errWrite'             : 'Kann nicht in "$1" schreiben.',
+			'errPerm'              : 'Zugriff verweigert.',
+			'errLocked'            : '"$1" ist gesperrt und kann nicht umbenannt, verschoben oder gelöscht werden.',
+			'errExists'            : 'Die Datei "$1" existiert bereits.',
+			'errInvName'           : 'Ungültiger Dateiname.',
+			'errInvDirname'        : 'Ungültiger Ordnername.',  // from v2.1.24 added 12.4.2017
+			'errFolderNotFound'    : 'Ordner nicht gefunden.',
+			'errFileNotFound'      : 'Datei nicht gefunden.',
+			'errTrgFolderNotFound' : 'Zielordner "$1" nicht gefunden.',
+			'errPopup'             : 'Der Browser hat das Pop-Up-Fenster unterbunden. Um die Datei zu öffnen, Pop-Ups in den Browser Einstellungen aktivieren.',
+			'errMkdir'             : 'Kann Ordner "$1" nicht erstellen.',
+			'errMkfile'            : 'Kann Datei "$1" nicht erstellen.',
+			'errRename'            : 'Kann "$1" nicht umbenennen.',
+			'errCopyFrom'          : 'Kopieren von Dateien von "$1" nicht erlaubt.',
+			'errCopyTo'            : 'Kopieren von Dateien nach "$1" nicht erlaubt.',
+			'errMkOutLink'         : 'Der Link kann nicht außerhalb der Partition führen.', // from v2.1 added 03.10.2015
+			'errUpload'            : 'Upload-Fehler.',  // old name - errUploadCommon
+			'errUploadFile'        : 'Kann "$1" nicht hochladen.', // old name - errUpload
+			'errUploadNoFiles'     : 'Keine Dateien zum Hochladen gefunden.',
+			'errUploadTotalSize'   : 'Daten überschreiten die Maximalgröße.', // old name - errMaxSize
+			'errUploadFileSize'    : 'Die Datei überschreitet die Maximalgröße.', //  old name - errFileMaxSize
+			'errUploadMime'        : 'Dateityp nicht zulässig.',
+			'errUploadTransfer'    : '"$1" Transfer-Fehler.',
+			'errUploadTemp'        : 'Kann temporäre Datei nicht erstellen.', // from v2.1 added 26.09.2015
+			'errNotReplace'        : 'Das Objekt "$1" existiert bereits an dieser Stelle und kann nicht durch ein Objekt eines anderen Typs ersetzt werden.', // new
+			'errReplace'           : 'Kann "$1" nicht ersetzen.',
+			'errSave'              : 'Kann "$1" nicht speichern.',
+			'errCopy'              : 'Kann "$1" nicht kopieren.',
+			'errMove'              : 'Kann "$1" nicht verschieben.',
+			'errCopyInItself'      : '"$1" kann sich nicht in sich selbst kopieren.',
+			'errRm'                : 'Kann "$1" nicht entfernen.',
+			'errTrash'             : 'Kann Objekt nicht in Mülleimer legen.', // from v2.1.24 added 30.4.2017
+			'errRmSrc'             : 'Kann Quelldatei(en) nicht entfernen.',
+			'errExtract'           : 'Kann "$1" nicht entpacken.',
+			'errArchive'           : 'Archiv konnte nicht erstellt werden.',
+			'errArcType'           : 'Archivtyp nicht untersützt.',
+			'errNoArchive'         : 'Bei der Datei handelt es sich nicht um ein Archiv, oder der Archivtyp wird nicht unterstützt.',
+			'errCmdNoSupport'      : 'Das Backend unterstützt diesen Befehl nicht.',
+			'errReplByChild'       : 'Der Ordner "$1" kann nicht durch etwas ersetzt werden, das ihn selbst enthält.',
+			'errArcSymlinks'       : 'Aus Sicherheitsgründen ist es verboten, ein Archiv mit symbolischen Links zu extrahieren.', // edited 24.06.2012
+			'errArcMaxSize'        : 'Die Archivdateien übersteigen die maximal erlaubte Größe.',
+			'errResize'            : 'Größe von "$1" kann nicht geändert werden.',
+			'errResizeDegree'      : 'Ungültiger Rotationswert.',  // added 7.3.2013
+			'errResizeRotate'      : 'Bild konnte nicht gedreht werden.',  // added 7.3.2013
+			'errResizeSize'        : 'Ungültige Bildgröße.',  // added 7.3.2013
+			'errResizeNoChange'    : 'Bildmaße nicht geändert.',  // added 7.3.2013
+			'errUsupportType'      : 'Nicht unterstützter Dateityp.',
+			'errNotUTF8Content'    : 'Die Datei "$1" ist nicht im UTF-8-Format und kann nicht editiert werden.',  // added 9.11.2011
+			'errNetMount'          : 'Verbindung mit "$1" nicht möglich.', // added 17.04.2012
+			'errNetMountNoDriver'  : 'Nicht unterstütztes Protokoll.',     // added 17.04.2012
+			'errNetMountFailed'    : 'Verbindung fehlgeschlagen.',         // added 17.04.2012
+			'errNetMountHostReq'   : 'Host benötigt.', // added 18.04.2012
+			'errSessionExpires'    : 'Diese Sitzung ist aufgrund von Inaktivität abgelaufen.',
+			'errCreatingTempDir'   : 'Erstellung des temporären Ordners nicht möglich: "$1"',
+			'errFtpDownloadFile'   : 'Download der Datei über FTP nicht möglich: "$1"',
+			'errFtpUploadFile'     : 'Upload der Datei zu FTP nicht möglich: "$1"',
+			'errFtpMkdir'          : 'Erstellung des Remote-Ordners auf FTP nicht möglich: "$1"',
+			'errArchiveExec'       : 'Fehler beim Archivieren der Dateien: "$1"',
+			'errExtractExec'       : 'Fehler beim Extrahieren der Dateien: "$1"',
+			'errNetUnMount'        : 'Kann nicht ausgeworfen werden.', // from v2.1 added 30.04.2012
+			'errConvUTF8'          : 'Kann nicht zu UTF-8 konvertiert werden.', // from v2.1 added 08.04.2014
+			'errFolderUpload'      : 'Versuchen Sie es mit Google Chrome, wenn Sie einen Ordner hochladen möchten.', // from v2.1 added 26.6.2015
+			'errSearchTimeout'     : 'Zeitüberschreitung während der Suche nach "$1". Suchergebnis ist unvollständig.', // from v2.1 added 12.1.2016
+			'errReauthRequire'     : 'Erneutes Anmelden ist erforderlich.', // from v2.1.10 added 24.3.2016
+			'errMaxTargets'        : 'Die maximale Anzahl auswählbarer Elemente ist $1', // from v2.1.17 added 17.10.2016
+			'errRestore'           : 'Konnte nicht von Mülleimer wiederherstellen. Konnte Ziel für wiederherstellung nicht finden.', // from v2.1.24 added 3.5.2017
+			'errEditorNotFound'    : 'Kein Editor für diesen Dateityp gefunden.', // from v2.1.25 added 23.5.2017
+			'errServerError'       : 'Ein Serverseitiger Fehler trat auf.', // from v2.1.25 added 16.6.2017
+			'errEmpty'             : 'Konnte Ordner "$1" nicht Leeren.', // from v2.1.25 added 22.6.2017
+
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'Archiv erstellen',
+			'cmdback'      : 'Zurück',
+			'cmdcopy'      : 'Kopieren',
+			'cmdcut'       : 'Ausschneiden',
+			'cmddownload'  : 'Herunterladen',
+			'cmdduplicate' : 'Duplizieren',
+			'cmdedit'      : 'Datei bearbeiten',
+			'cmdextract'   : 'Archiv entpacken',
+			'cmdforward'   : 'Vorwärts',
+			'cmdgetfile'   : 'Datei auswählen',
+			'cmdhelp'      : 'Über diese Software',
+			'cmdhome'      : 'Startordner',
+			'cmdinfo'      : 'Informationen',
+			'cmdmkdir'     : 'Neuer Ordner',
+			'cmdmkdirin'   : 'In neuen Ordner', // from v2.1.7 added 19.2.2016
+			'cmdmkfile'    : 'Neue Textdatei',
+			'cmdopen'      : 'Öffnen',
+			'cmdpaste'     : 'Einfügen',
+			'cmdquicklook' : 'Vorschau',
+			'cmdreload'    : 'Aktualisieren',
+			'cmdrename'    : 'Umbenennen',
+			'cmdrm'        : 'Löschen',
+			'cmdtrash'     : 'In den Mülleimer legen', //from v2.1.24 added 29.4.2017
+			'cmdrestore'   : 'Wiederherstellen', //from v2.1.24 added 3.5.2017
+			'cmdsearch'    : 'Suchen',
+			'cmdup'        : 'In übergeordneten Ordner wechseln',
+			'cmdupload'    : 'Datei hochladen',
+			'cmdview'      : 'Ansehen',
+			'cmdresize'    : 'Größe ändern & drehen',
+			'cmdsort'      : 'Sortieren',
+			'cmdnetmount'  : 'Verbinde mit Netzwerkspeicher', // added 18.04.2012
+			'cmdnetunmount': 'Auswerfen', // from v2.1 added 30.04.2012
+			'cmdplaces'    : 'Orte', // added 28.12.2014
+			'cmdchmod'     : 'Berechtigung ändern', // from v2.1 added 20.6.2015
+			'cmdopendir'   : 'Einen Ordner öffnen', // from v2.1 added 13.1.2016
+			'cmdcolwidth'  : 'Spaltenbreite zurücksetzen', // from v2.1.13 added 12.06.2016
+			'cmdfullscreen': 'Vollbild', // from v2.1.15 added 03.08.2016
+			'cmdmove'      : 'Verschieben', // from v2.1.15 added 21.08.2016
+			'cmdempty'     : 'Ordner Leeren', // from v2.1.25 added 22.06.2017
+			'cmdundo'      : 'Zückgängig', // from v2.1.27 added 31.07.2017
+			'cmdredo'      : 'Wiederholen', // from v2.1.27 added 31.07.2017
+			'cmdpreference': 'Einstellungen', // from v2.1.27 added 03.08.2017
+
+			/*********************************** buttons ***********************************/
+			'btnClose'  : 'Schließen',
+			'btnSave'   : 'Speichern',
+			'btnRm'     : 'Entfernen',
+			'btnApply'  : 'Anwenden',
+			'btnCancel' : 'Abbrechen',
+			'btnNo'     : 'Nein',
+			'btnYes'    : 'Ja',
+			'btnMount'  : 'Verbinden',  // added 18.04.2012
+			'btnApprove': 'Goto $1 & approve', // from v2.1 added 26.04.2012
+			'btnUnmount': 'Auswerfen', // from v2.1 added 30.04.2012
+			'btnConv'   : 'Konvertieren', // from v2.1 added 08.04.2014
+			'btnCwd'    : 'Arbeitspfad',      // from v2.1 added 22.5.2015
+			'btnVolume' : 'Partition',    // from v2.1 added 22.5.2015
+			'btnAll'    : 'Alle',       // from v2.1 added 22.5.2015
+			'btnMime'   : 'MIME-Typ', // from v2.1 added 22.5.2015
+			'btnFileName':'Dateiname',  // from v2.1 added 22.5.2015
+			'btnSaveClose': 'Speichern & Schließen', // from v2.1 added 12.6.2015
+			'btnBackup' : 'Sicherung', // fromv2.1 added 28.11.2015
+			'btnRename'    : 'Umbenennen',      // from v2.1.24 added 6.4.2017
+			'btnRenameAll' : 'Alle Umbenennen', // from v2.1.24 added 6.4.2017
+			'btnPrevious' : 'Zurück ($1/$2)', // from v2.1.24 added 11.5.2017
+			'btnNext'     : 'Weiter ($1/$2)', // from v2.1.24 added 11.5.2017
+			'btnSaveAs'   : 'Speichern als', // from v2.1.25 added 24.5.2017
+
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'Öffne Ordner',
+			'ntffile'     : 'Öffne Datei',
+			'ntfreload'   : 'Ordnerinhalt neu',
+			'ntfmkdir'    : 'Erstelle Ordner',
+			'ntfmkfile'   : 'Erstelle Dateien',
+			'ntfrm'       : 'Lösche Dateien',
+			'ntfcopy'     : 'Kopiere Dateien',
+			'ntfmove'     : 'Verschiebe Dateien',
+			'ntfprepare'  : 'Kopiervorgang initialisieren',
+			'ntfrename'   : 'Benenne Dateien um',
+			'ntfupload'   : 'Dateien hochladen',
+			'ntfdownload' : 'Dateien herunterladen',
+			'ntfsave'     : 'Speichere Datei',
+			'ntfarchive'  : 'Erstelle Archiv',
+			'ntfextract'  : 'Entpacke Dateien',
+			'ntfsearch'   : 'Suche',
+			'ntfresize'   : 'Bildgrößen ändern',
+			'ntfsmth'     : 'Bin beschäftigt',
+			'ntfloadimg'  : 'Bild laden',
+			'ntfnetmount' : 'Mit Netzwerkspeicher verbinden', // added 18.04.2012
+			'ntfnetunmount': 'Netzwerkspeicher auswerfen', // from v2.1 added 30.04.2012
+			'ntfdim'      : 'Bildgröße erfassen', // added 20.05.2013
+			'ntfreaddir'  : 'Lese Ordner Informationen', // from v2.1 added 01.07.2013
+			'ntfurl'      : 'Hole URL von Link', // from v2.1 added 11.03.2014
+			'ntfchmod'    : 'Ändere Dateiberechtigungen', // from v2.1 added 20.6.2015
+			'ntfpreupload': 'Upload-Dateinamen überprüfen', // from v2.1 added 31.11.2015
+			'ntfzipdl'    : 'Erstelle Datei zum Download', // from v2.1.7 added 23.1.2016
+			'ntfparents'  : 'Beziehe Pfad Informationen', // from v2.1.17 added 2.11.2016
+			'ntfchunkmerge': 'Upload läuft', // from v2.1.17 added 2.11.2016
+			'ntftrash'    : 'Bewege in den Mülleimer', // from v2.1.24 added 2.5.2017
+			'ntfrestore'  : 'Stelle von Mülleimer wieder her', // from v2.1.24 added 3.5.2017
+			'ntfchkdir'   : 'Prüfe Zielordner', // from v2.1.24 added 3.5.2017
+			'ntfundo'     : 'Vorherige Operation rückgängig machen', // from v2.1.27 added 31.07.2017
+			'ntfredo'     : 'Wiederherstellen', // from v2.1.27 added 31.07.2017
+
+			/*********************************** volumes *********************************/
+			'volume_Trash' : 'Mülleimer', //from v2.1.24 added 29.4.2017
+
+			/************************************ dates **********************************/
+			'dateUnknown' : 'unbekannt',
+			'Today'       : 'Heute',
+			'Yesterday'   : 'Gestern',
+			'msJan'       : 'Jan',
+			'msFeb'       : 'Feb',
+			'msMar'       : 'Mär',
+			'msApr'       : 'Apr',
+			'msMay'       : 'Mai',
+			'msJun'       : 'Jun',
+			'msJul'       : 'Jul',
+			'msAug'       : 'Aug',
+			'msSep'       : 'Sep',
+			'msOct'       : 'Okt',
+			'msNov'       : 'Nov',
+			'msDec'       : 'Dez',
+			'January'     : 'Januar',
+			'February'    : 'Februar',
+			'March'       : 'März',
+			'April'       : 'April',
+			'May'         : 'Mai',
+			'June'        : 'Juni',
+			'July'        : 'Juli',
+			'August'      : 'August',
+			'September'   : 'September',
+			'October'     : 'Oktober',
+			'November'    : 'November',
+			'December'    : 'Dezember',
+			'Sunday'      : 'Sonntag',
+			'Monday'      : 'Montag',
+			'Tuesday'     : 'Dienstag',
+			'Wednesday'   : 'Mittwoch',
+			'Thursday'    : 'Donnerstag',
+			'Friday'      : 'Freitag',
+			'Saturday'    : 'Samstag',
+			'Sun'         : 'So',
+			'Mon'         : 'Mo',
+			'Tue'         : 'Di',
+			'Wed'         : 'Mi',
+			'Thu'         : 'Do',
+			'Fri'         : 'Fr',
+			'Sat'         : 'Sa',
+
+			/******************************** sort variants ********************************/
+			'sortname'          : 'nach Name',
+			'sortkind'          : 'nach Art',
+			'sortsize'          : 'nach Größe',
+			'sortdate'          : 'nach Datum',
+			'sortFoldersFirst'  : 'Ordner zuerst',
+			'sortperm'          : 'nach Berechtigung', // from v2.1.13 added 13.06.2016
+			'sortmode'          : 'nach Modus',       // from v2.1.13 added 13.06.2016
+			'sortowner'         : 'nach Besitzer',      // from v2.1.13 added 13.06.2016
+			'sortgroup'         : 'nach Gruppe',      // from v2.1.13 added 13.06.2016
+			'sortAlsoTreeview'  : 'auch Baumansicht',  // from v2.1.15 added 01.08.2016
+
+			/********************************** new items **********************************/
+			'untitled file.txt' : 'Neues Textdokument.txt', // added 10.11.2015
+			'untitled folder'   : 'Neuer Ordner',   // added 10.11.2015
+			'Archive'           : 'Neues Archiv',  // from v2.1 added 10.11.2015
+
+			/********************************** messages **********************************/
+			'confirmReq'      : 'Bestätigung benötigt',
+			'confirmRm'       : 'Sollen die Dateien gelöscht werden?<br/>Dies kann nicht rückgängig gemacht werden!',
+			'confirmRepl'     : 'Datei ersetzen?',
+			'confirmRest'     : 'Replace existing item with the item in trash?', // fromv2.1.24 added 5.5.2017
+			'confirmConvUTF8' : 'Nicht in UTF-8<br/>Zu UTF-8 konvertieren?<br/>Inhalte werden zu UTF-8 konvertiert, wenn Sie speichern.', // from v2.1 added 08.04.2014
+			'confirmNonUTF8'  : 'Die Zeichencodierung dieser Datei konnte nicht erkannt werden. Es muss vorübergehend in UTF-8 zur Bearbeitung konvertiert werden. <br/> Bitte wähle eine Zeichenkodierung dieser Datei aus.', // from v2.1.19 added 28.11.2016
+			'confirmNotSave'  : 'Die Datei wurde geändert.<br/>Sie werden die Änderungen verlieren, wenn Sie nicht speichern.', // from v2.1 added 15.7.2015
+			'confirmTrash'    : 'Sind Sie sicher, dass sie die Elemente in den Mülleimer bewegen wollen?', //from v2.1.24 added 29.4.2017
+			'apllyAll'        : 'Alles bestätigen',
+			'name'            : 'Name',
+			'size'            : 'Größe',
+			'perms'           : 'Berechtigungen',
+			'modify'          : 'Änderungsdatum',
+			'kind'            : 'Typ',
+			'read'            : 'Lesen',
+			'write'           : 'Schreiben',
+			'noaccess'        : 'Kein Zugriff',
+			'and'             : 'und',
+			'unknown'         : 'unbekannt',
+			'selectall'       : 'Alle Dateien auswählen',
+			'selectfiles'     : 'Dateien auswählen',
+			'selectffile'     : 'Erste Datei auswählen',
+			'selectlfile'     : 'Letzte Datei auswählen',
+			'viewlist'        : 'Spaltenansicht',
+			'viewicons'       : 'Symbolansicht',
+			'places'          : 'Orte',
+			'calc'            : 'Berechne',
+			'path'            : 'Pfad',
+			'aliasfor'        : 'Verknüpfung zu',
+			'locked'          : 'Gesperrt',
+			'dim'             : 'Bildgröße',
+			'files'           : 'Dateien',
+			'folders'         : 'Ordner',
+			'items'           : 'Objekte',
+			'yes'             : 'ja',
+			'no'              : 'nein',
+			'link'            : 'Link',
+			'searcresult'     : 'Suchergebnisse',
+			'selected'        : 'Objekte ausgewählt',
+			'about'           : 'Über',
+			'shortcuts'       : 'Tastenkombinationen',
+			'help'            : 'Hilfe',
+			'webfm'           : 'Web-Dateiverwaltung',
+			'ver'             : 'Version',
+			'protocolver'     : 'Protokoll-Version',
+			'homepage'        : 'Projekt-Webseite',
+			'docs'            : 'Dokumentation',
+			'github'          : 'Forke uns auf Github',
+			'twitter'         : 'Folge uns auf twitter',
+			'facebook'        : 'Begleite uns auf facebook',
+			'team'            : 'Team',
+			'chiefdev'        : 'Chefentwickler',
+			'developer'       : 'Entwickler',
+			'contributor'     : 'Unterstützer',
+			'maintainer'      : 'Maintainer',
+			'translator'      : 'Übersetzer',
+			'icons'           : 'Icons',
+			'dontforget'      : 'und vergiss dein Handtuch nicht',
+			'shortcutsof'     : 'Tastenkombinationen deaktiviert',
+			'dropFiles'       : 'Dateien hier ablegen',
+			'or'              : 'oder',
+			'selectForUpload' : 'Dateien zum Upload auswählen',
+			'moveFiles'       : 'Dateien verschieben',
+			'copyFiles'       : 'Dateien kopieren',
+			'restoreFiles'    : 'Elemente wiederherstellen', // from v2.1.24 added 5.5.2017
+			'rmFromPlaces'    : 'Lösche von Orten',
+			'aspectRatio'     : 'Seitenverhältnis',
+			'scale'           : 'Maßstab',
+			'width'           : 'Breite',
+			'height'          : 'Höhe',
+			'resize'          : 'Größe ändern',
+			'crop'            : 'Zuschneiden',
+			'rotate'          : 'Drehen',
+			'rotate-cw'       : 'Drehe 90° im Uhrzeigersinn',
+			'rotate-ccw'      : 'Drehe 90° gegen Uhrzeigersinn',
+			'degree'          : '°',
+			'netMountDialogTitle' : 'verbinde Netzwerkspeicher', // added 18.04.2012
+			'protocol'            : 'Protokoll', // added 18.04.2012
+			'host'                : 'Host', // added 18.04.2012
+			'port'                : 'Port', // added 18.04.2012
+			'user'                : 'Benutzer', // added 18.04.2012
+			'pass'                : 'Passwort', // added 18.04.2012
+			'confirmUnmount'      : 'Möchten Sie "$1" auswerfen?',  // from v2.1 added 30.04.2012
+			'dropFilesBrowser': 'Sie können Dateien in den Browser ziehen', // from v2.1 added 30.05.2012
+			'dropPasteFiles'  : 'Lassen Sie die Dateien hier los', // from v2.1 added 07.04.2014
+			'encoding'        : 'Codierung', // from v2.1 added 19.12.2014
+			'locale'          : 'Lokal',   // from v2.1 added 19.12.2014
+			'searchTarget'    : 'Ziel: $1',                // from v2.1 added 22.5.2015
+			'searchMime'      : 'Suche nach MIME-Typ', // from v2.1 added 22.5.2015
+			'owner'           : 'Besitzer', // from v2.1 added 20.6.2015
+			'group'           : 'Gruppe', // from v2.1 added 20.6.2015
+			'other'           : 'Andere', // from v2.1 added 20.6.2015
+			'execute'         : 'Ausführen', // from v2.1 added 20.6.2015
+			'perm'            : 'Berechtigung', // from v2.1 added 20.6.2015
+			'mode'            : 'Modus', // from v2.1 added 20.6.2015
+			'emptyFolder'     : 'Der Ordner ist leer', // from v2.1.6 added 30.12.2015
+			'emptyFolderDrop' : 'Der Ordner ist leer\\A Fügen Sie Elemente durch Ziehen hinzu', // from v2.1.6 added 30.12.2015
+			'emptyFolderLTap' : 'Der Ordner ist leer\\A Fügen Sie Elemente durch langes Tippen hinzu', // from v2.1.6 added 30.12.2015
+			'quality'         : 'Qualität', // from v2.1.6 added 5.1.2016
+			'autoSync'        : 'Auto sync',  // from v2.1.6 added 10.1.2016
+			'moveUp'          : 'Nach oben bewegen',  // from v2.1.6 added 18.1.2016
+			'getLink'         : 'URL-Link holen', // from v2.1.7 added 9.2.2016
+			'selectedItems'   : 'Ausgewählte Objekte ($1)', // from v2.1.7 added 2.19.2016
+			'folderId'        : 'Ordner-ID', // from v2.1.10 added 3.25.2016
+			'offlineAccess'   : 'Offline-Zugriff erlauben', // from v2.1.10 added 3.25.2016
+			'reAuth'          : 'Erneut anmelden', // from v2.1.10 added 3.25.2016
+			'nowLoading'      : 'Wird geladen...', // from v2.1.12 added 4.26.2016
+			'openMulti'       : 'mehrere Dateien öffnen', // from v2.1.12 added 5.14.2016
+			'openMultiConfirm': 'Sie versuchen, die $1 Dateien zu öffnen. Sind Sie sicher, dass sie im Browser öffnen wollen ?', // from v2.1.12 added 5.14.2016
+			'emptySearch'     : 'Suchergebnisse sind leer', // from v2.1.12 added 5.16.2016
+			'editingFile'     : 'Datei wird bearbeitet.', // from v2.1.13 added 6.3.2016
+			'hasSelected'     : 'Sie haben $1 Objekte ausgewählt.', // from v2.1.13 added 6.3.2016
+			'hasClipboard'    : 'Sie haben $1 Objekte im Clipboard.', // from v2.1.13 added 6.3.2016
+			'incSearchOnly'   : 'Inkrementelle Suche bezieht sich nur auf die aktuelle Ansicht.', // from v2.1.13 added 6.30.2016
+			'reinstate'       : 'Wiederherstellen', // from v2.1.15 added 3.8.2016
+			'complete'        : '$1 abgeschlossen', // from v2.1.15 added 21.8.2016
+			'contextmenu'     : 'Kontextmenü', // from v2.1.15 added 9.9.2016
+			'pageTurning'     : 'Seite umblättern', // from v2.1.15 added 10.9.2016
+			'volumeRoots'     : 'Volume-Rootverzeichnisse', // from v2.1.16 added 16.9.2016
+			'reset'           : 'Neustart', // from v2.1.16 added 1.10.2016
+			'bgcolor'         : 'Hintergrund Farbe', // from v2.1.16 added 1.10.2016
+			'colorPicker'     : 'Farbauswahl', // from v2.1.16 added 1.10.2016
+			'8pxgrid'         : '8px Raster', // from v2.1.16 added 4.10.2016
+			'enabled'         : 'Ein', // from v2.1.16 added 4.10.2016
+			'disabled'        : 'Aus', // from v2.1.16 added 4.10.2016
+			'emptyIncSearch'  : 'Keine Ergebnisse in der aktuellen Anzeige', // from v2.1.16 added 5.10.2016
+			'emptyLetSearch'  : 'First letter search results is empty in current view.', // from v2.1.23 added 24.3.2017
+			'textLabel'       : 'Text label', // from v2.1.17 added 13.10.2016
+			'minsLeft'        : '$1 min linke´s', // from v2.1.17 added 13.11.2016
+			'openAsEncoding'  : 'Reopen with selected encoding', // from v2.1.19 added 2.12.2016
+			'saveAsEncoding'  : 'Save with the selected encoding', // from v2.1.19 added 2.12.2016
+			'selectFolder'    : 'Verzeichnis auswählen', // from v2.1.20 added 13.12.2016
+			'firstLetterSearch': 'Erster Buchstabe suche', // from v2.1.23 added 24.3.2017
+			'presets'         : 'Voreinstellungen', // from v2.1.25 added 26.5.2017
+			'tooManyToTrash'  : 'It\'s too many items so it can\'t into trash.', // from v2.1.25 added 9.6.2017
+			'TextArea'        : 'TextArea', // from v2.1.25 added 14.6.2017
+			'folderToEmpty'   : 'Leere den Ordner "$1".', // from v2.1.25 added 22.6.2017
+			'filderIsEmpty'   : 'There are no items in a folder "$1".', // from v2.1.25 added 22.6.2017
+			'preference'      : 'Einstellungen', // from v2.1.26 added 28.6.2017
+			'language'        : 'Spracheinstellungen', // from v2.1.26 added 28.6.2017
+			'clearBrowserData': 'Initialisiere die Einstellungen, welche in diesem Browser gespeichert sind', // from v2.1.26 added 28.6.2017
+			'toolbarPref'     : 'Toolbar einstellung', // from v2.1.27 added 2.8.2017
+
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : 'Unbekannt',
+			'kindRoot'        : 'Wurzelverzeichnis', // from v2.1.16 added 16.10.2016
+			'kindFolder'      : 'Ordner',
+			'kindAlias'       : 'Verknüpfung',
+			'kindAliasBroken' : 'Defekte Verknüpfung',
+			// applications
+			'kindApp'         : 'Programm',
+			'kindPostscript'  : 'Postscript-Dokument',
+			'kindMsOffice'    : 'Microsoft Office-Dokument',
+			'kindMsWord'      : 'Microsoft Word-Dokument',
+			'kindMsExcel'     : 'Microsoft Excel-Dokument',
+			'kindMsPP'        : 'Microsoft Powerpoint-Präsentation',
+			'kindOO'          : 'Open Office-Dokument',
+			'kindAppFlash'    : 'Flash-Programm',
+			'kindPDF'         : 'Portables Dokumentenformat (PDF)',
+			'kindTorrent'     : 'Bittorrent-Datei',
+			'kind7z'          : '7z-Archiv',
+			'kindTAR'         : 'TAR-Archiv',
+			'kindGZIP'        : 'GZIP-Archiv',
+			'kindBZIP'        : 'BZIP-Archiv',
+			'kindXZ'          : 'XZ-Archiv',
+			'kindZIP'         : 'ZIP-Archiv',
+			'kindRAR'         : 'RAR-Archiv',
+			'kindJAR'         : 'Java JAR-Datei',
+			'kindTTF'         : 'True Type-Schrift',
+			'kindOTF'         : 'Open Type-Schrift',
+			'kindRPM'         : 'RPM-Paket',
+			// texts
+			'kindText'        : 'Text-Dokument',
+			'kindTextPlain'   : 'Text-Dokument',
+			'kindPHP'         : 'PHP-Quelltext',
+			'kindCSS'         : 'Cascading Stylesheet',
+			'kindHTML'        : 'HTML-Dokument',
+			'kindJS'          : 'Javascript-Quelltext',
+			'kindRTF'         : 'Formatierte Textdatei',
+			'kindC'           : 'C-Quelltext',
+			'kindCHeader'     : 'C Header-Quelltext',
+			'kindCPP'         : 'C++ Quelltext',
+			'kindCPPHeader'   : 'C++ Header-Quelltext',
+			'kindShell'       : 'Unix-Shell-Skript',
+			'kindPython'      : 'Python-Quelltext',
+			'kindJava'        : 'Java-Quelltext',
+			'kindRuby'        : 'Ruby-Quelltext',
+			'kindPerl'        : 'Perl Script',
+			'kindSQL'         : 'SQL-Quelltext',
+			'kindXML'         : 'XML-Dokument',
+			'kindAWK'         : 'AWK-Quelltext',
+			'kindCSV'         : 'Komma-separierte Daten',
+			'kindDOCBOOK'     : 'Docbook XML-Dokument',
+			'kindMarkdown'    : 'Markdown-Text', // added 20.7.2015
+			// images
+			'kindImage'       : 'Bild',
+			'kindBMP'         : 'Bitmap-Bild',
+			'kindJPEG'        : 'JPEG-Bild',
+			'kindGIF'         : 'GIF-Bild',
+			'kindPNG'         : 'PNG-Bild',
+			'kindTIFF'        : 'TIFF-Bild',
+			'kindTGA'         : 'TGA-Bild',
+			'kindPSD'         : 'Adobe Photoshop-Dokument',
+			'kindXBITMAP'     : 'X Bitmap-Bild',
+			'kindPXM'         : 'Pixelmator-Bild',
+			// media
+			'kindAudio'       : 'Audiodatei',
+			'kindAudioMPEG'   : 'MPEG Audio',
+			'kindAudioMPEG4'  : 'MPEG-4 Audio',
+			'kindAudioMIDI'   : 'MIDI Audio',
+			'kindAudioOGG'    : 'Ogg Vorbis Audio',
+			'kindAudioWAV'    : 'WAV Audio',
+			'AudioPlaylist'   : 'MP3-Playlist',
+			'kindVideo'       : 'Videodatei',
+			'kindVideoDV'     : 'DV-Film',
+			'kindVideoMPEG'   : 'MPEG-Film',
+			'kindVideoMPEG4'  : 'MPEG4-Film',
+			'kindVideoAVI'    : 'AVI-Film',
+			'kindVideoMOV'    : 'QuickTime-Film',
+			'kindVideoWM'     : 'Windows Media-Film',
+			'kindVideoFlash'  : 'Flash-Film',
+			'kindVideoMKV'    : 'Matroska-Film',
+			'kindVideoOGG'    : 'Ogg-Film'
+		}
+	};
+}));
+

+ 374 - 0
src/assets/js/i18n/elfinder.el.js

@@ -0,0 +1,374 @@
+/**
+ * Greek translation
+ * @author yawd <info@yawd.eu>, Romanos
+ * @version 2014-12-19
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.el = {
+		translator : 'yawd &lt;ingo@yawd.eu&gt;',
+		language   : 'Ελληνικά',
+		direction  : 'ltr',
+		dateFormat : 'd.m.Y H:i',
+		fancyDateFormat : '$1 H:i',
+		messages   : {
+			
+			/********************************** errors **********************************/
+			'error'                : 'Πρόβλημα',
+			'errUnknown'           : 'Άγνωστο πρόβλημα.',
+			'errUnknownCmd'        : 'Άγνωστη εντολή.',
+			'errJqui'              : 'Μη έγκυρη ρύθμιση του jQuery UI. Τα components "selectable", "draggable" και "droppable" πρέπει να περιληφούν.',
+			'errNode'              : 'το elFinder χρειάζεται να έχει δημιουργηθεί το DOM Element.',
+			'errURL'               : 'Μη έγκυρες ρυθμίσεις για το elFinder! η επιλογή URL δεν έχει οριστεί.',
+			'errAccess'            : 'Απαγορεύεται η πρόσβαση.',
+			'errConnect'           : 'Δεν ήταν δυνατή η σύνδεση με το backend.',
+			'errAbort'             : 'Η σύνδεση εγκαταλείφθηκε.',
+			'errTimeout'           : 'Η σύνδεση έληξε.',
+			'errNotFound'          : 'Δε βρέθηκε το backend.',
+			'errResponse'          : 'Μή έγκυρη απάντηση από το backend.',
+			'errConf'              : 'Μη έγκυρες ρυθμίσεις για το backend.',
+			'errJSON'              : 'Το PHP JSON module δεν είναι εγκατεστημένο.',
+			'errNoVolumes'         : 'Δεν βρέθηκαν αναγνώσιμα volumes.',
+			'errCmdParams'         : 'Μη έγκυρες παράμετροι για την εντολή "$1".',
+			'errDataNotJSON'       : 'Τα δεδομένα δεν είναι JSON.',
+			'errDataEmpty'         : 'Τα δεδομένα είναι άδεια.',
+			'errCmdReq'            : 'Το Backend request χρειάζεται όνομα εντολής.',
+			'errOpen'              : 'Δεν ήταν δυνατό να ανοίξει το "$1".',
+			'errNotFolder'         : 'Το αντικείμενο δεν είναι φάκελος.',
+			'errNotFile'           : 'Το αντικείμενο δεν είναι αρχείο.',
+			'errRead'              : 'Δεν ήταν δυνατόν να διαβαστεί το "$1".',
+			'errWrite'             : 'Δεν ήταν δυνατή η εγγραφή στο "$1".',
+			'errPerm'              : 'Απαγορεύεται η πρόσβαση.',
+			'errLocked'            : '"$1" είναι κλειδωμένο και δεν μπορεί να μετονομαστεί, μετακινηθεί ή διαγραφεί.',
+			'errExists'            : 'Το αρχείο με όνομα "$1" υπάρχει ήδη.',
+			'errInvName'           : 'Μη έγκυρο όνομα αρχείου.',
+			'errFolderNotFound'    : 'Ο φάκελος δε βρέθηκε.',
+			'errFileNotFound'      : 'Το αρχείο δε βρέθηκε.',
+			'errTrgFolderNotFound' : 'Ο φάκελος "$1" δε βρέθηκε.',
+			'errPopup'             : 'Το πρόγραμμα πλήγησης εμπόδισε το άνοιγμα αναδυόμενου παραθύρου. Για ανοίξετε το αρχείο ενεργοποιήστε το στις επιλογές του περιηγητή.',
+			'errMkdir'             : 'Η δυμιουργία του φακέλου "$1" δεν ήταν δυνατή.',
+			'errMkfile'            : 'Η δημιουργία του αρχείου "$1" δεν ήταν δυνατή.',
+			'errRename'            : 'Η μετονομασία του αρχείου "$1" δεν ήταν δυνατή.',
+			'errCopyFrom'          : 'Δεν επιτρέπεται η αντιγραφή αρχείων από το volume "$1".',
+			'errCopyTo'            : 'Δεν επιτρέπεται η αντιγραφή αρχείων στο volume "$1".',
+			'errUpload'            : 'Πρόβλημα κατά το upload.',
+			'errUploadFile'        : 'Το αρχείο "$1" δεν μπόρεσε να γίνει upload.',
+			'errUploadNoFiles'     : 'Δεν βρέθηκαν αρχεία για upload.',
+			'errUploadTotalSize'   : 'Τα δεδομένα υπερβαίνουν το επιτρεπόμενο μέγιστο μέγεθος δεδομένων.',
+			'errUploadFileSize'    : 'Το αρχείο υπερβαίνει το επιτρεπόμενο μέγιστο μέγεθος.',
+			'errUploadMime'        : 'Ο τύπος αρχείου δεν επιτρέπεται.',
+			'errUploadTransfer'    : 'Πρόβλημα μεταφοράς για το "$1".',
+			'errNotReplace'        : 'Object "$1" already exists at this location and can not be replaced by object with another type.',
+			'errReplace'           : 'Unable to replace "$1".',
+			'errSave'              : 'Το "$1" δεν ήταν δυνατόν να αποθηκευτεί.',
+			'errCopy'              : 'Δεν ήταν δυνατή η αντιγραφή του "$1".',
+			'errMove'              : 'Δεν ήταν δυνατή η μετακίνηση του "$1".',
+			'errCopyInItself'      : 'Δεν είναι δυνατή η αντιγραφή του "$1" στον εαυτό του.',
+			'errRm'                : 'Δεν ήταν δυνατή η αφαίρεση του "$1".',
+			'errRmSrc'             : 'Unable remove source file(s).',
+			'errExtract'           : 'Δεν ήταν δυνατή η ανάγνωση των αρχείων από "$1".',
+			'errArchive'           : 'Δεν ήταν δυνατή η δημιουργία του αρχείου.',
+			'errArcType'           : 'Ο τύπος αρχείου δεν υποστηρίζεται.',
+			'errNoArchive'         : 'Το αρχείο δεν είναι έγκυρο ή δεν υποστηρίζεται ο τύπος του.',
+			'errCmdNoSupport'      : 'Το backend δεν υποστηρίζει αυτή την εντολή.',
+			'errReplByChild'       : 'Ο φάκελος “$1” δεν μπορεί να αντικατασταθεί από οποιοδήποτε αρχείο περιέχεται σε αυτόν.',
+			'errArcSymlinks'       : 'Για λόγους ασφαλείας δεν είναι δυνατόν να διαβαστούν αρχεία που περιέχουν symlinks orη αρχεία με μη επιτρεπτά ονόματα.', // edited 24.06.2012
+			'errArcMaxSize'        : 'Το μέγεθος του αρχείου υπερβαίνει το μέγιστο επιτρεπτό όριο.',
+			'errResize'            : 'Δεν ήταν δυνατή η αλλαγή μεγέθους του "$1".',
+			'errResizeDegree'      : 'Invalid rotate degree.',
+			'errResizeRotate'      : 'Unable to rotate image.',
+			'errResizeSize'        : 'Invalid image size.',
+			'errResizeNoChange'    : 'Image size not changed.',
+			'errUsupportType'      : 'Ο τύπος αρχείου δεν υποστηρίζεται.',
+			'errNotUTF8Content'    : 'Το αρχείο "$1" δεν είναι UTF-8 και δεν μπορεί να επεξεργασθεί.',  // added 9.11.2011
+			'errNetMount'          : 'Δεν ήταν δυνατή η φόρτωση του "$1".',     // added 17.04.2012
+			'errNetMountNoDriver'  : 'Μη υποστηριζόμενο πρωτόκολο.',     // added 17.04.2012
+			'errNetMountFailed'    : 'Η φόρτωση απέτυχε.',             // added 17.04.2012
+			'errNetMountHostReq'   : 'Απαιτείται host εξυπηρετητής.', // added 18.04.2012
+			'errSessionExpires'    : 'Your session has expired due to inactivity.',
+			'errCreatingTempDir'   : 'Unable to create temporary directory: "$1"',
+			'errFtpDownloadFile'   : 'Unable to download file from FTP: "$1"',
+			'errFtpUploadFile'     : 'Unable to upload file to FTP: "$1"',
+			'errFtpMkdir'          : 'Unable to create remote directory on FTP: "$1"',
+			'errArchiveExec'       : 'Error while archiving files: "$1"',
+			'errExtractExec'       : 'Error while extracting files: "$1"',
+			
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'Δημιουργία archive αρχείου',
+			'cmdback'      : 'Πίσω',
+			'cmdcopy'      : 'Αντιγραφή',
+			'cmdcut'       : 'Αφαίρεση',
+			'cmddownload'  : 'Μεταφόρτωση',
+			'cmdduplicate' : 'Αντίγραφο',
+			'cmdedit'      : 'Επεξεργασία αρχείου',
+			'cmdextract'   : 'Εξαγωγή αρχείων από archive',
+			'cmdforward'   : 'Προώθηση',
+			'cmdgetfile'   : 'Επιλέξτε αρχεία',
+			'cmdhelp'      : 'Σχετικά με αυτό το λογισμικό',
+			'cmdhome'      : 'Home',
+			'cmdinfo'      : 'Πληροφορίες',
+			'cmdmkdir'     : 'Νέος φάκελος',
+			'cmdmkfile'    : 'Νέο αρχείο κειμένου',
+			'cmdopen'      : 'Άνοιγμα',
+			'cmdpaste'     : 'Επικόλληση',
+			'cmdquicklook' : 'Προεπισκόπηση',
+			'cmdreload'    : 'Ανανέωση',
+			'cmdrename'    : 'Μετονομασία',
+			'cmdrm'        : 'Διαγραφή',
+			'cmdsearch'    : 'Έυρεση αρχείων',
+			'cmdup'        : 'Μετάβαση στο γονικό φάκελο',
+			'cmdupload'    : 'Ανέβασμα αρχείων',
+			'cmdview'      : 'Προβολή',
+			'cmdresize'    : 'Αλλαγή μεγέθους εικόνας',
+			'cmdsort'      : 'Ταξινόμηση',
+			'cmdnetmount'  : 'Mount network volume',
+			
+			/*********************************** buttons ***********************************/ 
+			'btnClose'  : 'Κλείσιμο',
+			'btnSave'   : 'Αποθήκευση',
+			'btnRm'     : 'Αφαίρεση',
+			'btnApply'  : 'Εφαρμογή',
+			'btnCancel' : 'Ακύρωση',
+			'btnNo'     : 'Όχι',
+			'btnYes'    : 'Ναι',
+			'btnMount'  : 'Mount',
+			
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'Άνοιγμα φακέλου',
+			'ntffile'     : 'Άνοιγμα αρχείου',
+			'ntfreload'   : 'Ανανέωση περιεχομένων φακέλου',
+			'ntfmkdir'    : 'Δημιουργία φακέλου',
+			'ntfmkfile'   : 'Δημιουργία αρχείων',
+			'ntfrm'       : 'Διαγραφή αρχείων',
+			'ntfcopy'     : 'Αντιγραφή αρχείων',
+			'ntfmove'     : 'Μετακίνηση αρχείων',
+			'ntfprepare'  : 'Προετοιμασία αντιγραφής αρχείων',
+			'ntfrename'   : 'Μετονομασία αρχείων',
+			'ntfupload'   : 'Ανέβασμα αρχείων',
+			'ntfdownload' : 'Μεταφόρτωση αρχείων',
+			'ntfsave'     : 'Αποθήκευση αρχείων',
+			'ntfarchive'  : 'Δημιουργία αρχείου',
+			'ntfextract'  : 'Εξαγωγή αρχείων από το archive',
+			'ntfsearch'   : 'Αναζήτηση αρχείων',
+			'ntfresize'   : 'Resizing images',
+			'ntfsmth'     : 'Σύστημα απασχολημένο>_<',
+			'ntfloadimg'  : 'Φόρτωση εικόνας',
+			'ntfnetmount' : 'Φόρτωση δικτυακού δίσκου', // added 18.04.2012
+			'ntfdim'      : 'Acquiring image dimension',
+			
+			/************************************ dates **********************************/
+			'dateUnknown' : 'άγνωστο',
+			'Today'       : 'Σήμερα',
+			'Yesterday'   : 'Χθές',
+			'msJan'       : 'Ιαν',
+			'msFeb'       : 'Φεβ',
+			'msMar'       : 'Μαρ',
+			'msApr'       : 'Απρ',
+			'msMay'       : 'Μαϊ',
+			'msJun'       : 'Ιουν',
+			'msJul'       : 'Ιουλ',
+			'msAug'       : 'Αυγ',
+			'msSep'       : 'Σεπ',
+			'msOct'       : 'Οκτ',
+			'msNov'       : 'Νοεμ',
+			'msDec'       : 'Δεκ',
+			'January'     : 'Ιανουάριος',
+			'February'    : 'Φεβρουάριος',
+			'March'       : 'Μάρτιος',
+			'April'       : 'Απρίλιος',
+			'May'         : 'Μάϊος',
+			'June'        : 'Ιούνιος',
+			'July'        : 'Ιούλιος',
+			'August'      : 'Αύγουστος',
+			'September'   : 'Σεπτέμβριος',
+			'October'     : 'Οκτώβριος',
+			'November'    : 'Νοέμβριος',
+			'December'    : 'Δεκέμβριος',
+			'Sunday'      : 'Κυριακή', 
+			'Monday'      : 'Δευτέρα', 
+			'Tuesday'     : 'Τρίτη', 
+			'Wednesday'   : 'Τετάρτη', 
+			'Thursday'    : 'Πέμπτη', 
+			'Friday'      : 'Παρασκευή', 
+			'Saturday'    : 'Σάββατο',
+			'Sun'         : 'Κυρ', 
+			'Mon'         : 'Δευ', 
+			'Tue'         : 'Τρ', 
+			'Wed'         : 'Τετ', 
+			'Thu'         : 'Πεμ', 
+			'Fri'         : 'Παρ', 
+			'Sat'         : 'Σαβ',
+			
+			/******************************** sort variants ********************************/
+			'sortname'          : 'κατά όνομα', 
+			'sortkind'          : 'κατά είδος', 
+			'sortsize'          : 'κατά μέγεθος',
+			'sortdate'          : 'κατά ημερομηνία',
+			'sortFoldersFirst'  : 'Πρώτα οι φάκελοι', // added 22.06.2012
+			
+			/********************************** messages **********************************/
+			'confirmReq'      : 'Απαιτείται επιβεβαίωση',
+			'confirmRm'       : 'Είστε σίγουροι πως θέλετε να διαγράψετε τα αρχεία?<br/>Οι αλλαγές θα είναι μόνιμες!',
+			'confirmRepl'     : 'Αντικατάσταση του παλιού αρχείου με το νέο?',
+			'apllyAll'        : 'Εφαρμογή σε όλα',
+			'name'            : 'Όνομα',
+			'size'            : 'Μέγεθος',
+			'perms'           : 'Δικαιώματα',
+			'modify'          : 'Τροποποιήθηκε',
+			'kind'            : 'Είδος',
+			'read'            : 'ανάγνωση',
+			'write'           : 'εγγραφή',
+			'noaccess'        : 'δεν υπάρχει πρόσβαση',
+			'and'             : 'και',
+			'unknown'         : 'άγνωστο',
+			'selectall'       : 'Επιλογή όλων',
+			'selectfiles'     : 'Επιλογή αρχείων',
+			'selectffile'     : 'Επιλογή πρώτου αρχείου',
+			'selectlfile'     : 'Επιλογή τελευταίου αρχείου',
+			'viewlist'        : 'Προβολή λίστας',
+			'viewicons'       : 'Προβολή εικονιδίων',
+			'places'          : 'Τοποθεσίες',
+			'calc'            : 'Υπολογισμός', 
+			'path'            : 'Διαδρομή',
+			'aliasfor'        : 'Ψευδώνυμο για',
+			'locked'          : 'Κλειδωμένο',
+			'dim'             : 'Διαστάσεις',
+			'files'           : 'Αρχεία',
+			'folders'         : 'Φάκελοι',
+			'items'           : 'Αντικείμενα',
+			'yes'             : 'ναι',
+			'no'              : 'όχι',
+			'link'            : 'Σύνδεσμος',
+			'searcresult'     : 'Αποτελέσματα αναζήτησης',  
+			'selected'        : 'επιλεγμένα αντικείμενα',
+			'about'           : 'Σχετικά',
+			'shortcuts'       : 'Συντομεύσεις',
+			'help'            : 'Βοήθεια',
+			'webfm'           : 'εργαλείο διαχείρισης αρχείων από το web',
+			'ver'             : 'Έκδοση',
+			'protocolver'     : 'έκδοση πρωτοκόλλου',
+			'homepage'        : 'Σελίδα του project',
+			'docs'            : 'Τεκμηρίωση (documentation)',
+			'github'          : 'Κάντε μας fork στο Github',
+			'twitter'         : 'Ακολουθήστε μας στο twitter',
+			'facebook'        : 'Βρείτε μας στο facebook',
+			'team'            : 'Ομάδα',
+			'chiefdev'        : 'κύριος προγραμματιστής',
+			'developer'       : 'προγραμματιστής',
+			'contributor'     : 'συνεισφορά',
+			'maintainer'      : 'συντηρητής',
+			'translator'      : 'μεταφραστής',
+			'icons'           : 'Εικονίδια',
+			'dontforget'      : 'και μην ξεχάσεις την πετσέτα σου!',
+			'shortcutsof'     : 'Οι συντομεύσεις είναι απενεργοποιημένες',
+			'dropFiles'       : 'Κάντε drop τα αρχεία εδώ',
+			'or'              : 'ή',
+			'selectForUpload' : 'Επιλογή αρχείων για ανέβασμα',
+			'moveFiles'       : 'Μετακίνηση αρχείων',
+			'copyFiles'       : 'Αντιγραφή αρχείων',
+			'rmFromPlaces'    : 'Αντιγραφή από τοποθεσίες',
+			'aspectRatio'     : 'Αναλογία διαστάσεων',
+			'scale'           : 'Κλίμακα',
+			'width'           : 'Πλάτος',
+			'height'          : 'Ύψος',
+			'resize'          : 'Αλλαγή μεγέθους',
+			'crop'            : 'Crop',
+			'rotate'          : 'Περιστροφή',
+			'rotate-cw'       : 'Περιστροφή κατά 90 βαθμούς CW',
+			'rotate-ccw'      : 'Περιστροφή κατά 90 βαθμούς CCW',
+			'degree'          : 'Βαθμός',
+			'netMountDialogTitle' : 'Φορτώστε δικτυακό δίσκο', // added 18.04.2012
+			'protocol'            : 'Πρωτόκολλο', // added 18.04.2012
+			'host'                : 'Host', // added 18.04.2012
+			'port'                : 'Port', // added 18.04.2012
+			'user'                : 'Χρήστης', // added 18.04.2012
+			'pass'                : 'Κωδικός', // added 18.04.2012
+			
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : 'Άγνωστο',
+			'kindFolder'      : 'Φάκελος',
+			'kindAlias'       : 'Ψευδώνυμο (alias)',
+			'kindAliasBroken' : 'Μη έγκυρο ψευδώνυμο',
+			// applications
+			'kindApp'         : 'Εφαρμογή',
+			'kindPostscript'  : 'Έγγραφο Postscript',
+			'kindMsOffice'    : 'Έγγραφο Microsoft Office',
+			'kindMsWord'      : 'Έγγραφο Microsoft Word',
+			'kindMsExcel'     : 'Έγγραφο Microsoft Excel',
+			'kindMsPP'        : 'Παρουσίαση Microsoft Powerpoint',
+			'kindOO'          : 'Έγγραφο Open Office',
+			'kindAppFlash'    : 'Εφαρμογή Flash',
+			'kindPDF'         : 'Portable Document Format (PDF)',
+			'kindTorrent'     : 'Αρχείο Bittorrent',
+			'kind7z'          : 'Αρχείο 7z',
+			'kindTAR'         : 'Αρχείο TAR',
+			'kindGZIP'        : 'Αρχείο GZIP',
+			'kindBZIP'        : 'Αρχείο BZIP',
+			'kindXZ'          : 'Αρχείο XZ',
+			'kindZIP'         : 'Αρχείο ZIP',
+			'kindRAR'         : 'Αρχείο RAR',
+			'kindJAR'         : 'Αρχείο Java JAR',
+			'kindTTF'         : 'Γραμματοσειρά True Type',
+			'kindOTF'         : 'Γραμματοσειρά Open Type',
+			'kindRPM'         : 'Πακέτο RPM',
+			// texts
+			'kindText'        : 'Έγγραφο κειμένου',
+			'kindTextPlain'   : 'Απλό κείμενο',
+			'kindPHP'         : 'Κώδικας PHP',
+			'kindCSS'         : 'Cascading style sheet',
+			'kindHTML'        : 'Έγγραφο HTML',
+			'kindJS'          : 'Κώδικας Javascript',
+			'kindRTF'         : 'Rich Text Format',
+			'kindC'           : 'Κώδικας C',
+			'kindCHeader'     : 'Κώδικας κεφαλίδας C',
+			'kindCPP'         : 'Κώδικας C++',
+			'kindCPPHeader'   : 'Κώδικας κεφαλίδας C++',
+			'kindShell'       : 'Unix shell script',
+			'kindPython'      : 'Κώδικας Python',
+			'kindJava'        : 'Κώδικας Java',
+			'kindRuby'        : 'Κώδικας Ruby',
+			'kindPerl'        : 'Perl script',
+			'kindSQL'         : 'Κώδικας SQL',
+			'kindXML'         : 'Έγγραφο XML',
+			'kindAWK'         : 'Κώδικας AWK',
+			'kindCSV'         : 'Τιμές χωρισμένες με κόμμα',
+			'kindDOCBOOK'     : 'Έγγραφο Docbook XML',
+			// images
+			'kindImage'       : 'Εικόνα',
+			'kindBMP'         : 'Εικόνα BMP',
+			'kindJPEG'        : 'Εικόνα JPEG',
+			'kindGIF'         : 'Εικόνα GIF',
+			'kindPNG'         : 'Εικόνα PNG',
+			'kindTIFF'        : 'Εικόνα TIFF',
+			'kindTGA'         : 'Εικόνα TGA',
+			'kindPSD'         : 'Εικόνα Adobe Photoshop',
+			'kindXBITMAP'     : 'Εικόνα X bitmap',
+			'kindPXM'         : 'Εικόνα Pixelmator',
+			// media
+			'kindAudio'       : 'Αρχεία ήχου',
+			'kindAudioMPEG'   : 'Ήχος MPEG',
+			'kindAudioMPEG4'  : 'Εικόνα MPEG-4',
+			'kindAudioMIDI'   : 'Εικόνα MIDI',
+			'kindAudioOGG'    : 'Εικόνα Ogg Vorbis',
+			'kindAudioWAV'    : 'Εικόνα WAV',
+			'AudioPlaylist'   : 'MP3 playlist',
+			'kindVideo'       : 'Αρχεία media',
+			'kindVideoDV'     : 'Ταινία DV',
+			'kindVideoMPEG'   : 'Ταινία MPEG',
+			'kindVideoMPEG4'  : 'Ταινία MPEG-4',
+			'kindVideoAVI'    : 'Ταινία AVI',
+			'kindVideoMOV'    : 'Ταινία Quick Time',
+			'kindVideoWM'     : 'Ταινία Windows Media',
+			'kindVideoFlash'  : 'Ταινία flash',
+			'kindVideoMKV'    : 'Ταινία matroska',
+			'kindVideoOGG'    : 'Ταινία ogg'
+		}
+	};
+}));

+ 433 - 0
src/assets/js/i18n/elfinder.es.js

@@ -0,0 +1,433 @@
+/**
+ * Español internacional translation
+ * @author Julián Torres <julian.torres@pabernosmatao.com>
+ * @author Luis Faura <luis@luisfaura.es>
+ * @author Adrià Vilanova <me@avm99963.tk>
+ * @version 2016-03-19
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.es = {
+		translator : 'Julián Torres &lt;julian.torres@pabernosmatao.com&gt;, Luis Faura &lt;luis@luisfaura.es&gt;',
+		language   : 'Español internacional',
+		direction  : 'ltr',
+		dateFormat : 'M d, Y h:i A', // Mar 13, 2012 05:27 PM
+		fancyDateFormat : '$1 h:i A', // will produce smth like: Today 12:25 PM
+		messages   : {
+
+			/********************************** errors **********************************/
+			'error'                : 'Error',
+			'errUnknown'           : 'Error desconocido.',
+			'errUnknownCmd'        : 'Comando desconocido.',
+			'errJqui'              : 'Configuración no válida de jQuery UI. Deben estar incluidos los componentes selectable, draggable y droppable.',
+			'errNode'              : 'elFinder necesita crear elementos DOM.',
+			'errURL'               : '¡Configuración no válida de elFinder! La opción URL no está configurada.',
+			'errAccess'            : 'Acceso denegado.',
+			'errConnect'           : 'No se ha podido conectar con el backend.',
+			'errAbort'             : 'Conexión cancelada.',
+			'errTimeout'           : 'Conexión cancelada por timeout.',
+			'errNotFound'          : 'Backend no encontrado.',
+			'errResponse'          : 'Respuesta no válida del backend.',
+			'errConf'              : 'Configuración no válida del backend .',
+			'errJSON'              : 'El módulo PHP JSON no está instalado.',
+			'errNoVolumes'         : 'No hay disponibles volúmenes legibles.',
+			'errCmdParams'         : 'Parámetros no válidos para el comando "$1".',
+			'errDataNotJSON'       : 'los datos no estan en formato JSON.',
+			'errDataEmpty'         : 'No hay datos.',
+			'errCmdReq'            : 'La petición del backend necesita un nombre de comando.',
+			'errOpen'              : 'No se puede abrir "$1".',
+			'errNotFolder'         : 'El objeto no es una carpeta.',
+			'errNotFile'           : 'El objeto no es un archivo.',
+			'errRead'              : 'No se puede leer "$1".',
+			'errWrite'             : 'No se puede escribir en "$1".',
+			'errPerm'              : 'Permiso denegado.',
+			'errLocked'            : '"$1" está bloqueado y no puede ser renombrado, movido o borrado.',
+			'errExists'            : 'Ya existe un archivo llamado "$1".',
+			'errInvName'           : 'Nombre de archivo no válido.',
+			'errFolderNotFound'    : 'Carpeta no encontrada.',
+			'errFileNotFound'      : 'Archivo no encontrado.',
+			'errTrgFolderNotFound' : 'Carpeta de destino "$1" no encontrada.',
+			'errPopup'             : 'El navegador impide abrir nuevas ventanas. Puede activarlo en las opciones del navegador.',
+			'errMkdir'             : 'No se puede crear la carpeta "$1".',
+			'errMkfile'            : 'No se puede crear el archivo "$1".',
+			'errRename'            : 'No se puede renombrar "$1".',
+			'errCopyFrom'          : 'No se permite copiar archivos desde el volumen "$1".',
+			'errCopyTo'            : 'No se permite copiar archivos al volumen "$1".',
+			'errMkOutLink'         : 'No se ha podido crear el enlace fuera del volumen raíz.', // from v2.1 added 03.10.2015
+			'errUpload'            : 'Error en el envio.',  // old name - errUploadCommon
+			'errUploadFile'        : 'No se ha podido cargar "$1".', // old name - errUpload
+			'errUploadNoFiles'     : 'No hay archivos para subir.',
+			'errUploadTotalSize'   : 'El tamaño de los datos excede el máximo permitido.', // old name - errMaxSize
+			'errUploadFileSize'    : 'El tamaño del archivo excede el máximo permitido.', //  old name - errFileMaxSize
+			'errUploadMime'        : 'Tipo de archivo no permitido.',
+			'errUploadTransfer'    : 'Error al transferir "$1".',
+			'errUploadTemp'        : 'No se ha podido crear el archivo temporal para la subida.', // from v2.1 added 26.09.2015
+			'errNotReplace'        : 'El objeto "$1" ya existe y no puede ser reemplazado por otro con otro tipo.', // new
+			'errReplace'           : 'No se puede reemplazar "$1".',
+			'errSave'              : 'No se puede guardar "$1".',
+			'errCopy'              : 'No se puede copiar "$1".',
+			'errMove'              : 'No se puede mover "$1".',
+			'errCopyInItself'      : 'No se puede copiar "$1" en si mismo.',
+			'errRm'                : 'No se puede borrar "$1".',
+			'errRmSrc'             : 'No se puede(n) borrar los archivo(s).',
+			'errExtract'           : 'No se puede extraer archivos desde "$1".',
+			'errArchive'           : 'No se puede crear el archivo.',
+			'errArcType'           : 'Tipo de archivo no soportado.',
+			'errNoArchive'         : 'El archivo no es de tipo archivo o es de un tipo no soportado.',
+			'errCmdNoSupport'      : 'El backend no soporta este comando.',
+			'errReplByChild'       : 'La carpeta “$1” no puede ser reemplazada por un elemento contenido en ella.',
+			'errArcSymlinks'       : 'Por razones de seguridad no se pueden descomprimir archivos que contengan enlaces simbólicos.', // edited 24.06.2012
+			'errArcMaxSize'        : 'El tamaño del archivo excede el máximo permitido.',
+			'errResize'            : 'Error al redimendionar "$1".',
+			'errResizeDegree'      : 'Grado de rotación inválido.',  // added 7.3.2013
+			'errResizeRotate'      : 'Error al rotar la imagen.',  // added 7.3.2013
+			'errResizeSize'        : 'Tamaño de imagen inválido.',  // added 7.3.2013
+			'errResizeNoChange'    : 'No se puede cambiar el tamaño de la imagen.',  // added 7.3.2013
+			'errUsupportType'      : 'Tipo de archivo no soportado.',
+			'errNotUTF8Content'    : 'El archivo "$1" no está en formato UTF-8 y no puede ser editado.',  // added 9.11.2011
+			'errNetMount'          : 'Fallo al montar "$1".', // added 17.04.2012
+			'errNetMountNoDriver'  : 'Protocolo no soportado.',     // added 17.04.2012
+			'errNetMountFailed'    : 'Fallo al montar.',         // added 17.04.2012
+			'errNetMountHostReq'   : 'Dominio requerido.', // added 18.04.2012
+			'errSessionExpires'    : 'La sesión ha expirado por inactividad',
+			'errCreatingTempDir'   : 'No se ha podido crear al directorio temporal: "$1"',
+			'errFtpDownloadFile'   : 'No se ha podido descargar el archivo desde FTP: "$1"',
+			'errFtpUploadFile'     : 'No se ha podido cargar el archivo a FTP: "$1"',
+			'errFtpMkdir'          : 'No se ha podido crear el directorio remoto en FTP: "$1"',
+			'errArchiveExec'       : 'Se ha producido un error durante la archivación: "$1"',
+			'errExtractExec'       : 'Se ha producido un error durante la extracción de archivos: "$1"',
+			'errNetUnMount'        : 'Imposible montar', // from v2.1 added 30.04.2012
+			'errConvUTF8'          : 'No es convertible a UTF-8', // from v2.1 added 08.04.2014
+			'errFolderUpload'      : 'Prueba con Google Chrome si quieres subir la carpeta entera.', // from v2.1 added 26.6.2015
+			'errSearchTimeout'     : 'Se agotó el tiempo de espera buscando "$1". Los resultados de búsqueda son parciales.', // from v2.1 added 12.1.2016
+
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'Crear archivo',
+			'cmdback'      : 'Atrás',
+			'cmdcopy'      : 'Copiar',
+			'cmdcut'       : 'Cortar',
+			'cmddownload'  : 'Descargar',
+			'cmdduplicate' : 'Duplicar',
+			'cmdedit'      : 'Editar archivo',
+			'cmdextract'   : 'Extraer elementos del archivo',
+			'cmdforward'   : 'Adelante',
+			'cmdgetfile'   : 'Seleccionar archivos',
+			'cmdhelp'      : 'Acerca de este software',
+			'cmdhome'      : 'Inicio',
+			'cmdinfo'      : 'Obtener información',
+			'cmdmkdir'     : 'Nueva carpeta',
+			'cmdmkdirin'   : 'En una nueva carpeta', // from v2.1.7 added 19.2.2016
+			'cmdmkfile'    : 'Nuevo archivo de texto',
+			'cmdopen'      : 'Abrir',
+			'cmdpaste'     : 'Pegar',
+			'cmdquicklook' : 'Previsualizar',
+			'cmdreload'    : 'Recargar',
+			'cmdrename'    : 'Cambiar nombre',
+			'cmdrm'        : 'Eliminar',
+			'cmdsearch'    : 'Buscar archivos',
+			'cmdup'        : 'Ir a la carpeta raíz',
+			'cmdupload'    : 'Subir archivos',
+			'cmdview'      : 'Ver',
+			'cmdresize'    : 'Redimensionar y rotar',
+			'cmdsort'      : 'Ordenar',
+			'cmdnetmount'  : 'Montar volumen en red', // added 18.04.2012
+			'cmdnetunmount': 'Desmontar', // from v2.1 added 30.04.2012
+			'cmdplaces'    : 'A Lugares', // added 28.12.2014
+			'cmdchmod'     : 'Cambiar modo', // from v2.1 added 20.6.2015
+			'cmdopendir'   : 'Abrir una carpeta', // from v2.1 added 13.1.2016
+
+			/*********************************** buttons ***********************************/
+			'btnClose'  : 'Cerrar',
+			'btnSave'   : 'Guardar',
+			'btnRm'     : 'Eliminar',
+			'btnApply'  : 'Aplicar',
+			'btnCancel' : 'Cancelar',
+			'btnNo'     : 'No',
+			'btnYes'    : 'Sí',
+			'btnMount'  : 'Montar',  // added 18.04.2012
+			'btnApprove': 'Ir a $1 y aprobar', // from v2.1 added 26.04.2012
+			'btnUnmount': 'Desmontar', // from v2.1 added 30.04.2012
+			'btnConv'   : 'Convertir', // from v2.1 added 08.04.2014
+			'btnCwd'    : 'Aquí',      // from v2.1 added 22.5.2015
+			'btnVolume' : 'Volumen',    // from v2.1 added 22.5.2015
+			'btnAll'    : 'Todos',       // from v2.1 added 22.5.2015
+			'btnMime'   : 'Tipo MIME', // from v2.1 added 22.5.2015
+			'btnFileName':'Nombre de archivo',  // from v2.1 added 22.5.2015
+			'btnSaveClose': 'Guardar y cerrar', // from v2.1 added 12.6.2015
+			'btnBackup' : 'Copia de seguridad', // fromv2.1 added 28.11.2015
+
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'Abrir carpeta',
+			'ntffile'     : 'Abrir archivo',
+			'ntfreload'   : 'Actualizar contenido de la carpeta',
+			'ntfmkdir'    : 'Creando directorio',
+			'ntfmkfile'   : 'Creando archivos',
+			'ntfrm'       : 'Eliminando archivos',
+			'ntfcopy'     : 'Copiar archivos',
+			'ntfmove'     : 'Mover archivos',
+			'ntfprepare'  : 'Preparar copia de archivos',
+			'ntfrename'   : 'Renombrar archivos',
+			'ntfupload'   : 'Subiendo archivos',
+			'ntfdownload' : 'Descargando archivos',
+			'ntfsave'     : 'Guardar archivos',
+			'ntfarchive'  : 'Creando archivo',
+			'ntfextract'  : 'Extrayendo elementos del archivo',
+			'ntfsearch'   : 'Buscando archivos',
+			'ntfresize'   : 'Redimensionando imágenes',
+			'ntfsmth'     : 'Haciendo algo',
+			'ntfloadimg'  : 'Cargando imagen',
+			'ntfnetmount' : 'Montando volumen en red', // added 18.04.2012
+			'ntfnetunmount': 'Desmontando volumen en red', // from v2.1 added 30.04.2012
+			'ntfdim'      : 'Adquiriendo tamaño de imagen', // added 20.05.2013
+			'ntfreaddir'  : 'Leyendo información de la carpeta', // from v2.1 added 01.07.2013
+			'ntfurl'      : 'Obteniendo URL del enlace', // from v2.1 added 11.03.2014
+			'ntfchmod'    : 'Cambiando el modo de archivo', // from v2.1 added 20.6.2015
+			'ntfpreupload': 'Verificando nombre del archivo subido', // from v2.1 added 31.11.2015
+			'ntfzipdl'    : 'Creando un archivo para descargar', // from v2.1.7 added 23.1.2016
+
+			/************************************ dates **********************************/
+			'dateUnknown' : 'desconocida',
+			'Today'       : 'Hoy',
+			'Yesterday'   : 'Ayer',
+			'msJan'       : 'Ene',
+			'msFeb'       : 'Feb',
+			'msMar'       : 'Mar',
+			'msApr'       : 'Abr',
+			'msMay'       : 'May',
+			'msJun'       : 'Jun',
+			'msJul'       : 'Jul',
+			'msAug'       : 'Ago',
+			'msSep'       : 'Sep',
+			'msOct'       : 'Oct',
+			'msNov'       : 'Nov',
+			'msDec'       : 'Dic',
+			'January'     : 'Enero',
+			'February'    : 'Febrero',
+			'March'       : 'Marzo',
+			'April'       : 'Abril',
+			'May'         : 'Mayo',
+			'June'        : 'Junio',
+			'July'        : 'Julio',
+			'August'      : 'Agosto',
+			'September'   : 'Septiembre',
+			'October'     : 'Octubre',
+			'November'    : 'Noviembre',
+			'December'    : 'Diciembre',
+			'Sunday'      : 'Domingo',
+			'Monday'      : 'Lunes',
+			'Tuesday'     : 'Martes',
+			'Wednesday'   : 'Miércoles',
+			'Thursday'    : 'Jueves',
+			'Friday'      : 'Viernes',
+			'Saturday'    : 'Sábado',
+			'Sun'         : 'Dom',
+			'Mon'         : 'Lun',
+			'Tue'         : 'Mar',
+			'Wed'         : 'Mie',
+			'Thu'         : 'Jue',
+			'Fri'         : 'Vie',
+			'Sat'         : 'Sab',
+
+			/******************************** sort variants ********************************/
+			'sortname'          : 'por nombre',
+			'sortkind'          : 'por tipo',
+			'sortsize'          : 'por tamaño',
+			'sortdate'          : 'por fecha',
+			'sortFoldersFirst'  : 'Las carpetas primero',
+
+			/********************************** new items **********************************/
+			'untitled file.txt' : 'NuevoArchivo.txt', // added 10.11.2015
+			'untitled folder'   : 'NuevaCarpeta',   // added 10.11.2015
+			'Archive'           : 'NuevoArchivo',  // from v2.1 added 10.11.2015
+
+			/********************************** messages **********************************/
+			'confirmReq'      : 'Se necesita confirmación',
+			'confirmRm'       : '¿Está seguro de querer eliminar archivos?<br/>¡Esto no se puede deshacer!',
+			'confirmRepl'     : '¿Reemplazar el antiguo archivo con el nuevo?',
+			'confirmConvUTF8' : 'No está en UTF-8<br/>Convertir a UTF-8?<br/>Los contenidos se guardarán en UTF-8 tras la conversión.', // from v2.1 added 08.04.2014
+			'confirmNotSave'  : 'Ha sido modificado.<br/>Perderás los cambios si no los guardas.', // from v2.1 added 15.7.2015
+			'apllyAll'        : 'Aplicar a todo',
+			'name'            : 'Nombre',
+			'size'            : 'Tamaño',
+			'perms'           : 'Permisos',
+			'modify'          : 'Modificado',
+			'kind'            : 'Tipo',
+			'read'            : 'lectura',
+			'write'           : 'escritura',
+			'noaccess'        : 'sin acceso',
+			'and'             : 'y',
+			'unknown'         : 'desconocido',
+			'selectall'       : 'Seleccionar todos los archivos',
+			'selectfiles'     : 'Seleccionar archivo(s)',
+			'selectffile'     : 'Seleccionar primer archivo',
+			'selectlfile'     : 'Seleccionar último archivo',
+			'viewlist'        : 'ver como lista',
+			'viewicons'       : 'Ver como iconos',
+			'places'          : 'Lugares',
+			'calc'            : 'Calcular',
+			'path'            : 'Ruta',
+			'aliasfor'        : 'Alias para',
+			'locked'          : 'Bloqueado',
+			'dim'             : 'Dimensiones',
+			'files'           : 'Archivos',
+			'folders'         : 'Carpetas',
+			'items'           : 'Elementos',
+			'yes'             : 'sí',
+			'no'              : 'no',
+			'link'            : 'Enlace',
+			'searcresult'     : 'Resultados de la búsqueda',
+			'selected'        : 'elementos seleccionados',
+			'about'           : 'Acerca',
+			'shortcuts'       : 'Accesos directos',
+			'help'            : 'Ayuda',
+			'webfm'           : 'Administrador de archivos web',
+			'ver'             : 'Versión',
+			'protocolver'     : 'versión del protocolo',
+			'homepage'        : 'Inicio',
+			'docs'            : 'Documentación',
+			'github'          : 'Bifúrcanos en Github',
+			'twitter'         : 'Síguenos en Twitter',
+			'facebook'        : 'Únete a nosotros en Facebook',
+			'team'            : 'Equipo',
+			'chiefdev'        : 'desarrollador jefe',
+			'developer'       : 'desarrollador',
+			'contributor'     : 'contribuyente',
+			'maintainer'      : 'mantenedor',
+			'translator'      : 'traductor',
+			'icons'           : 'Iconos',
+			'dontforget'      : 'y no olvide traer su toalla',
+			'shortcutsof'     : 'Accesos directos desactivados',
+			'dropFiles'       : 'Arrastre archivos aquí',
+			'or'              : 'o',
+			'selectForUpload' : 'Seleccione archivos para subir',
+			'moveFiles'       : 'Mover archivos',
+			'copyFiles'       : 'Copiar archivos',
+			'rmFromPlaces'    : 'Eliminar en sus ubicaciones',
+			'aspectRatio'     : 'Relación de aspecto',
+			'scale'           : 'Escala',
+			'width'           : 'Ancho',
+			'height'          : 'Alto',
+			'resize'          : 'Redimensionar',
+			'crop'            : 'Recortar',
+			'rotate'          : 'Rotar',
+			'rotate-cw'       : 'Rotar 90 grados en sentido horario',
+			'rotate-ccw'      : 'Rotar 90 grados en sentido antihorario',
+			'degree'          : '°',
+			'netMountDialogTitle' : 'Montar volumen en red', // added 18.04.2012
+			'protocol'            : 'Protocolo', // added 18.04.2012
+			'host'                : 'Dominio', // added 18.04.2012
+			'port'                : 'Puerto', // added 18.04.2012
+			'user'                : 'Usuario', // added 18.04.2012
+			'pass'                : 'Contraseña', // added 18.04.2012
+			'confirmUnmount'      : '¿Desmontar $1?',  // from v2.1 added 30.04.2012
+			'dropFilesBrowser': 'Arrastra o pega archivos del navegador', // from v2.1 added 30.05.2012
+			'dropPasteFiles'  : 'Arrastra o pega enlaces URL aquí', // from v2.1 added 07.04.2014
+			'encoding'        : 'Codificando', // from v2.1 added 19.12.2014
+			'locale'          : 'Locale',   // from v2.1 added 19.12.2014
+			'searchTarget'    : 'Destino: $1',                // from v2.1 added 22.5.2015
+			'searchMime'      : 'Buscar entrada por tipo MIME', // from v2.1 added 22.5.2015
+			'owner'           : 'Propietario', // from v2.1 added 20.6.2015
+			'group'           : 'Grupo', // from v2.1 added 20.6.2015
+			'other'           : 'Otro', // from v2.1 added 20.6.2015
+			'execute'         : 'Ejecutar', // from v2.1 added 20.6.2015
+			'perm'            : 'Permiso', // from v2.1 added 20.6.2015
+			'mode'            : 'Modo', // from v2.1 added 20.6.2015
+			'emptyFolder'     : 'La carpeta está vacía', // from v2.1.6 added 30.12.2015
+			'emptyFolderDrop' : 'La carpeta está vacía\\A Arrastrar para añadir elementos', // from v2.1.6 added 30.12.2015
+			'emptyFolderLTap' : 'La carpeta está vacía\\A Presiona durante un rato para añadir elementos', // from v2.1.6 added 30.12.2015
+			'quality'         : 'Calidad', // from v2.1.6 added 5.1.2016
+			'autoSync'        : 'Sincronización automática',  // from v2.1.6 added 10.1.2016
+			'moveUp'          : 'Mover arriba',  // from v2.1.6 added 18.1.2016
+			'getLink'         : 'Obtener enlace', // from v2.1.7 added 9.2.2016
+			'selectedItems'   : 'Elementos seleccionados ($1)', // from v2.1.7 added 2.19.2016
+
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : 'Desconocido',
+			'kindFolder'      : 'Carpeta',
+			'kindAlias'       : 'Alias',
+			'kindAliasBroken' : 'Alias roto',
+			// applications
+			'kindApp'         : 'Aplicación',
+			'kindPostscript'  : 'Documento Postscript',
+			'kindMsOffice'    : 'Documento Microsoft Office',
+			'kindMsWord'      : 'Documento Microsoft Word',
+			'kindMsExcel'     : 'Documento Microsoft Excel',
+			'kindMsPP'        : 'Presentación Microsoft Powerpoint',
+			'kindOO'          : 'Documento Open Office',
+			'kindAppFlash'    : 'Aplicación Flash',
+			'kindPDF'         : 'Documento PDF',
+			'kindTorrent'     : 'Archivo Bittorrent',
+			'kind7z'          : 'Archivo 7z',
+			'kindTAR'         : 'Archivo TAR',
+			'kindGZIP'        : 'Archivo GZIP',
+			'kindBZIP'        : 'Archivo BZIP',
+			'kindXZ'          : 'Archivo XZ',
+			'kindZIP'         : 'Archivo ZIP',
+			'kindRAR'         : 'Archivo RAR',
+			'kindJAR'         : 'Archivo Java JAR',
+			'kindTTF'         : 'Fuente True Type',
+			'kindOTF'         : 'Fuente Open Type',
+			'kindRPM'         : 'Paquete RPM',
+			// texts
+			'kindText'        : 'Documento de texto',
+			'kindTextPlain'   : 'Texto plano',
+			'kindPHP'         : 'Código PHP',
+			'kindCSS'         : 'Hoja de estilos CSS',
+			'kindHTML'        : 'Documento HTML',
+			'kindJS'          : 'Código Javascript',
+			'kindRTF'         : 'Documento RTF',
+			'kindC'           : 'Código C',
+			'kindCHeader'     : 'Código C cabeceras',
+			'kindCPP'         : 'Código C++',
+			'kindCPPHeader'   : 'Código C++ cabeceras',
+			'kindShell'       : 'Script de terminal de Unix',
+			'kindPython'      : 'Código Python',
+			'kindJava'        : 'Código Java',
+			'kindRuby'        : 'Código Ruby',
+			'kindPerl'        : 'Código Perl',
+			'kindSQL'         : 'Código QL',
+			'kindXML'         : 'Documento XML',
+			'kindAWK'         : 'Código AWK',
+			'kindCSV'         : 'Documento CSV (valores separados por comas)',
+			'kindDOCBOOK'     : 'Documento Docbook XML',
+			'kindMarkdown'    : 'Texto Markdown', // added 20.7.2015
+			// images
+			'kindImage'       : 'Imagen',
+			'kindBMP'         : 'Imagen BMP',
+			'kindJPEG'        : 'Imagen JPEG',
+			'kindGIF'         : 'Imagen GIF',
+			'kindPNG'         : 'Imagen PNG',
+			'kindTIFF'        : 'Imagen TIFF',
+			'kindTGA'         : 'Imagen TGA',
+			'kindPSD'         : 'Imagen Adobe Photoshop',
+			'kindXBITMAP'     : 'Imagen X bitmap',
+			'kindPXM'         : 'Imagen Pixelmator',
+			// media
+			'kindAudio'       : 'Archivo de audio',
+			'kindAudioMPEG'   : 'Audio MPEG',
+			'kindAudioMPEG4'  : 'Audio MPEG-4',
+			'kindAudioMIDI'   : 'Audio MIDI',
+			'kindAudioOGG'    : 'Audio Ogg Vorbis',
+			'kindAudioWAV'    : 'Audio WAV',
+			'AudioPlaylist'   : 'Lista de reproducción MP3',
+			'kindVideo'       : 'Archivo de video',
+			'kindVideoDV'     : 'Película DV',
+			'kindVideoMPEG'   : 'Película MPEG',
+			'kindVideoMPEG4'  : 'Película MPEG-4',
+			'kindVideoAVI'    : 'Película AVI',
+			'kindVideoMOV'    : 'Película Quick Time',
+			'kindVideoWM'     : 'Película Windows Media',
+			'kindVideoFlash'  : 'Película Flash',
+			'kindVideoMKV'    : 'Película Matroska MKV',
+			'kindVideoOGG'    : 'Película Ogg'
+		}
+	};
+}));
+

+ 374 - 0
src/assets/js/i18n/elfinder.fa.js

@@ -0,0 +1,374 @@
+/**
+ * Persian-Farsi Translation
+ * @author Keyhan Mohammadpour <keyhan_universityworks@yahoo.com>
+ * @version 2014-12-19
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.fa = {
+		translator : 'Keyhan Mohammadpour &lt;keyhan_universityworks@yahoo.com&gt;',
+		language   : 'فارسی',
+		direction  : 'rtl',
+		dateFormat : 'd.m.Y H:i',
+		fancyDateFormat : '$1 H:i',
+		messages   : {
+
+			/********************************** errors **********************************/
+			'error'                : 'خطا',
+			'errUnknown'           : 'خطای ناشناخته .',
+			'errUnknownCmd'        : 'دستور ناشناخته .',
+			'errJqui'              : 'تنظیمات کتابخانه JQuery UI شما به درستی تنظیم نشده است . این کتابخانه بایستی شامل Resizable ، Draggable و Droppable باشد .',
+			'errNode'              : 'شی elfinder به درستی ایجاد نشده است .',
+			'errURL'               : 'تنظیمات elfinder شما به درستی انجام نشده است . تنظیم Url را به درستی انجام دهید .',
+			'errAccess'            : 'محدودیت سطح دسترسی',
+			'errConnect'           : 'Unable to connect to backend.',
+			'errAbort'             : 'ارتباط قطع شده است .',
+			'errTimeout'           : 'مهلت زمانی Connection شما به انتها رسیده ایت .',
+			'errNotFound'          : 'تنظیم Backend یافت نشد .',
+			'errResponse'          : 'پاسخ دریافتی از Backend صحیح نمی باشد .',
+			'errConf'              : 'تنطیمات Backend به درستی انجام نشده است .',
+			'errJSON'              : 'ماژول PHP JSON نصب نگردیده است .',
+			'errNoVolumes'         : 'درایوهای قابل خواندن یافت نشدند .',
+			'errCmdParams'         : 'پارامترهای دستور "$1" به صورت صحیح داده نشده است .',
+			'errDataNotJSON'       : 'داده ها در قالب JSON نمی باشند .',
+			'errDataEmpty'         : 'داده ها تهی می باشند .',
+			'errCmdReq'            : 'درخواست از سمت Backend نیازمند نام دستور می باشد .',
+			'errOpen'              : 'قادر به باز نمودن "$1" نمی باشد .',
+			'errNotFolder'         : 'شی به صورت پوشه نمی باشد .',
+			'errNotFile'           : 'شی به صورت فایل نمی باشد .',
+			'errRead'              : 'قادر به خواندن "$1" نمی باشد .',
+			'errWrite'             : 'قادر به نوشتن در درون "$1" نمی باشد .',
+			'errPerm'              : 'شما مجاز به انجام این عمل نمی باشید .',
+			'errLocked'            : '"$1"قفل گردیده است و شما قادر به تغییر نام ، حذف و یا جابجایی آن نمی باشید .',
+			'errExists'            : 'فایلی با نام "$1" هم اکنون وجود دارد .',
+			'errInvName'           : 'نام انتخابی شما صحیح نمی باشد .',
+			'errFolderNotFound'    : 'پوشه مورد نظر شما یافت نشد .',
+			'errFileNotFound'      : 'فایل مورد نظر شما یافت نشد .',
+			'errTrgFolderNotFound' : 'پوشه مقصد با نام "$1" یافت نشد .',
+			'errPopup'             : 'مرورگر شما ار باز شدن پنجره popup جلوگیری می نماید ، اطفا تنطیم مربوطه را در مرورگر خود فعال نمایید .',
+			'errMkdir'             : 'قادر به ایجاد نمودن پوشه ای با نام "$1" نمی باشد .',
+			'errMkfile'            : 'قادر به ابجاد نمودن فایلی با نبم "$1" نمی باشد .',
+			'errRename'            : 'قادر به تغییر نام فایل "$1" نمی باشد .',
+			'errCopyFrom'          : 'کپی نمودن از درایو با نام "$1" امکان پذیر نمی باشد .',
+			'errCopyTo'            : 'کپی نمودن به درایو با نام "$1" امکان پذیر نمی باشد .',
+			'errUpload'            : 'خطای بارگذاری ',
+			'errUploadFile'        : 'قادر به بارگذاری "$1" نمی باشد .',
+			'errUploadNoFiles'     : 'هیچ فایلی برای بارگذاری یافت نشد .',
+			'errUploadTotalSize'   : 'حجم داده ها بیشتر از حد مجاز تعیین شده است .',
+			'errUploadFileSize'    : 'حجم فایل بیشتر از حد مجاز تعیین شده است .',
+			'errUploadMime'        : 'نوع فایل انتخابی شما مجاز نمی باشد .',
+			'errUploadTransfer'    : 'در تبادل "$1" خطایی رخ داده است .',
+			'errNotReplace'        : 'Object "$1" already exists at this location and can not be replaced by object with another type.',
+			'errReplace'           : 'Unable to replace "$1".',
+			'errSave'              : 'قادر به دخیره کردن "$1" نمی باشد .',
+			'errCopy'              : 'قادر به کپی نمودن "$1" نمی باشد .',
+			'errMove'              : 'قادر به جابجایی "$1" نمی باشد .',
+			'errCopyInItself'      : 'قادر به کپی نمودن "$1" در درون خودش نمی باشد .',
+			'errRm'                : 'قادر به حذف نمودن "$1" نمی باشد .',
+			'errRmSrc'             : 'Unable remove source file(s).',
+			'errExtract'           : 'قادر به استخراج فایل فشرده "$1" نمی باشد .',
+			'errArchive'           : 'قادر به ایجاد آرشیو نمی باشد .',
+			'errArcType'           : 'نوع ناشناخته برای آرشیو .',
+			'errNoArchive'         : 'قادر به آرشیو نمودن فایل نمی باشد و یا نوع فایل در نوع های آرشیو تعیین نشده است .',
+			'errCmdNoSupport'      : 'Backend قادر به پشتیبانی از این دستور نمی باشد .',
+			'errReplByChild'       : 'پوشه با نام "$1"قادر به تغییر با محتویات درونی خود نمی باشد .',
+			'errArcSymlinks'       : 'به دلایل مسائل امنیتی قادر به استخراج آرشیو های دارای symlinks نمی باشد .',
+			'errArcMaxSize'        : 'فایل های آرشیو شده به حداکثر اندازه تعیین شده رسیده اند .',
+			'errResize'            : 'قادر به تغییر اندازه "$1" نمی باشد .',
+			'errResizeDegree'      : 'Invalid rotate degree.',
+			'errResizeRotate'      : 'Unable to rotate image.',
+			'errResizeSize'        : 'Invalid image size.',
+			'errResizeNoChange'    : 'Image size not changed.',
+			'errUsupportType'      : 'نوع فایل شما قابل پشتیبانی نمی باشد .',
+			'errNotUTF8Content'    : 'File "$1" is not in UTF-8 and cannot be edited.',
+			'errNetMount'          : 'Unable to mount "$1".',
+			'errNetMountNoDriver'  : 'Unsupported protocol.',
+			'errNetMountFailed'    : 'Mount failed.',
+			'errNetMountHostReq'   : 'Host required.',
+			'errSessionExpires'    : 'Your session has expired due to inactivity.',
+			'errCreatingTempDir'   : 'Unable to create temporary directory: "$1"',
+			'errFtpDownloadFile'   : 'Unable to download file from FTP: "$1"',
+			'errFtpUploadFile'     : 'Unable to upload file to FTP: "$1"',
+			'errFtpMkdir'          : 'Unable to create remote directory on FTP: "$1"',
+			'errArchiveExec'       : 'Error while archiving files: "$1"',
+			'errExtractExec'       : 'Error while extracting files: "$1"',
+			
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'ساختن آرشیو',
+			'cmdback'      : 'قبلی',
+			'cmdcopy'      : 'کپی',
+			'cmdcut'       : 'جابجایی',
+			'cmddownload'  : 'بارگیری',
+			'cmdduplicate' : 'تکثیر نمودن',
+			'cmdedit'      : 'ویرایش فایل',
+			'cmdextract'   : 'از حالت فشرده خارج نمودن',
+			'cmdforward'   : 'بعدی',
+			'cmdgetfile'   : 'انتخاب فایل ها',
+			'cmdhelp'      : 'درباره این فایل',
+			'cmdhome'      : 'صفحه اصلی',
+			'cmdinfo'      : 'دریافت اطلاعات',
+			'cmdmkdir'     : 'پوشه جدید',
+			'cmdmkfile'    : 'فایل متنی جدید',
+			'cmdopen'      : 'باز نمودن',
+			'cmdpaste'     : 'چسباندن',
+			'cmdquicklook' : 'پیش نمایش',
+			'cmdreload'    : 'بارگذاری مجدد',
+			'cmdrename'    : 'تغییر نام',
+			'cmdrm'        : 'حذف',
+			'cmdsearch'    : 'جستجو',
+			'cmdup'        : 'رفتن به پوشه والد',
+			'cmdupload'    : 'بارگذاری فایل ها',
+			'cmdview'      : 'نمایش',
+			'cmdresize'    : 'تغییر اندازه فایل',
+			'cmdsort'      : 'مرتب سازی',
+			'cmdnetmount'  : 'Mount network volume',
+
+			/*********************************** buttons ***********************************/ 
+			'btnClose'  : 'بستن',
+			'btnSave'   : 'ذخیره',
+			'btnRm'     : 'حذف',
+			'btnApply'  : 'اعمال',
+			'btnCancel' : 'انصراف',
+			'btnNo'     : 'خیر',
+			'btnYes'    : 'بلی',
+			'btnMount'  : 'Mount',
+
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'باز نمودن پوشه',
+			'ntffile'     : 'باز نمدن فایل',
+			'ntfreload'   : 'بازخوانی مجدد محتویات پوشه',
+			'ntfmkdir'    : 'ساختن پوشه',
+			'ntfmkfile'   : 'ساختن فایل',
+			'ntfrm'       : 'حذف فایل',
+			'ntfcopy'     : 'کپی فایل',
+			'ntfmove'     : 'انتقال فایل',
+			'ntfprepare'  : 'آماده شدن برای کپی نمودن فایل ها',
+			'ntfrename'   : 'تغییر نام فایل',
+			'ntfupload'   : 'بارگذاری فایل',
+			'ntfdownload' : 'بارگیری فایل',
+			'ntfsave'     : 'ذخیره نمودن فایل ها',
+			'ntfarchive'  : 'در حال ساختن آرشیو',
+			'ntfextract'  : 'استخراج فایل ها از آرشیو',
+			'ntfsearch'   : 'در حال جستجو فایل ها',
+			'ntfresize'   : 'Resizing images',
+			'ntfsmth'     : 'درحال انجام عملیات ....',
+			'ntfloadimg'  : 'در حال لود نمودن تصویر',
+			'ntfnetmount' : 'Mounting network volume',
+			'ntfdim'      : 'Acquiring image dimension',
+			
+			/************************************ dates **********************************/
+			'dateUnknown' : 'ناشناخته',
+			'Today'       : 'امروز',
+			'Yesterday'   : 'دیروز',
+			'msJan'       : 'ژانویه',
+			'msFeb'       : 'فوریه',
+			'msMar'       : 'مارس',
+			'msApr'       : 'آوریل',
+			'msMay'       : 'مه',
+			'msJun'       : 'ژوئن',
+			'msJul'       : 'ژوئیه',
+			'msAug'       : 'اوت',
+			'msSep'       : 'سپتامبر',
+			'msOct'       : 'اکتبر',
+			'msNov'       : 'نوامبر',
+			'msDec'       : 'دسامبر',
+			'January'     : 'ژانویه',
+			'February'    : 'فوریه',
+			'March'       : 'مارس',
+			'April'       : 'آوریل',
+			'May'         : 'مه',
+			'June'        : 'ژوئن',
+			'July'        : 'ژوئیه',
+			'August'      : 'اوت',
+			'September'   : 'سپتامبر',
+			'October'     : 'اکتبر',
+			'November'    : 'نوامبر',
+			'December'    : 'دسامبر',
+			'Sunday'      : 'یک شنبه',
+			'Monday'      : 'دوشنبه',
+			'Tuesday'     : 'سه شنبه',
+			'Wednesday'   : 'چهار شنبه',
+			'Thursday'    : 'پنج شنبه',
+			'Friday'      : 'جمعه',
+			'Saturday'    : 'شنبه',
+			'Sun'         : 'یک شنبه',
+			'Mon'         : 'دو شنبه',
+			'Tue'         : 'سه شنبه',
+			'Wed'         : 'چهار شنبه',
+			'Thu'         : 'پنج شنبه',
+			'Fri'         : 'جمعه',
+			'Sat'         : 'شنبه',
+			
+			/******************************** sort variants ********************************/
+			'sortname'          : 'بر اساس نام',
+			'sortkind'          : 'بر اساس نوع',
+			'sortsize'          : 'بر اساس اندازه',
+			'sortdate'          : 'بر اساس تاریخ',
+			'sortFoldersFirst'  : 'Folders first',
+
+			/********************************** messages **********************************/
+			'confirmReq'      : 'تاییدیه نهایی نیاز است .',
+			'confirmRm'       : 'آیا مطمثن به انجام عملیات حذف می باشید ؟ آیتم های حدف شده قابل بازیابی نمی باشند  !',
+			'confirmRepl'     : 'آیا فایل قدیم با فایل جدید جایگزین شود ؟',
+			'apllyAll'        : 'اعمال تغییرات به همه',
+			'name'            : 'نام',
+			'size'            : 'اندازه',
+			'perms'           : 'مجوزها',
+			'modify'          : 'تغییر داده شده',
+			'kind'            : 'نوع',
+			'read'            : 'خواندن',
+			'write'           : 'نوشتن',
+			'noaccess'        : 'دسترسی وجود ندارد',
+			'and'             : 'و',
+			'unknown'         : 'ناشناخته',
+			'selectall'       : 'انتخاب همه فایل ها',
+			'selectfiles'     : 'انتخاب یکی یا همه فایل ها',
+			'selectffile'     : 'انتخاب اولین فایل',
+			'selectlfile'     : 'انتخاب آخرین فایل',
+			'viewlist'        : 'نمایش به صورت لیست',
+			'viewicons'       : 'نمایش با آیکون ها',
+			'places'          : 'محل ها',
+			'calc'            : 'محاسبه',
+			'path'            : 'مسیر',
+			'aliasfor'        : 'نام مستعار برای',
+			'locked'          : 'قفل شده',
+			'dim'             : 'ابعاد',
+			'files'           : 'فایل ها',
+			'folders'         : 'پوشه ها',
+			'items'           : 'آیتم ها',
+			'yes'             : 'بلی',
+			'no'              : 'خیر',
+			'link'            : 'پیوند',
+			'searcresult'     : 'جستجو در نتایج',
+			'selected'        : 'آیتم های انتخاب شده',
+			'about'           : 'درباره',
+			'shortcuts'       : 'میانبرها',
+			'help'            : 'راهنما',
+			'webfm'           : 'مدیر وب فایل',
+			'ver'             : 'نسخه',
+			'protocolver'     : 'protocol version',
+			'homepage'        : 'صفحه اصلی پروژه',
+			'docs'            : 'مستندات',
+			'github'          : 'دنبال کردن ما بر روی Github',
+			'twitter'         : 'دنبال کردن ما در Twitter',
+			'facebook'        : 'به ما در facebook بپیوندید',
+			'team'            : 'گروه',
+			'chiefdev'        : 'سازنده اصلی برنامه',
+			'developer'       : 'سازنده',
+			'contributor'     : 'همکار',
+			'maintainer'      : 'پشتیبان',
+			'translator'      : 'مترجم',
+			'icons'           : 'آیکون ها',
+			'dontforget'      : 'فراموش نشود',
+			'shortcutsof'     : 'میانبرها غیرفعال شده اند .',
+			'dropFiles'       : 'فایل های خود را در این محل رها نمایید .',
+			'or'              : 'یا',
+			'selectForUpload' : 'انتخاب فایل ها برای بارگذاری',
+			'moveFiles'       : 'انتقال فایل ها',
+			'copyFiles'       : 'کپی فایل ها',
+			'rmFromPlaces'    : 'حدف',
+			'aspectRatio'     : 'نسبت تصویر',
+			'scale'           : 'مقیاس',
+			'width'           : 'طول',
+			'height'          : 'ارتفاع',
+			'resize'          : 'تغییر اندازه',
+			'crop'            : 'بریدن',
+			'rotate'          : 'چرخاندن',
+			'rotate-cw'       : 'چرخاندن 90 درجه در جهت عقربه های ساعت',
+			'rotate-ccw'      : 'چرخاندن 90 درجه در جهت خلاف عقربه های ساعت',
+			'degree'          : 'درجه',
+			'netMountDialogTitle' : 'Mount network volume',
+			'protocol'        : 'نسخه پروتکل',
+			'host'            : 'Host',
+			'port'            : 'Port',
+			'user'            : 'User',
+			'pass'            : 'Password',
+			
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : 'Unknown',
+			'kindFolder'      : 'Folder',
+			'kindAlias'       : 'Alias',
+			'kindAliasBroken' : 'Broken alias',
+			// applications
+			'kindApp'         : 'Application',
+			'kindPostscript'  : 'Postscript document',
+			'kindMsOffice'    : 'Microsoft Office document',
+			'kindMsWord'      : 'Microsoft Word document',
+			'kindMsExcel'     : 'Microsoft Excel document',
+			'kindMsPP'        : 'Microsoft Powerpoint presentation',
+			'kindOO'          : 'Open Office document',
+			'kindAppFlash'    : 'Flash application',
+			'kindPDF'         : 'Portable Document Format (PDF)',
+			'kindTorrent'     : 'Bittorrent file',
+			'kind7z'          : '7z archive',
+			'kindTAR'         : 'TAR archive',
+			'kindGZIP'        : 'GZIP archive',
+			'kindBZIP'        : 'BZIP archive',
+			'kindXZ'          : 'XZ archive',
+			'kindZIP'         : 'ZIP archive',
+			'kindRAR'         : 'RAR archive',
+			'kindJAR'         : 'Java JAR file',
+			'kindTTF'         : 'True Type font',
+			'kindOTF'         : 'Open Type font',
+			'kindRPM'         : 'RPM package',
+			// texts
+			'kindText'        : 'Text document',
+			'kindTextPlain'   : 'Plain text',
+			'kindPHP'         : 'PHP source',
+			'kindCSS'         : 'Cascading style sheet',
+			'kindHTML'        : 'HTML document',
+			'kindJS'          : 'Javascript source',
+			'kindRTF'         : 'Rich Text Format',
+			'kindC'           : 'C source',
+			'kindCHeader'     : 'C header source',
+			'kindCPP'         : 'C++ source',
+			'kindCPPHeader'   : 'C++ header source',
+			'kindShell'       : 'Unix shell script',
+			'kindPython'      : 'Python source',
+			'kindJava'        : 'Java source',
+			'kindRuby'        : 'Ruby source',
+			'kindPerl'        : 'Perl script',
+			'kindSQL'         : 'SQL source',
+			'kindXML'         : 'XML document',
+			'kindAWK'         : 'AWK source',
+			'kindCSV'         : 'Comma separated values',
+			'kindDOCBOOK'     : 'Docbook XML document',
+			// images
+			'kindImage'       : 'Image',
+			'kindBMP'         : 'BMP image',
+			'kindJPEG'        : 'JPEG image',
+			'kindGIF'         : 'GIF Image',
+			'kindPNG'         : 'PNG Image',
+			'kindTIFF'        : 'TIFF image',
+			'kindTGA'         : 'TGA image',
+			'kindPSD'         : 'Adobe Photoshop image',
+			'kindXBITMAP'     : 'X bitmap image',
+			'kindPXM'         : 'Pixelmator image',
+			// media
+			'kindAudio'       : 'Audio media',
+			'kindAudioMPEG'   : 'MPEG audio',
+			'kindAudioMPEG4'  : 'MPEG-4 audio',
+			'kindAudioMIDI'   : 'MIDI audio',
+			'kindAudioOGG'    : 'Ogg Vorbis audio',
+			'kindAudioWAV'    : 'WAV audio',
+			'AudioPlaylist'   : 'MP3 playlist',
+			'kindVideo'       : 'Video media',
+			'kindVideoDV'     : 'DV movie',
+			'kindVideoMPEG'   : 'MPEG movie',
+			'kindVideoMPEG4'  : 'MPEG-4 movie',
+			'kindVideoAVI'    : 'AVI movie',
+			'kindVideoMOV'    : 'Quick Time movie',
+			'kindVideoWM'     : 'Windows Media movie',
+			'kindVideoFlash'  : 'Flash movie',
+			'kindVideoMKV'    : 'Matroska movie',
+			'kindVideoOGG'    : 'Ogg movie'
+		}
+	};
+}));

+ 11 - 0
src/assets/js/i18n/elfinder.fallback.js

@@ -0,0 +1,11 @@
+(function(factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory();
+	} else {
+		factory();
+	}
+}(this, function() {
+	return void 0;
+}));

+ 419 - 0
src/assets/js/i18n/elfinder.fo.js

@@ -0,0 +1,419 @@
+/**
+ * Faroese translation
+ * @author Marius Hammer <marius@vrg.fo>
+ * @version 2015-12-03
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.fo = {
+		translator : 'Marius Hammer &lt;marius@vrg.fo&gt;',
+		language   : 'Faroese',
+		direction  : 'ltr',
+		dateFormat : 'd.m.Y H:i', // Mar 13, 2012 05:27 PM
+		fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM
+		messages   : {
+
+			/********************************** errors **********************************/
+			'error'                : 'Villa íkomin',
+			'errUnknown'           : 'Ókend villa.',
+			'errUnknownCmd'        : 'Ókend boð.',
+			'errJqui'              : 'Ógildig jQuery UI konfiguratión. Vælbærar, sum kunnu hálast runt og kunnu sleppast skulu takast við.',
+			'errNode'              : 'elFinder krevur DOM Element stovna.',
+			'errURL'               : 'Ugyldig elFinder konfiguration! URL stilling er ikki ásett.',
+			'errAccess'            : 'Atgongd nokta.',
+			'errConnect'           : 'Far ikki samband við backend.',
+			'errAbort'             : 'Sambandi avbrotið.',
+			'errTimeout'           : 'Sambandi broti av.',
+			'errNotFound'          : 'Backend ikki funnið.',
+			'errResponse'          : 'Ógildugt backend svar.',
+			'errConf'              : 'Ógildugt backend konfiguratión.',
+			'errJSON'              : 'PHP JSON modulið er ikki innstallera.',
+			'errNoVolumes'         : 'Lesiligar mappur er ikki atkomulig.',
+			'errCmdParams'         : 'Ógildigar stillingar fyri kommando "$1".',
+			'errDataNotJSON'       : 'Dáta er ikki JSON.',
+			'errDataEmpty'         : 'Dáta er tømt.',
+			'errCmdReq'            : 'Backend krevur eitt kommando navn.',
+			'errOpen'              : 'Kundi ikki opna "$1".',
+			'errNotFolder'         : 'Luturin er ikki ein mappa.',
+			'errNotFile'           : 'Luturin er ikki ein fíla.',
+			'errRead'              : 'Kundi ikki lesa til "$1".',
+			'errWrite'             : 'Kundi ikki skriva til "$1".',
+			'errPerm'              : 'Atgongd nokta.',
+			'errLocked'            : '"$1" er løst og kann ikki umdoybast, flytast ella strikast.',
+			'errExists'            : 'Tað finst longu ein fíla við navn "$1".',
+			'errInvName'           : 'Ógildugt fíla navn.',
+			'errFolderNotFound'    : 'Mappa ikki funnin.',
+			'errFileNotFound'      : 'Fíla ikki funnin.',
+			'errTrgFolderNotFound' : 'Mappan "$1" bleiv ikke funnin.',
+			'errPopup'             : 'Kagin forðaði í at opna eitt popup-vindeyga. Fyri at opna fíluna, aktivera popup-vindeygu í tínum kaga stillingum.',
+			'errMkdir'             : '\'Kundi ikki stovna mappu "$1".',
+			'errMkfile'            : 'Kundi ikki stovna mappu "$1".',
+			'errRename'            : 'Kundi ikki umdoyba "$1".',
+			'errCopyFrom'          : 'Kopiering av fílum frá mappuni "$1" er ikke loyvt.',
+			'errCopyTo'            : 'Kopiering av fílum til mappuna "$1" er ikke loyvt.',
+			'errMkOutLink'         : 'Ikki ført fyri at stovna leinkju til uttanfyri \'volume\' rót.', // from v2.1 added 03.10.2015
+			'errUpload'            : 'Innlegginar feilur.',  // old name - errUploadCommon
+			'errUploadFile'        : 'Kundi ikki leggja "$1" inn.', // old name - errUpload
+			'errUploadNoFiles'     : 'Ongar fílar funnir at leggja inn.',
+			'errUploadTotalSize'   : 'Dátain er størri enn mest loyvda støddin.', // old name - errMaxSize
+			'errUploadFileSize'    : 'Fíla er størri enn mest loyvda støddin.', //  old name - errFileMaxSize
+			'errUploadMime'        : 'Fílu slag ikki góðkent.',
+			'errUploadTransfer'    : '"$1" innleggingar feilur.',
+			'errUploadTemp'        : 'Ikki ført fyri at gera fyribils fílu fyri innlegging.', // from v2.1 added 26.09.2015
+			'errNotReplace'        : 'Lutur "$1" finst longu á hesum stað og can ikki skiftast út av lutið av øðrum slag.', // new
+			'errReplace'           : 'Ikki ført fyri at erstattae "$1".',
+			'errSave'              : 'Kundi ikki goyma "$1".',
+			'errCopy'              : 'Kundi ikki kopiera "$1".',
+			'errMove'              : 'Kundi ikki flyta "$1".',
+			'errCopyInItself'      : 'Kundi ikki kopiera "$1" inn í seg sjálva.',
+			'errRm'                : 'Kundi ikki strika "$1".',
+			'errRmSrc'             : 'Ikki ført fyri at strika keldu fíla(r).',
+			'errExtract'           : 'Kundi ikki útpakka fílar frá "$1".',
+			'errArchive'           : 'Kundi ikki stovna arkiv.',
+			'errArcType'           : 'Arkiv slagið er ikki stuðla.',
+			'errNoArchive'         : 'Fílan er ikki eitt arkiv ella er ikki eitt stuðla arkiva slag.',
+			'errCmdNoSupport'      : 'Backend stuðlar ikki hesi boð.',
+			'errReplByChild'       : 'appan "$1" kann ikki erstattast av einari vøru, hon inniheldur.',
+			'errArcSymlinks'       : 'Av trygdarávum grundum, noktaði skipanin at pakka út arkivir ið innihalda symlinks ella fílur við nøvn ið ikki eru loyvd.', // edited 24.06.2012
+			'errArcMaxSize'        : 'Arkiv fílar fylla meir enn mest loyvda støddin.',
+			'errResize'            : 'Kundi ikki broyta støddina á "$1".',
+			'errResizeDegree'      : 'Ógildugt roterings stig.',  // added 7.3.2013
+			'errResizeRotate'      : 'Ikki ført fyri at rotera mynd.',  // added 7.3.2013
+			'errResizeSize'        : 'Ógildug myndastødd.',  // added 7.3.2013
+			'errResizeNoChange'    : 'Mynda stødd ikki broytt.',  // added 7.3.2013
+			'errUsupportType'      : 'Ikki stuðla fíla slag.',
+			'errNotUTF8Content'    : 'Fílan "$1" er ikki í UTF-8 og kann ikki vera rættað.',  // added 9.11.2011
+			'errNetMount'          : 'Kundi ikki "mounta" "$1".', // added 17.04.2012
+			'errNetMountNoDriver'  : 'Ikki stuðla protokol.',     // added 17.04.2012
+			'errNetMountFailed'    : 'Mount miseydnaðist.',         // added 17.04.2012
+			'errNetMountHostReq'   : 'Host kravt.', // added 18.04.2012
+			'errSessionExpires'    : 'Tín seta er útgingin vegna óvirkniy.',
+			'errCreatingTempDir'   : 'Ikki ført fyri at stovna fyribils fíluskrá: "$1"',
+			'errFtpDownloadFile'   : 'Ikki ført fyri at taka fílu niður frá FTP: "$1"',
+			'errFtpUploadFile'     : 'Ikki ført fyri at leggja fílu til FTP: "$1"',
+			'errFtpMkdir'          : 'Ikki ført fyri at stovna fjar-fílaskrá á FTP: "$1"',
+			'errArchiveExec'       : 'Villa íkomin undir arkiveran af fílar: "$1"',
+			'errExtractExec'       : 'Villa íkomin undir útpakking af fílum: "$1"',
+			'errNetUnMount'        : 'Unable to unmount', // from v2.1 added 30.04.2012
+			'errConvUTF8'          : 'Kann ikki broytast til UTF-8', // from v2.1 added 08.04.2014
+			'errFolderUpload'      : 'Royn Google Chrome, um tú ynskir at leggja mappu innn.', // from v2.1 added 26.6.2015
+
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'Stovna arkiv',
+			'cmdback'      : 'Aftur\'',
+			'cmdcopy'      : 'Kopier',
+			'cmdcut'       : 'Klipp',
+			'cmddownload'  : 'Tak niður',
+			'cmdduplicate' : 'Tvífalda',
+			'cmdedit'      : 'Rætta fílu',
+			'cmdextract'   : 'Pakka út fílar úr arkiv',
+			'cmdforward'   : 'Fram',
+			'cmdgetfile'   : 'Vel fílar',
+			'cmdhelp'      : 'Um hesa software',
+			'cmdhome'      : 'Heim',
+			'cmdinfo'      : 'Fá upplýsingar',
+			'cmdmkdir'     : 'Nýggja mappu',
+			'cmdmkfile'    : 'Nýggja tekst fílu',
+			'cmdopen'      : 'Opna',
+			'cmdpaste'     : 'Set inn',
+			'cmdquicklook' : 'Forsýning',
+			'cmdreload'    : 'Les inn umaftur',
+			'cmdrename'    : 'Umdoyp',
+			'cmdrm'        : 'Strika',
+			'cmdsearch'    : 'Finn fílar',
+			'cmdup'        : 'Eitt stig upp',
+			'cmdupload'    : 'Legg fílar inn',
+			'cmdview'      : 'Síggj',
+			'cmdresize'    : 'Tillaga stødd & Roter',
+			'cmdsort'      : 'Raða',
+			'cmdnetmount'  : 'Mount network volume', // added 18.04.2012
+			'cmdnetunmount': 'Unmount', // from v2.1 added 30.04.2012
+			'cmdplaces'    : 'Til støð', // added 28.12.2014
+			'cmdchmod'     : 'Broytir stíl', // from v2.1 added 20.6.2015
+
+			/*********************************** buttons ***********************************/
+			'btnClose'  : 'Lat aftur',
+			'btnSave'   : 'Goym',
+			'btnRm'     : 'Strika',
+			'btnApply'  : 'Brúka',
+			'btnCancel' : 'Angra',
+			'btnNo'     : 'Nei',
+			'btnYes'    : 'Ja',
+			'btnMount'  : 'Mount',  // added 18.04.2012
+			'btnApprove': 'Goto $1 & approve', // from v2.1 added 26.04.2012
+			'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012
+			'btnConv'   : 'Konverter', // from v2.1 added 08.04.2014
+			'btnCwd'    : 'Her',      // from v2.1 added 22.5.2015
+			'btnVolume' : 'Volume',    // from v2.1 added 22.5.2015
+			'btnAll'    : 'Øll',       // from v2.1 added 22.5.2015
+			'btnMime'   : 'MIME Slag', // from v2.1 added 22.5.2015
+			'btnFileName':'Fílunavn',  // from v2.1 added 22.5.2015
+			'btnSaveClose': 'Goym & Lat aftur', // from v2.1 added 12.6.2015
+			'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015
+
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'Opna mappu',
+			'ntffile'     : '\'Opna fílu',
+			'ntfreload'   : 'Les innaftur mappu innihald',
+			'ntfmkdir'    : 'Stovnar mappu',
+			'ntfmkfile'   : 'Stovnar fílur',
+			'ntfrm'       : 'Strikar fílur',
+			'ntfcopy'     : 'Kopierar fílur',
+			'ntfmove'     : 'Flytur fílar',
+			'ntfprepare'  : 'Ger klárt at kopiera fílar',
+			'ntfrename'   : 'Umdoyp fílar',
+			'ntfupload'   : 'Leggur inn fílar',
+			'ntfdownload' : 'Tekur fílar niður',
+			'ntfsave'     : 'Goymir fílar',
+			'ntfarchive'  : 'Stovnar arkiv',
+			'ntfextract'  : 'Útpakkar fílar frá arkiv',
+			'ntfsearch'   : 'Leitar eftir fílum',
+			'ntfresize'   : 'Broytir stødd á fílur',
+			'ntfsmth'     : '\'Ger okkurt >_<',
+			'ntfloadimg'  : 'Lesur mynd inn',
+			'ntfnetmount' : 'Mounting network volume', // added 18.04.2012
+			'ntfnetunmount': 'Unmounting network volume', // from v2.1 added 30.04.2012
+			'ntfdim'      : 'Tekur mynda vídd', // added 20.05.2013
+			'ntfreaddir'  : 'Lesur mappu upplýsingar', // from v2.1 added 01.07.2013
+			'ntfurl'      : 'Far URL af leinkju', // from v2.1 added 11.03.2014
+			'ntfchmod'    : 'Broyti fílu stíl', // from v2.1 added 20.6.2015
+			'ntfpreupload': 'Kannar fílunavnið á fílu', // from v2.1 added 31.11.2015
+
+			/************************************ dates **********************************/
+			'dateUnknown' : 'ókent',
+			'Today'       : 'Í dag',
+			'Yesterday'   : 'Í gjár',
+			'msJan'       : 'Jan',
+			'msFeb'       : 'Feb',
+			'msMar'       : 'Mar',
+			'msApr'       : 'Apr',
+			'msMay'       : 'Mai',
+			'msJun'       : 'Jun',
+			'msJul'       : 'Jul',
+			'msAug'       : 'Aug',
+			'msSep'       : 'Sep',
+			'msOct'       : 'Okt',
+			'msNov'       : 'Nov',
+			'msDec'       : 'Des',
+			'January'     : 'Januar',
+			'February'    : 'Februar',
+			'March'       : 'Mars',
+			'April'       : 'Apríl',
+			'May'         : 'Mai',
+			'June'        : 'Juni',
+			'July'        : 'Juli',
+			'August'      : 'August',
+			'September'   : 'September',
+			'October'     : 'Oktober',
+			'November'    : 'November',
+			'December'    : 'Desember',
+			'Sunday'      : 'Sunnudag',
+			'Monday'      : 'Mánadag',
+			'Tuesday'     : 'Týsdag',
+			'Wednesday'   : 'Mikudag',
+			'Thursday'    : 'Hósdag',
+			'Friday'      : 'Fríggjadag',
+			'Saturday'    : 'Leygardag',
+			'Sun'         : 'Sun',
+			'Mon'         : 'Mán',
+			'Tue'         : 'Týs',
+			'Wed'         : 'Mik',
+			'Thu'         : 'Hós',
+			'Fri'         : 'Frí',
+			'Sat'         : 'Ley',
+
+			/******************************** sort variants ********************************/
+			'sortname'          : 'eftir navn',
+			'sortkind'          : 'eftir slag',
+			'sortsize'          : 'eftir stødd',
+			'sortdate'          : 'eftir dato',
+			'sortFoldersFirst'  : 'mappur fyrst',
+
+			/********************************** new items **********************************/
+			'untitled file.txt' : 'NýggjaFílu.txt', // added 10.11.2015
+			'untitled folder'   : 'NýggjaMappu',   // added 10.11.2015
+			'Archive'           : 'NýtArkiv',  // from v2.1 added 10.11.2015
+
+			/********************************** messages **********************************/
+			'confirmReq'      : 'Váttan kravd',
+			'confirmRm'       : 'Ert tú vísur í at tú ynskir at strika fílarnar?<br/>Hetta kann ikki angrast!',
+			'confirmRepl'     : 'Erstatta gomlu fílu við nýggja?',
+			'confirmConvUTF8' : 'Brúka á øll', // from v2.1 added 08.04.2014
+			'confirmNotSave'  : 'Er blivi rættað.<br/>Missir sínar broytingar um tú ikki goymir.', // from v2.1 added 15.7.2015
+			'apllyAll'        : 'Brúka til øll',
+			'name'            : 'Navn',
+			'size'            : 'Stødd',
+			'perms'           : 'Rættindi',
+			'modify'          : 'Rættað',
+			'kind'            : 'Slag',
+			'read'            : 'síggja',
+			'write'           : 'broyta',
+			'noaccess'        : 'onga atgongd',
+			'and'             : 'og',
+			'unknown'         : 'ókent',
+			'selectall'       : 'Vel allar fílur',
+			'selectfiles'     : 'Vel fílu(r)',
+			'selectffile'     : 'Vel fyrstu fílu',
+			'selectlfile'     : 'Vel síðstu fílu',
+			'viewlist'        : 'Lista vísing',
+			'viewicons'       : 'Ikon vísing',
+			'places'          : 'Støð',
+			'calc'            : 'Rokna',
+			'path'            : 'Stiga',
+			'aliasfor'        : 'Hjánavn fyri',
+			'locked'          : 'Læst',
+			'dim'             : 'Vídd',
+			'files'           : 'Fílur',
+			'folders'         : 'Mappur',
+			'items'           : 'Myndir',
+			'yes'             : 'ja',
+			'no'              : 'nei',
+			'link'            : 'Leinkja',
+			'searcresult'     : 'Leiti úrslit',
+			'selected'        : 'valdar myndir',
+			'about'           : 'Um',
+			'shortcuts'       : 'Snarvegir',
+			'help'            : 'Hjálp',
+			'webfm'           : 'Web fílu umsitan',
+			'ver'             : 'Útgáva',
+			'protocolver'     : 'protokol versión',
+			'homepage'        : 'Verkætlan heim',
+			'docs'            : 'Skjalfesting',
+			'github'          : 'Mynda okkum á Github',
+			'twitter'         : 'Fylg okkum á twitter',
+			'facebook'        : 'Fylg okkum á facebook',
+			'team'            : 'Lið',
+			'chiefdev'        : 'forritaleiðari',
+			'developer'       : 'forritari',
+			'contributor'     : 'stuðulsveitari',
+			'maintainer'      : 'viðlíkahaldari',
+			'translator'      : 'umsetari',
+			'icons'           : 'Ikonir',
+			'dontforget'      : 'and don\'t forget to take your towel',
+			'shortcutsof'     : 'Snarvegir sligi frá',
+			'dropFiles'       : 'Slepp fílur her',
+			'or'              : 'ella',
+			'selectForUpload' : 'Vel fílur at leggja inn',
+			'moveFiles'       : 'Flyt fílur',
+			'copyFiles'       : 'Kopier fílur',
+			'rmFromPlaces'    : 'Flyt frá støð',
+			'aspectRatio'     : 'Skermformat',
+			'scale'           : 'Skalera',
+			'width'           : 'Longd',
+			'height'          : 'Hædd',
+			'resize'          : 'Tilliga stødd',
+			'crop'            : 'Sker til',
+			'rotate'          : 'Rotera',
+			'rotate-cw'       : 'Rotera 90 gradir við urið',
+			'rotate-ccw'      : 'otera 90 gradir móti urið',
+			'degree'          : '°',
+			'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012
+			'protocol'            : 'Protokol', // added 18.04.2012
+			'host'                : 'Host', // added 18.04.2012
+			'port'                : 'Port', // added 18.04.2012
+			'user'                : 'Brúkari', // added 18.04.2012
+			'pass'                : 'Loyniorð', // added 18.04.2012
+			'confirmUnmount'      : 'Are you unmount $1?',  // from v2.1 added 30.04.2012
+			'dropFilesBrowser': 'Hála ella set innn fílar frá kaga', // from v2.1 added 30.05.2012
+			'dropPasteFiles'  : 'Hála ella set inn fílar frá URls her', // from v2.1 added 07.04.2014
+			'encoding'        : 'Encoding', // from v2.1 added 19.12.2014
+			'locale'          : 'Locale',   // from v2.1 added 19.12.2014
+			'searchTarget'    : 'Target: $1',                // from v2.1 added 22.5.2015
+			'searchMime'      : 'Leita við input MIME Type', // from v2.1 added 22.5.2015
+			'owner'           : 'Eigari', // from v2.1 added 20.6.2015
+			'group'           : 'Bólkur', // from v2.1 added 20.6.2015
+			'other'           : 'Annað', // from v2.1 added 20.6.2015
+			'execute'         : 'Útfør', // from v2.1 added 20.6.2015
+			'perm'            : 'Rættindi', // from v2.1 added 20.6.2015
+			'mode'            : 'Mode', // from v2.1 added 20.6.2015
+
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : 'Ókent',
+			'kindFolder'      : 'Mappa',
+			'kindAlias'       : 'Hjánavn',
+			'kindAliasBroken' : 'Óvirki hjánavn',
+			// applications
+			'kindApp'         : 'Applikatión',
+			'kindPostscript'  : 'Postscript skjal',
+			'kindMsOffice'    : 'Microsoft Office skjal',
+			'kindMsWord'      : 'Microsoft Word skjal',
+			'kindMsExcel'     : 'Microsoft Excel skjal',
+			'kindMsPP'        : 'Microsoft Powerpoint framløga',
+			'kindOO'          : 'Open Office skjal',
+			'kindAppFlash'    : 'Flash applikatión',
+			'kindPDF'         : 'Portable Document Format (PDF)',
+			'kindTorrent'     : 'Bittorrent fíla',
+			'kind7z'          : '7z arkiv',
+			'kindTAR'         : 'TAR arkiv',
+			'kindGZIP'        : 'GZIP arkiv',
+			'kindBZIP'        : 'BZIP arkiv',
+			'kindXZ'          : 'XZ arkiv',
+			'kindZIP'         : 'ZIP arkiv',
+			'kindRAR'         : 'RAR arkiv',
+			'kindJAR'         : 'Java JAR ffílaile',
+			'kindTTF'         : 'True Type font',
+			'kindOTF'         : 'Open Type font',
+			'kindRPM'         : 'RPM pakki',
+			// texts
+			'kindText'        : 'Text skjal',
+			'kindTextPlain'   : 'Reinur tekstur',
+			'kindPHP'         : 'PHP kelda',
+			'kindCSS'         : 'Cascading style sheet (CSS)',
+			'kindHTML'        : 'HTML skjal',
+			'kindJS'          : 'Javascript kelda',
+			'kindRTF'         : 'Rich Text Format (RTF)',
+			'kindC'           : 'C kelda',
+			'kindCHeader'     : 'C header kelda',
+			'kindCPP'         : 'C++ kelda',
+			'kindCPPHeader'   : 'C++ header kelda',
+			'kindShell'       : 'Unix shell script',
+			'kindPython'      : 'Python kelda',
+			'kindJava'        : 'Java kelda',
+			'kindRuby'        : 'Ruby kelda',
+			'kindPerl'        : 'Perl script',
+			'kindSQL'         : 'SQL kelda',
+			'kindXML'         : 'XML skjal',
+			'kindAWK'         : 'AWK kelda',
+			'kindCSV'         : 'Comma separated values (CSV)',
+			'kindDOCBOOK'     : 'Docbook XML skjal',
+			'kindMarkdown'    : 'Markdown text', // added 20.7.2015
+			// images
+			'kindImage'       : 'Mynd',
+			'kindBMP'         : 'BMP mynd',
+			'kindJPEG'        : 'JPEG mynd',
+			'kindGIF'         : 'GIF mynd',
+			'kindPNG'         : 'PNG mynd',
+			'kindTIFF'        : 'TIFF mynd',
+			'kindTGA'         : 'TGA mynd',
+			'kindPSD'         : 'Adobe Photoshop mynd',
+			'kindXBITMAP'     : 'X bitmap mynd',
+			'kindPXM'         : 'Pixelmator mynd',
+			// media
+			'kindAudio'       : 'Audio media',
+			'kindAudioMPEG'   : 'MPEG ljóðfíla',
+			'kindAudioMPEG4'  : 'MPEG-4 ljóðfíla',
+			'kindAudioMIDI'   : 'MIDI ljóðfíla',
+			'kindAudioOGG'    : 'Ogg Vorbis ljóðfíla',
+			'kindAudioWAV'    : 'WAV ljóðfíla',
+			'AudioPlaylist'   : 'MP3 playlisti',
+			'kindVideo'       : 'Video media',
+			'kindVideoDV'     : 'DV filmur',
+			'kindVideoMPEG'   : 'MPEG filmur',
+			'kindVideoMPEG4'  : 'MPEG-4 filmur',
+			'kindVideoAVI'    : 'AVI filmur',
+			'kindVideoMOV'    : 'Quick Time filmur',
+			'kindVideoWM'     : 'Windows Media filmur',
+			'kindVideoFlash'  : 'Flash filmur',
+			'kindVideoMKV'    : 'Matroska filmur',
+			'kindVideoOGG'    : 'Ogg filmur'
+		}
+	};
+}));
+

+ 508 - 0
src/assets/js/i18n/elfinder.fr.js

@@ -0,0 +1,508 @@
+/**
+ * française translation
+ * @author Régis Guyomarch <regisg@gmail.com>
+ * @author Benoit Delachaux <benorde33@gmail.com>
+ * @version 2017-07-13
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.fr = {
+		translator : 'Régis Guyomarch &lt;regisg@gmail.com&gt;, Benoit Delachaux &lt;benorde33@gmail.com&gt;',
+		language   : 'française',
+		direction  : 'ltr',
+		dateFormat : 'd M, Y H:i', // Mar 13, 2012 05:27 PM
+		fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM
+		nonameDateFormat : 'ymd-His', // to apply if upload file is noname: 120513172700
+		messages   : {
+
+			/********************************** errors **********************************/
+			'error'                : 'Erreur',
+			'errUnknown'           : 'Erreur inconnue.',
+			'errUnknownCmd'        : 'Commande inconnue.',
+			'errJqui'              : 'Mauvaise configuration de jQuery UI. Les composants Selectable, draggable et droppable doivent être inclus.',
+			'errNode'              : 'elFinder requiert que l\'élément DOM ait été créé.',
+			'errURL'               : 'Mauvaise configuration d\'elFinder ! L\'option URL na pas été définie.',
+			'errAccess'            : 'Accès refusé.',
+			'errConnect'           : 'Impossible de se connecter au backend.',
+			'errAbort'             : 'Connexion interrompue.',
+			'errTimeout'           : 'Délai de connexion dépassé.',
+			'errNotFound'          : 'Backend non trouvé.',
+			'errResponse'          : 'Mauvaise réponse du backend.',
+			'errConf'              : 'Mauvaise configuration du backend.',
+			'errJSON'              : 'Le module PHP JSON n\'est pas installé.',
+			'errNoVolumes'         : 'Aucun volume lisible.',
+			'errCmdParams'         : 'Mauvais Paramétrage de la commande "$1".',
+			'errDataNotJSON'       : 'Les données ne sont pas au format JSON.',
+			'errDataEmpty'         : 'Données inexistantes.',
+			'errCmdReq'            : 'La requête au Backend doit comporter le nom de la commande.',
+			'errOpen'              : 'Impossible d\'ouvrir "$1".',
+			'errNotFolder'         : 'Cet objet n\'est pas un dossier.',
+			'errNotFile'           : 'Cet objet n\'est pas un fichier.',
+			'errRead'              : 'Impossible de lire "$1".',
+			'errWrite'             : 'Impossible d\'écrire dans "$1".',
+			'errPerm'              : 'Permission refusée.',
+			'errLocked'            : '"$1" est verrouillé et ne peut être déplacé ou supprimé.',
+			'errExists'            : 'Un fichier nommé "$1" existe déjà.',
+			'errInvName'           : 'Nom de fichier incorrect.',
+			'errInvDirname'        : 'Nom de dossier incorrect.',  // from v2.1.24 added 12.4.2017
+			'errFolderNotFound'    : 'Dossier non trouvé.',
+			'errFileNotFound'      : 'Fichier non trouvé.',
+			'errTrgFolderNotFound' : 'Dossier destination "$1" non trouvé.',
+			'errPopup'             : 'Le navigateur web a empêché l\'ouverture d\'une fenêtre "popup". Pour ouvrir le fichier, modifiez les options du navigateur web.',
+			'errMkdir'             : 'Impossible de créer le dossier "$1".',
+			'errMkfile'            : 'impossible de créer le fichier "$1".',
+			'errRename'            : 'Impossible de renommer "$1".',
+			'errCopyFrom'          : 'Interdiction de copier des fichiers depuis le volume "$1".',
+			'errCopyTo'            : 'Interdiction de copier des fichiers vers le volume "$1".',
+			'errMkOutLink'         : 'Impossible de créer un lien en dehors du volume principal.', // from v2.1 added 03.10.2015
+			'errUpload'            : 'Erreur lors de l\'envoi du fichier.',  // old name - errUploadCommon
+			'errUploadFile'        : 'Impossible d\'envoyer "$1".', // old name - errUpload
+			'errUploadNoFiles'     : 'Aucun fichier à envoyer.',
+			'errUploadTotalSize'   : 'Les données dépassent la taille maximale allouée.', // old name - errMaxSize
+			'errUploadFileSize'    : 'Le fichier dépasse la taille maximale allouée.', //  old name - errFileMaxSize
+			'errUploadMime'        : 'Type de fichier non autorisé.',
+			'errUploadTransfer'    : '"$1" erreur transfert.',
+			'errUploadTemp'        : 'Impossible de créer un fichier temporaire pour transférer les fichiers.', // from v2.1 added 26.09.2015
+			'errNotReplace'        : 'L\'objet "$1" existe déjà à cet endroit et ne peut être remplacé par un objet d\'un type différent.', // new
+			'errReplace'           : 'Impossible de remplacer "$1".',
+			'errSave'              : 'Impossible de sauvegarder "$1".',
+			'errCopy'              : 'Impossible de copier "$1".',
+			'errMove'              : 'Impossible de déplacer "$1".',
+			'errCopyInItself'      : 'Impossible de copier "$1" sur lui-même.',
+			'errRm'                : 'Impossible de supprimer "$1".',
+			'errTrash'             : 'Unable into trash.', // from v2.1.24 added 30.4.2017
+			'errRmSrc'             : 'Impossible de supprimer le(s) fichier(s) source(s).',
+			'errExtract'           : 'Imbossible d\'extraire les fichiers à partir de "$1".',
+			'errArchive'           : 'Impossible de créer l\'archive.',
+			'errArcType'           : 'Type d\'archive non supporté.',
+			'errNoArchive'         : 'Le fichier n\'est pas une archive, ou c\'est un type d\'archive non supporté.',
+			'errCmdNoSupport'      : 'Le Backend ne prend pas en charge cette commande.',
+			'errReplByChild'       : 'Le dossier “$1” ne peut pas être remplacé par un élément qu\'il contient.',
+			'errArcSymlinks'       : 'Par mesure de sécurité, il est défendu d\'extraire une archive contenant des liens symboliques.', // edited 24.06.2012
+			'errArcMaxSize'        : 'Les fichiers de l\'archive excèdent la taille maximale autorisée.',
+			'errResize'            : 'Impossible de redimensionner "$1".',
+			'errResizeDegree'      : 'Degré de rotation invalide.',  // added 7.3.2013
+			'errResizeRotate'      : 'L\'image ne peut pas être tournée.',  // added 7.3.2013
+			'errResizeSize'        : 'Dimension de l\'image non-valide.',  // added 7.3.2013
+			'errResizeNoChange'    : 'L\'image n\'est pas redimensionnable.',  // added 7.3.2013
+			'errUsupportType'      : 'Type de fichier non supporté.',
+			'errNotUTF8Content'    : 'Le fichier "$1" n\'est pas en UTF-8, il ne peut être édité.',  // added 9.11.2011
+			'errNetMount'          : 'Impossible de monter "$1".', // added 17.04.2012
+			'errNetMountNoDriver'  : 'Protocol non supporté.',     // added 17.04.2012
+			'errNetMountFailed'    : 'Echec du montage.',         // added 17.04.2012
+			'errNetMountHostReq'   : 'Hôte requis.', // added 18.04.2012
+			'errSessionExpires'    : 'Votre session a expiré en raison de son inactivité',
+			'errCreatingTempDir'   : 'Impossible de créer le répertoire temporaire : "$1"',
+			'errFtpDownloadFile'   : 'Impossible de télécharger le file depuis l\'accès FTP : "$1"',
+			'errFtpUploadFile'     : 'Impossible d\'envoyer le fichier vers l\'accès FTP : "$1"',
+			'errFtpMkdir'          : 'Impossible de créer un répertoire distant sur l\'accès FTP :"$1"',
+			'errArchiveExec'       : 'Erreur lors de l\'archivage des fichiers : "$1"',
+			'errExtractExec'       : 'Erreur lors de l\'extraction des fichiers : "$1"',
+			'errNetUnMount'        : 'Impossible de démonter', // from v2.1 added 30.04.2012
+			'errConvUTF8'          : 'Conversion en UTF-8 impossible', // from v2.1 added 08.04.2014
+			'errFolderUpload'      : 'Essayez Google Chrome, si voulez envoyer le dossier.', // from v2.1 added 26.6.2015
+			'errSearchTimeout'     : 'Délai d’attente dépassé pour la recherche "$1". Le résultat de la recherche est partiel.', // from v2.1 added 12.1.2016
+			'errReauthRequire'     : 'Réauthorisation requise.', // from v2.1.10 added 24.3.2016
+			'errMaxTargets'        : 'Le nombre maximal de fichiers pouvant être sélectionné est $1.', // from v2.1.17 added 17.10.2016
+			'errRestore'           : 'Impossible de restorer la corbeille. La destination de la restoration n\'a pu être identifiée.', // from v2.1.24 added 3.5.2017
+			'errEditorNotFound'    : 'Aucun éditeur n\'a été trouvé pour ce type de fichier.', // from v2.1.25 added 23.5.2017
+			'errServerError'       : 'Un erreur est survenue du côté serveur.', // from v2.1.25 added 16.6.2017
+			'errEmpty'             : 'Impossible de vider le dossier "$1".', // from v2.1.25 added 22.6.2017
+
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'Créer une archive',
+			'cmdback'      : 'Précédent',
+			'cmdcopy'      : 'Copier',
+			'cmdcut'       : 'Couper',
+			'cmddownload'  : 'Télécharger',
+			'cmdduplicate' : 'Dupliquer',
+			'cmdedit'      : 'Éditer le fichier',
+			'cmdextract'   : 'Extraire les fichiers de l\'archive',
+			'cmdforward'   : 'Suivant',
+			'cmdgetfile'   : 'Sélectionner les fichiers',
+			'cmdhelp'      : 'À propos de ce logiciel',
+			'cmdhome'      : 'Accueil',
+			'cmdinfo'      : 'Informations',
+			'cmdmkdir'     : 'Nouveau dossier',
+			'cmdmkdirin'   : 'Dans un nouveau dossier', // from v2.1.7 added 19.2.2016
+			'cmdmkfile'    : 'Nouveau fichier texte',
+			'cmdopen'      : 'Ouvrir',
+			'cmdpaste'     : 'Coller',
+			'cmdquicklook' : 'Prévisualiser',
+			'cmdreload'    : 'Actualiser',
+			'cmdrename'    : 'Renommer',
+			'cmdrm'        : 'Supprimer',
+			'cmdtrash'     : 'À la corbeille', //from v2.1.24 added 29.4.2017
+			'cmdrestore'   : 'Restorer', //from v2.1.24 added 3.5.2017
+			'cmdsearch'    : 'Trouver les fichiers',
+			'cmdup'        : 'Remonter au dossier parent',
+			'cmdupload'    : 'Envoyer les fichiers',
+			'cmdview'      : 'Vue',
+			'cmdresize'    : 'Redimensionner l\'image',
+			'cmdsort'      : 'Trier',
+			'cmdnetmount'  : 'Monter un volume réseau', // added 18.04.2012
+			'cmdnetunmount': 'Démonter', // from v2.1 added 30.04.2012
+			'cmdplaces'    : 'Vers Places', // added 28.12.2014
+			'cmdchmod'     : 'Changer de mode', // from v2.1 added 20.6.2015
+			'cmdopendir'   : 'Ouvrir un dossier', // from v2.1 added 13.1.2016
+			'cmdcolwidth'  : 'Réinitialiser largeur colone', // from v2.1.13 added 12.06.2016
+			'cmdfullscreen': 'Plein écran', // from v2.1.15 added 03.08.2016
+			'cmdmove'      : 'Déplacer', // from v2.1.15 added 21.08.2016
+			'cmdempty'     : 'Vider le dossier', // from v2.1.25 added 22.06.2017
+
+			/*********************************** buttons ***********************************/
+			'btnClose'  : 'Fermer',
+			'btnSave'   : 'Sauvegarder',
+			'btnRm'     : 'Supprimer',
+			'btnApply'  : 'Confirmer',
+			'btnCancel' : 'Annuler',
+			'btnNo'     : 'Non',
+			'btnYes'    : 'Oui',
+			'btnMount'  : 'Monter',  // added 18.04.2012
+			'btnApprove': 'Aller à $1 & approuver', // from v2.1 added 26.04.2012
+			'btnUnmount': 'Démonter', // from v2.1 added 30.04.2012
+			'btnConv'   : 'Convertir', // from v2.1 added 08.04.2014
+			'btnCwd'    : 'Ici',      // from v2.1 added 22.5.2015
+			'btnVolume' : 'Volume',    // from v2.1 added 22.5.2015
+			'btnAll'    : 'Tous',       // from v2.1 added 22.5.2015
+			'btnMime'   : 'Type MIME', // from v2.1 added 22.5.2015
+			'btnFileName':'Nom du fichier',  // from v2.1 added 22.5.2015
+			'btnSaveClose': 'Enregistrer & Ferme', // from v2.1 added 12.6.2015
+			'btnBackup' : 'Sauvegarde', // fromv2.1 added 28.11.2015
+			'btnRename'    : 'Renommer',      // from v2.1.24 added 6.4.2017
+			'btnRenameAll' : 'Renommer (tous)', // from v2.1.24 added 6.4.2017
+			'btnPrevious' : 'Préc. ($1/$2)', // from v2.1.24 added 11.5.2017
+			'btnNext'     : 'Suiv. ($1/$2)', // from v2.1.24 added 11.5.2017
+			'btnSaveAs'   : 'Sauvegarder sous', // from v2.1.25 added 24.5.2017
+
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'Ouvrir le dossier',
+			'ntffile'     : 'Ouvrir le fichier',
+			'ntfreload'   : 'Actualiser le contenu du dossier',
+			'ntfmkdir'    : 'Création du dossier',
+			'ntfmkfile'   : 'Création des fichiers',
+			'ntfrm'       : 'Supprimer les fichiers',
+			'ntfcopy'     : 'Copier les fichiers',
+			'ntfmove'     : 'Déplacer les fichiers',
+			'ntfprepare'  : 'Préparation de la copie des fichiers',
+			'ntfrename'   : 'Renommer les fichier',
+			'ntfupload'   : 'Envoyer les fichiers',
+			'ntfdownload' : 'Télécharger les fichiers',
+			'ntfsave'     : 'Sauvegarde des fichiers',
+			'ntfarchive'  : 'Création de l\'archive',
+			'ntfextract'  : 'Extraction des fichiers de l\'archive',
+			'ntfsearch'   : 'Recherche des fichiers',
+			'ntfresize'   : 'Re-tailler les images',
+			'ntfsmth'     : 'Fait quelque chose',
+			'ntfloadimg'  : 'Chargement de l\' image',
+			'ntfnetmount' : 'Monte le volume réseau', // added 18.04.2012
+			'ntfnetunmount': 'Démonte le volume réseau', // from v2.1 added 30.04.2012
+			'ntfdim'      : 'Calcule la dimension de l\'image', // added 20.05.2013
+			'ntfreaddir'  : 'Lecture des informations du dossier', // from v2.1 added 01.07.2013
+			'ntfurl'      : 'Récupération de l’URL du lien', // from v2.1 added 11.03.2014
+			'ntfchmod'    : 'Changement de mode', // from v2.1 added 20.6.2015
+			'ntfpreupload': 'Vérification du nom du fichier envoyé', // from v2.1 added 31.11.2015
+			'ntfzipdl'    : 'Création d’un fichier pour le téléchargement', // from v2.1.7 added 23.1.2016
+			'ntfparents'  : 'Traitement de l\'information du chemin', // from v2.1.17 added 2.11.2016
+			'ntfchunkmerge': 'Traitement du fichier envoyé', // from v2.1.17 added 2.11.2016
+			'ntftrash'    : 'Doing throw in the trash', // from v2.1.24 added 2.5.2017
+			'ntfrestore'  : 'Doing restore from tha trash', // from v2.1.24 added 3.5.2017
+			'ntfchkdir'   : 'Validation du dossier de destination', // from v2.1.24 added 3.5.2017
+
+			/*********************************** volumes *********************************/
+			'volume_Trash' : 'Corbeille', //from v2.1.24 added 29.4.2017
+
+			/************************************ dates **********************************/
+			'dateUnknown' : 'Inconnue',
+			'Today'       : 'Aujourd\'hui',
+			'Yesterday'   : 'Hier',
+			'msJan'       : 'Jan',
+			'msFeb'       : 'Fév',
+			'msMar'       : 'Mar',
+			'msApr'       : 'Avr',
+			'msMay'       : 'Mai',
+			'msJun'       : 'Jun',
+			'msJul'       : 'Jul',
+			'msAug'       : 'Aoû',
+			'msSep'       : 'Sep',
+			'msOct'       : 'Oct',
+			'msNov'       : 'Nov',
+			'msDec'       : 'Déc',
+			'January'     : 'Janvier',
+			'February'    : 'Février',
+			'March'       : 'Mars',
+			'April'       : 'Avril',
+			'May'         : 'Mai',
+			'June'        : 'Juin',
+			'July'        : 'Huillet',
+			'August'      : 'Août',
+			'September'   : 'Septembre',
+			'October'     : 'Octobre',
+			'November'    : 'Novembre',
+			'December'    : 'Décembre',
+			'Sunday'      : 'Dimanche',
+			'Monday'      : 'Lundi',
+			'Tuesday'     : 'Mardi',
+			'Wednesday'   : 'Mercredi',
+			'Thursday'    : 'Jeudi',
+			'Friday'      : 'Vendredi',
+			'Saturday'    : 'Samedi',
+			'Sun'         : 'Dim',
+			'Mon'         : 'Lun',
+			'Tue'         : 'Mar',
+			'Wed'         : 'Mer',
+			'Thu'         : 'Jeu',
+			'Fri'         : 'Ven',
+			'Sat'         : 'Sam',
+
+			/******************************** sort variants ********************************/
+			'sortname'          : 'par nom',
+			'sortkind'          : 'par type',
+			'sortsize'          : 'par taille',
+			'sortdate'          : 'par date',
+			'sortFoldersFirst'  : 'Dossiers en premier',
+			'sortperm'          : 'par permission', // from v2.1.13 added 13.06.2016
+			'sortmode'          : 'par mode',       // from v2.1.13 added 13.06.2016
+			'sortowner'         : 'by owner',      // from v2.1.13 added 13.06.2016
+			'sortgroup'         : 'par groupe',      // from v2.1.13 added 13.06.2016
+			'sortAlsoTreeview'  : 'Also Treeview',  // from v2.1.15 added 01.08.2016
+
+			/********************************** new items **********************************/
+			'untitled file.txt' : 'NewFile.txt', // added 10.11.2015
+			'untitled folder'   : 'NewFolder',   // added 10.11.2015
+			'Archive'           : 'NewArchive',  // from v2.1 added 10.11.2015
+
+			/********************************** messages **********************************/
+			'confirmReq'      : 'Confirmation requise',
+			'confirmRm'       : 'Êtes-vous certain de vouloir supprimer les fichiers?<br/>Cela ne peut être annulé!',
+			'confirmRepl'     : 'Supprimer l\'ancien fichier par le nouveau?',
+			'confirmRest'     : 'Remplacer le fichier existant par le fichier dans la corbeille?', // fromv2.1.24 added 5.5.2017
+			'confirmConvUTF8' : 'L\'encodage n\'est pas UTf-8<br/>Convertir en UTF-8?<br/>Les contenus deviendront UTF-8 en sauvegardant après la conversion.', // from v2.1 added 08.04.2014
+			'confirmNonUTF8'  : 'Character encoding of this file couldn\'t be detected. It need to temporarily convert to UTF-8 for editting.<br/>Please select character encoding of this file.', // from v2.1.19 added 28.11.2016
+			'confirmNotSave'  : 'Ce fichier a été modifié.<br/>Les données seront perdues si les changements ne sont pas sauvegardés.', // from v2.1 added 15.7.2015
+			'confirmTrash'    : 'Êtes-vous certain de vouloir déplacer les fichiers vers la corbeille?', //from v2.1.24 added 29.4.2017
+			'apllyAll'        : 'Appliquer à tous',
+			'name'            : 'Nom',
+			'size'            : 'Taille',
+			'perms'           : 'Permissions',
+			'modify'          : 'Modifié',
+			'kind'            : 'Type',
+			'read'            : 'Lecture',
+			'write'           : 'Écriture',
+			'noaccess'        : 'Pas d\'accès',
+			'and'             : 'et',
+			'unknown'         : 'inconnu',
+			'selectall'       : 'Sélectionner tous les fichiers',
+			'selectfiles'     : 'Sélectionner le(s) fichier(s)',
+			'selectffile'     : 'Sélectionner le premier fichier',
+			'selectlfile'     : 'Sélectionner le dernier fichier',
+			'viewlist'        : 'Vue par liste',
+			'viewicons'       : 'Vue par icônes',
+			'places'          : 'Places',
+			'calc'            : 'Calculer',
+			'path'            : 'Chemin',
+			'aliasfor'        : 'Raccourcis pour',
+			'locked'          : 'Verrouiller',
+			'dim'             : 'Dimensions',
+			'files'           : 'Fichiers',
+			'folders'         : 'Dossiers',
+			'items'           : 'Éléments',
+			'yes'             : 'oui',
+			'no'              : 'non',
+			'link'            : 'Lien',
+			'searcresult'     : 'Résultat de la recherche',
+			'selected'        : 'Éléments sélectionnés',
+			'about'           : 'À propos',
+			'shortcuts'       : 'Raccourcis',
+			'help'            : 'Aide',
+			'webfm'           : 'Gestionnaire de fichier Web',
+			'ver'             : 'Version',
+			'protocolver'     : 'Version du protocole',
+			'homepage'        : 'Page du projet',
+			'docs'            : 'Documentation',
+			'github'          : 'Forker-nous sur Github',
+			'twitter'         : 'Suivez nous sur twitter',
+			'facebook'        : 'Joignez-nous facebook',
+			'team'            : 'Équipe',
+			'chiefdev'        : 'Développeur en chef',
+			'developer'       : 'Développeur',
+			'contributor'     : 'Contributeur',
+			'maintainer'      : 'Mainteneur',
+			'translator'      : 'Traducteur',
+			'icons'           : 'Icônes',
+			'dontforget'      : 'et n\'oubliez pas votre serviette',
+			'shortcutsof'     : 'Raccourcis désactivés',
+			'dropFiles'       : 'Déposez les fichiers ici',
+			'or'              : 'ou',
+			'selectForUpload' : 'Sélectionner les fichiers à envoyer',
+			'moveFiles'       : 'Déplacer les fichiers',
+			'copyFiles'       : 'Copier les fichiers',
+			'restoreFiles'    : 'Restorer les fichiers', // from v2.1.24 added 5.5.2017
+			'rmFromPlaces'    : 'Retirer de Places',
+			'aspectRatio'     : 'Ratio d’affichage',
+			'scale'           : 'Mise à l\'échelle',
+			'width'           : 'Largeur',
+			'height'          : 'Hauteur',
+			'resize'          : 'Redimensionner',
+			'crop'            : 'Recadrer',
+			'rotate'          : 'Rotation',
+			'rotate-cw'       : 'Rotation de 90 degrés horaire',
+			'rotate-ccw'      : 'Rotation de 90 degrés antihoraire',
+			'degree'          : '°',
+			'netMountDialogTitle' : 'Monter un volume réseau', // added 18.04.2012
+			'protocol'            : 'Protocole', // added 18.04.2012
+			'host'                : 'Hôte', // added 18.04.2012
+			'port'                : 'Port', // added 18.04.2012
+			'user'                : 'Utilisateur', // added 18.04.2012
+			'pass'                : 'Mot de passe', // added 18.04.2012
+			'confirmUnmount'      : 'Démonter $1?',  // from v2.1 added 30.04.2012
+			'dropFilesBrowser': 'Glissez-déposez depuis le navigateur de fichier', // from v2.1 added 30.05.2012
+			'dropPasteFiles'  : 'Glissez-déposez les fichiers ici', // from v2.1 added 07.04.2014
+			'encoding'        : 'Encodage', // from v2.1 added 19.12.2014
+			'locale'          : 'Encodage régional',   // from v2.1 added 19.12.2014
+			'searchTarget'    : 'Destination: $1',                // from v2.1 added 22.5.2015
+			'searchMime'      : 'Recherche par type MIME', // from v2.1 added 22.5.2015
+			'owner'           : 'Propriétaire', // from v2.1 added 20.6.2015
+			'group'           : 'Groupe', // from v2.1 added 20.6.2015
+			'other'           : 'Autre', // from v2.1 added 20.6.2015
+			'execute'         : 'Exécuter', // from v2.1 added 20.6.2015
+			'perm'            : 'Permission', // from v2.1 added 20.6.2015
+			'mode'            : 'Mode', // from v2.1 added 20.6.2015
+			'emptyFolder'     : 'Le dossier est vide', // from v2.1.6 added 30.12.2015
+			'emptyFolderDrop' : 'Le dossier est vide.\\ Glissez-déposez pour ajouter des éléments.', // from v2.1.6 added 30.12.2015
+			'emptyFolderLTap' : 'Le dossier est vide.\\ Un appui long pour ajouter des éléments.', // from v2.1.6 added 30.12.2015
+			'quality'         : 'Qualité', // from v2.1.6 added 5.1.2016
+			'autoSync'        : 'Synchronisation automatique',  // from v2.1.6 added 10.1.2016
+			'moveUp'          : 'Déplacer vers le haut',  // from v2.1.6 added 18.1.2016
+			'getLink'         : 'Obtenir le lien d’URL', // from v2.1.7 added 9.2.2016
+			'selectedItems'   : 'Éléments sélectionnés ($1)', // from v2.1.7 added 2.19.2016
+			'folderId'        : 'ID du dossier', // from v2.1.10 added 3.25.2016
+			'offlineAccess'   : 'Permettre l\'accès offline', // from v2.1.10 added 3.25.2016
+			'reAuth'          : 'Pour se réauthentifier', // from v2.1.10 added 3.25.2016
+			'nowLoading'      : 'En cours de chargement...', // from v2.1.12 added 4.26.2016
+			'openMulti'       : 'Ouvrir multiples fichiers', // from v2.1.12 added 5.14.2016
+			'openMultiConfirm': 'You are trying to open the $1 files. Are you sure you want to open in browser?', // from v2.1.12 added 5.14.2016
+			'emptySearch'     : 'Search results is empty in search target.', // from v2.1.12 added 5.16.2016
+			'editingFile'     : 'It is editing a file.', // from v2.1.13 added 6.3.2016
+			'hasSelected'     : 'Vous avez sélectionné $1 fichier.', // from v2.1.13 added 6.3.2016
+			'hasClipboard'    : 'Vous avez $1 items dans le clipboard.', // from v2.1.13 added 6.3.2016
+			'incSearchOnly'   : 'La recherche incrémentale est seulement pour la vue active.', // from v2.1.13 added 6.30.2016
+			'reinstate'       : 'Reinstate', // from v2.1.15 added 3.8.2016
+			'complete'        : '$1 complété', // from v2.1.15 added 21.8.2016
+			'contextmenu'     : 'Context menu', // from v2.1.15 added 9.9.2016
+			'pageTurning'     : 'Page turning', // from v2.1.15 added 10.9.2016
+			'volumeRoots'     : 'Volumes principaux', // from v2.1.16 added 16.9.2016
+			'reset'           : 'Réinitialiser', // from v2.1.16 added 1.10.2016
+			'bgcolor'         : 'Couleur de fond', // from v2.1.16 added 1.10.2016
+			'colorPicker'     : 'Sélecteur de couleur', // from v2.1.16 added 1.10.2016
+			'8pxgrid'         : 'Grille 8px', // from v2.1.16 added 4.10.2016
+			'enabled'         : 'Actif', // from v2.1.16 added 4.10.2016
+			'disabled'        : 'Inactif', // from v2.1.16 added 4.10.2016
+			'emptyIncSearch'  : 'Search results is empty in current view.\\APress [Enter] to expand search target.', // from v2.1.16 added 5.10.2016
+			'emptyLetSearch'  : 'First letter search results is empty in current view.', // from v2.1.23 added 24.3.2017
+			'textLabel'       : 'Text label', // from v2.1.17 added 13.10.2016
+			'minsLeft'        : '$1 mins restants', // from v2.1.17 added 13.11.2016
+			'openAsEncoding'  : 'Réouvrir avec l\'encodage sélectionné', // from v2.1.19 added 2.12.2016
+			'saveAsEncoding'  : 'Sauvegarder avec l\'encodage sélectionné', // from v2.1.19 added 2.12.2016
+			'selectFolder'    : 'Choisir le dossier', // from v2.1.20 added 13.12.2016
+			'firstLetterSearch': 'Recherche par première lettre', // from v2.1.23 added 24.3.2017
+			'presets'         : 'Presets', // from v2.1.25 added 26.5.2017
+			'tooManyToTrash'  : 'It\'s too many items so it can\'t into trash.', // from v2.1.25 added 9.6.2017
+			'TextArea'        : 'TextArea', // from v2.1.25 added 14.6.2017
+			'folderToEmpty'   : 'Empty the folder "$1".', // from v2.1.25 added 22.6.2017
+			'filderIsEmpty'   : 'There are no items in a folder "$1".', // from v2.1.25 added 22.6.2017
+			'preference'      : 'Préférence', // from v2.1.26 added 28.6.2017
+			'language'        : 'Configuration de langue', // from v2.1.26 added 28.6.2017
+			'clearBrowserData': 'Initialisation des configurations sauvegardés dans ce navigateur', // from v2.1.26 added 28.6.2017
+
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : 'Inconnu',
+			'kindRoot'        : 'Volume principal', // from v2.1.16 added 16.10.2016
+			'kindFolder'      : 'Dossier',
+			'kindAlias'       : 'Raccourci',
+			'kindAliasBroken' : 'Raccourci cassé',
+			// applications
+			'kindApp'         : 'Application',
+			'kindPostscript'  : 'Document Postscript',
+			'kindMsOffice'    : 'Document Microsoft Office',
+			'kindMsWord'      : 'Document Microsoft Word',
+			'kindMsExcel'     : 'Document Microsoft Excel',
+			'kindMsPP'        : 'Présentation Microsoft PowerPoint',
+			'kindOO'          : 'Document OpenOffice',
+			'kindAppFlash'    : 'Application Flash',
+			'kindPDF'         : 'Portable Document Format (PDF)',
+			'kindTorrent'     : 'Fichier BitTorrent',
+			'kind7z'          : 'Archive 7z',
+			'kindTAR'         : 'Archive TAR',
+			'kindGZIP'        : 'Archive GZIP',
+			'kindBZIP'        : 'Archive BZIP',
+			'kindXZ'          : 'Archive XZ',
+			'kindZIP'         : 'Archive ZIP',
+			'kindRAR'         : 'Archive RAR',
+			'kindJAR'         : 'Fichier Java JAR',
+			'kindTTF'         : 'Police True Type',
+			'kindOTF'         : 'Police Open Type',
+			'kindRPM'         : 'Package RPM',
+			// texts
+			'kindText'        : 'Document Text',
+			'kindTextPlain'   : 'Texte non formaté',
+			'kindPHP'         : 'Source PHP',
+			'kindCSS'         : 'Feuille de style en cascade',
+			'kindHTML'        : 'Document HTML',
+			'kindJS'          : 'Source JavaScript',
+			'kindRTF'         : 'Format de texte enrichi (Rich Text Format)',
+			'kindC'           : 'Source C',
+			'kindCHeader'     : 'Source header C',
+			'kindCPP'         : 'Source C++',
+			'kindCPPHeader'   : 'Source header C++',
+			'kindShell'       : 'Shell script Unix',
+			'kindPython'      : 'Source Python',
+			'kindJava'        : 'Source Java',
+			'kindRuby'        : 'Source Ruby',
+			'kindPerl'        : 'Script Perl',
+			'kindSQL'         : 'Source SQL',
+			'kindXML'         : 'Document XML',
+			'kindAWK'         : 'Source AWK',
+			'kindCSV'         : 'CSV',
+			'kindDOCBOOK'     : 'Document Docbook XML',
+			'kindMarkdown'    : 'Markdown text', // added 20.7.2015
+			// images
+			'kindImage'       : 'Image',
+			'kindBMP'         : 'Image BMP',
+			'kindJPEG'        : 'Image JPEG',
+			'kindGIF'         : 'Image GIF',
+			'kindPNG'         : 'Image PNG',
+			'kindTIFF'        : 'Image TIFF',
+			'kindTGA'         : 'Image TGA',
+			'kindPSD'         : 'Image Adobe Photoshop',
+			'kindXBITMAP'     : 'Image X bitmap',
+			'kindPXM'         : 'Image Pixelmator',
+			// media
+			'kindAudio'       : 'Son',
+			'kindAudioMPEG'   : 'Son MPEG',
+			'kindAudioMPEG4'  : 'Son MPEG-4',
+			'kindAudioMIDI'   : 'Son MIDI',
+			'kindAudioOGG'    : 'Son Ogg Vorbis',
+			'kindAudioWAV'    : 'Son WAV',
+			'AudioPlaylist'   : 'Liste de lecture audio',
+			'kindVideo'       : 'Vidéo',
+			'kindVideoDV'     : 'Vidéo DV',
+			'kindVideoMPEG'   : 'Vidéo MPEG',
+			'kindVideoMPEG4'  : 'Vidéo MPEG-4',
+			'kindVideoAVI'    : 'Vidéo AVI',
+			'kindVideoMOV'    : 'Vidéo Quick Time',
+			'kindVideoWM'     : 'Vidéo Windows Media',
+			'kindVideoFlash'  : 'Vidéo Flash',
+			'kindVideoMKV'    : 'Vidéo Matroska',
+			'kindVideoOGG'    : 'Vidéo Ogg'
+		}
+	};
+}));
+

+ 375 - 0
src/assets/js/i18n/elfinder.he.js

@@ -0,0 +1,375 @@
+/**
+ * עברית translation
+ * @author Yaron Shahrabani <sh.yaron@gmail.com>
+ * @version 2015-11-02
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.he = {
+		translator : 'Yaron Shahrabani <sh.yaron@gmail.com>',
+		language   : 'עברית',
+		direction  : 'rtl',
+		dateFormat : 'd.m.Y H:i', // Mar 13, 2012 05:27 PM
+		fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM
+		messages   : {
+
+			/********************************** errors **********************************/
+			'error'                : 'שגיאה',
+			'errUnknown'           : 'שגיאה בלתי מוכרת.',
+			'errUnknownCmd'        : 'פקודה בלתי מוכרת.',
+			'errJqui'              : 'תצורת ה־jQuery UI שגויה. יש לכלול רכיבים הניתנים לבחירה, גרירה והשלכה.',
+			'errNode'              : 'elFinder דורש יצירה של רכיב DOM.',
+			'errURL'               : 'התצורה של elFinder שגויה! אפשרות הכתובת (URL) לא הוגדרה.',
+			'errAccess'            : 'הגישה נדחית.',
+			'errConnect'           : 'לא ניתן להתחבר למנגנון.',
+			'errAbort'             : 'החיבור בוטל.',
+			'errTimeout'           : 'זמן החיבור פג.',
+			'errNotFound'          : 'לא נמצא מנגנון.',
+			'errResponse'          : 'תגובת המנגנון שגויה.',
+			'errConf'              : 'תצורת המנגנון שגויה.',
+			'errJSON'              : 'המודול PHP JSON לא מותקן.',
+			'errNoVolumes'         : 'אין כוננים זמינים לקריאה.',
+			'errCmdParams'         : 'פרמטרים שגויים לפקודה „$1“.',
+			'errDataNotJSON'       : 'הנתונים אינם JSON.',
+			'errDataEmpty'         : 'הנתונים ריקים.',
+			'errCmdReq'            : 'בקשה למנגנון דורשת שם פקודה.',
+			'errOpen'              : 'לא ניתן לפתוח את „$1“.',
+			'errNotFolder'         : 'הפריט אינו תיקייה.',
+			'errNotFile'           : 'הפריט אינו קובץ.',
+			'errRead'              : 'לא ניתן לקרוא את „$1“.',
+			'errWrite'             : 'לא ניתן לכתוב אל „$1“.',
+			'errPerm'              : 'ההרשאה נדחתה.',
+			'errLocked'            : '„$1“ נעול ואין אפשרות לשנות את שמו, להעבירו או להסירו.',
+			'errExists'            : 'קובץ בשם „$1“ כבר קיים.',
+			'errInvName'           : 'שם הקובץ שגוי.',
+			'errFolderNotFound'    : 'התיקייה לא נמצאה.',
+			'errFileNotFound'      : 'הקובץ לא נמצא.',
+			'errTrgFolderNotFound' : 'תיקיית היעד „$1“ לא נמצאה.',
+			'errPopup'             : 'הדפדפן מנע פתיחת חלון קובץ. כדי לפתוח קובץ יש לאפשר זאת בהגדרות הדפדפן.',
+			'errMkdir'             : 'לא ניתן ליצור את התיקייה „$1“.',
+			'errMkfile'            : 'לא ניתן ליצור את הקובץ „$1“.',
+			'errRename'            : 'לא ניתן לשנות את השם של „$1“.',
+			'errCopyFrom'          : 'העתקת קבצים מהכונן „$1“ אינה מאופשרת.',
+			'errCopyTo'            : 'העתקת קבצים אל הכונן „$1“ אינה מאופשרת.',
+			'errUpload'            : 'שגיאת העלאה.',  // old name - errUploadCommon
+			'errUploadFile'        : 'לא ניתן להעלות את „$1“.', // old name - errUpload
+			'errUploadNoFiles'     : 'לא נמצאו קבצים להעלאה.',
+			'errUploadTotalSize'   : 'הנתונים חורגים מהגודל המרבי המותר.', // old name - errMaxSize
+			'errUploadFileSize'    : 'הקובץ חורג מהגודל המרבי המותר.', //  old name - errFileMaxSize
+			'errUploadMime'        : 'סוג הקובץ אינו מורשה.',
+			'errUploadTransfer'    : 'שגיאת העברה „$1“.',
+			'errNotReplace'        : 'הפריט „$1“ כבר קיים במיקום זה ואי אפשר להחליפו בפריט מסוג אחר.', // new
+			'errReplace'           : 'לא ניתן להחליף את „$1“.',
+			'errSave'              : 'לא ניתן לשמור את „$1“.',
+			'errCopy'              : 'לא ניתן להעתיק את „$1“.',
+			'errMove'              : 'לא ניתן להעביר את „$1“.',
+			'errCopyInItself'      : 'לא ניתן להעתיק את „$1“ לתוך עצמו.',
+			'errRm'                : 'לא ניתן להסיר את „$1“.',
+			'errRmSrc'             : 'לא ניתן להסיר את קובצי המקור.',
+			'errExtract'           : 'לא ניתן לחלץ קבצים מהארכיון „$1“.',
+			'errArchive'           : 'לא ניתן ליצור ארכיון.',
+			'errArcType'           : 'סוג הארכיון אינו נתמך.',
+			'errNoArchive'         : 'הקובץ אינו ארכיון או שסוג הקובץ שלו אינו נתמך.',
+			'errCmdNoSupport'      : 'המנגנון אינו תומך בפקודה זו.',
+			'errReplByChild'       : 'לא ניתן להחליף את התיקייה „$1“ בפריט מתוכה.',
+			'errArcSymlinks'       : 'מטעמי אבטחה לא ניתן לחלץ ארכיונים שמכילים קישורים סימבוליים או קבצים עם שמות בלתי מורשים.', // edited 24.06.2012
+			'errArcMaxSize'        : 'הארכיון חורג מהגודל המרבי המותר.',
+			'errResize'            : 'לא ניתן לשנות את הגודל של „$1“.',
+			'errResizeDegree'      : 'מעלות ההיפוך שגויות.',  // added 7.3.2013
+			'errResizeRotate'      : 'לא ניתן להפוך את התמונה.',  // added 7.3.2013
+			'errResizeSize'        : 'גודל התמונה שגוי.',  // added 7.3.2013
+			'errResizeNoChange'    : 'גודל התמונה לא השתנה.',  // added 7.3.2013
+			'errUsupportType'      : 'סוג הקובץ אינו נתמך.',
+			'errNotUTF8Content'    : 'הקובץ „$1“ הוא לא בתסדיר UTF-8 ולא ניתן לערוך אותו.',  // added 9.11.2011
+			'errNetMount'          : 'לא ניתן לעגן את „$1“.', // added 17.04.2012
+			'errNetMountNoDriver'  : 'פרוטוקול בלתי נתמך.',     // added 17.04.2012
+			'errNetMountFailed'    : 'העיגון נכשל.',         // added 17.04.2012
+			'errNetMountHostReq'   : 'נדרש מארח.', // added 18.04.2012
+			'errSessionExpires'    : 'ההפעלה שלך פגה עקב חוסר פעילות.',
+			'errCreatingTempDir'   : 'לא ניתן ליצור תיקייה זמנית: „$1“',
+			'errFtpDownloadFile'   : 'לא ניתן להוריד קובץ מ־ FTP: „$1“',
+			'errFtpUploadFile'     : 'לא ניתן להעלות קובץ ל־FTP: „$1“',
+			'errFtpMkdir'          : 'לא ניתן ליצור תיקייה מרוחקת ב־FTP: „$1“',
+			'errArchiveExec'       : 'שמירת הקבצים בארכיון נכשלה: „$1“',
+			'errExtractExec'       : 'חילוץ קבצים נכשל: „$1“',
+
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'יצירת ארכיון',
+			'cmdback'      : 'חזרה',
+			'cmdcopy'      : 'העתקה',
+			'cmdcut'       : 'גזירה',
+			'cmddownload'  : 'הורדה',
+			'cmdduplicate' : 'שכפול',
+			'cmdedit'      : 'עריכת קובץ',
+			'cmdextract'   : 'חילוץ קבצים מארכיון',
+			'cmdforward'   : 'העברה',
+			'cmdgetfile'   : 'בחירת קבצים',
+			'cmdhelp'      : 'פרטים על התכנית הזו',
+			'cmdhome'      : 'בית',
+			'cmdinfo'      : 'קבלת מידע',
+			'cmdmkdir'     : 'תיקייה חדשה',
+			'cmdmkfile'    : 'קובץ טקסט חדש',
+			'cmdopen'      : 'פתיחה',
+			'cmdpaste'     : 'הדבקה',
+			'cmdquicklook' : 'תצוגה מקדימה',
+			'cmdreload'    : 'רענון',
+			'cmdrename'    : 'שינוי שם',
+			'cmdrm'        : 'מחיקה',
+			'cmdsearch'    : 'חיפוש קבצים',
+			'cmdup'        : 'מעבר לתיקיית ההורה',
+			'cmdupload'    : 'העלאת קבצים',
+			'cmdview'      : 'תצוגה',
+			'cmdresize'    : 'שינוי גודל והיפוך',
+			'cmdsort'      : 'מיון',
+			'cmdnetmount'  : 'עיגון כונן רשת', // added 18.04.2012
+
+			/*********************************** buttons ***********************************/
+			'btnClose'  : 'סגירה',
+			'btnSave'   : 'שמירה',
+			'btnRm'     : 'הסרה',
+			'btnApply'  : 'החלה',
+			'btnCancel' : 'ביטול',
+			'btnNo'     : 'לא',
+			'btnYes'    : 'כן',
+			'btnMount'  : 'עיגון',  // added 18.04.2012
+
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'פתיחת תיקייה',
+			'ntffile'     : 'פתיחת קובץ',
+			'ntfreload'   : 'רענון תוכן התיקייה',
+			'ntfmkdir'    : 'תיקייה נוצרת',
+			'ntfmkfile'   : 'קבצים נוצרים',
+			'ntfrm'       : 'קבצים נמחקים',
+			'ntfcopy'     : 'קבצים מועתקים',
+			'ntfmove'     : 'קבצים מועברים',
+			'ntfprepare'  : 'העתקת קבצים בהכנה',
+			'ntfrename'   : 'שמות קבצים משתנים',
+			'ntfupload'   : 'קבצים נשלחים',
+			'ntfdownload' : 'קבצים מתקבלים',
+			'ntfsave'     : 'שמירת קבצים',
+			'ntfarchive'  : 'ארכיון נוצר',
+			'ntfextract'  : 'מחולצים קבצים מארכיון',
+			'ntfsearch'   : 'קבצים בחיפוש',
+			'ntfresize'   : 'גודל קבצים משתנה',
+			'ntfsmth'     : 'מתבצעת פעולה',
+			'ntfloadimg'  : 'נטענת תמונה',
+			'ntfnetmount' : 'כונן רשת מעוגן', // added 18.04.2012
+			'ntfdim'      : 'ממדי תמונה מתקבלים', // added 20.05.2013
+
+			/************************************ dates **********************************/
+			'dateUnknown' : 'לא ידוע',
+			'Today'       : 'היום',
+			'Yesterday'   : 'מחר',
+			'msJan'       : 'ינו׳',
+			'msFeb'       : 'פבר׳',
+			'msMar'       : 'מרץ',
+			'msApr'       : 'אפר׳',
+			'msMay'       : 'מאי',
+			'msJun'       : 'יונ׳',
+			'msJul'       : 'יול׳',
+			'msAug'       : 'אוג׳',
+			'msSep'       : 'ספט׳',
+			'msOct'       : 'אוק׳',
+			'msNov'       : 'נוב׳',
+			'msDec'       : 'דצמ׳',
+			'January'     : 'ינואר',
+			'February'    : 'פברואר',
+			'March'       : 'מרץ',
+			'April'       : 'אפריל',
+			'May'         : 'מאי',
+			'June'        : 'יוני',
+			'July'        : 'יולי',
+			'August'      : 'אוגוסט',
+			'September'   : 'ספטמבר',
+			'October'     : 'אוקטובר',
+			'November'    : 'נובמבר',
+			'December'    : 'דצמבר',
+			'Sunday'      : 'יום ראשון',
+			'Monday'      : 'יום שני',
+			'Tuesday'     : 'יום שלישי',
+			'Wednesday'   : 'יום רביעי',
+			'Thursday'    : 'יום חמישי',
+			'Friday'      : 'יום שישי',
+			'Saturday'    : 'שבת',
+			'Sun'         : 'א׳',
+			'Mon'         : 'ב׳',
+			'Tue'         : 'ג׳',
+			'Wed'         : 'ד׳',
+			'Thu'         : 'ה',
+			'Fri'         : 'ו׳',
+			'Sat'         : 'ש׳',
+
+			/******************************** sort variants ********************************/
+			'sortname'          : 'לפי שם',
+			'sortkind'          : 'לפי סוג',
+			'sortsize'          : 'לפי גודל',
+			'sortdate'          : 'לפי תאריך',
+			'sortFoldersFirst'  : 'תיקיות תחילה',
+
+			/********************************** messages **********************************/
+			'confirmReq'      : 'נדרש אישור',
+			'confirmRm'       : 'להסיר את הקבצים?<br/>פעולה זו בלתי הפיכה!',
+			'confirmRepl'     : 'להחליף קובץ ישן בקובץ חדש?',
+			'apllyAll'        : 'להחיל על הכול',
+			'name'            : 'שם',
+			'size'            : 'גודל',
+			'perms'           : 'הרשאות',
+			'modify'          : 'שינוי',
+			'kind'            : 'סוג',
+			'read'            : 'קריאה',
+			'write'           : 'כתיבה',
+			'noaccess'        : 'אין גישה',
+			'and'             : 'וגם',
+			'unknown'         : 'לא ידוע',
+			'selectall'       : 'בחירת כל הקבצים',
+			'selectfiles'     : 'בחירת קובץ אחד ומעלה',
+			'selectffile'     : 'בחירת הקובץ הראשון',
+			'selectlfile'     : 'בחירת הקובץ האחרון',
+			'viewlist'        : 'תצוגת רשימה',
+			'viewicons'       : 'תצוגת סמלים',
+			'places'          : 'מיקומים',
+			'calc'            : 'חישוב',
+			'path'            : 'נתיב',
+			'aliasfor'        : 'כינוי עבור',
+			'locked'          : 'נעול',
+			'dim'             : 'ממדים',
+			'files'           : 'קבצים',
+			'folders'         : 'תיקיות',
+			'items'           : 'פריטים',
+			'yes'             : 'כן',
+			'no'              : 'לא',
+			'link'            : 'קישור',
+			'searcresult'     : 'תוצאות חיפוש',
+			'selected'        : 'קבצים נבחרים',
+			'about'           : 'על אודות',
+			'shortcuts'       : 'קיצורי דרך',
+			'help'            : 'עזרה',
+			'webfm'           : 'מנהל קבצים בדפדפן',
+			'ver'             : 'גרסה',
+			'protocolver'     : 'גרסת פרוטוקול',
+			'homepage'        : 'דף הבית של המיזם',
+			'docs'            : 'תיעוד',
+			'github'          : 'פילוג עותק ב־Github',
+			'twitter'         : 'לעקוב אחרינו בטוויטר',
+			'facebook'        : 'להצטרף אלינו בפייסבוק',
+			'team'            : 'צוות',
+			'chiefdev'        : 'מפתח ראשי',
+			'developer'       : 'מתכנת',
+			'contributor'     : 'תורם',
+			'maintainer'      : 'מתחזק',
+			'translator'      : 'מתרגם',
+			'icons'           : 'סמלים',
+			'dontforget'      : 'לא לשכוח לקחת את המגבת שלך',
+			'shortcutsof'     : 'קיצורי הדרך מנוטרלים',
+			'dropFiles'       : 'ניתן להשליך את הקבצים לכאן',
+			'or'              : 'או',
+			'selectForUpload' : 'לבחור קבצים להעלאה',
+			'moveFiles'       : 'העברת קבצים',
+			'copyFiles'       : 'העתקת קבצים',
+			'rmFromPlaces'    : 'הסרה ממיקומים',
+			'aspectRatio'     : 'יחס תצוגה',
+			'scale'           : 'מתיחה',
+			'width'           : 'רוחב',
+			'height'          : 'גובה',
+			'resize'          : 'שינוי הגודל',
+			'crop'            : 'חיתוך',
+			'rotate'          : 'היפוך',
+			'rotate-cw'       : 'היפוך ב־90 מעלות נגד השעון',
+			'rotate-ccw'      : 'היפוך ב־90 מעלות עם השעון CCW',
+			'degree'          : '°',
+			'netMountDialogTitle' : 'עיגון כונן רשת', // added 18.04.2012
+			'protocol'            : 'פרוטוקול', // added 18.04.2012
+			'host'                : 'מארח', // added 18.04.2012
+			'port'                : 'פתחה', // added 18.04.2012
+			'user'                : 'משתמש', // added 18.04.2012
+			'pass'                : 'ססמה', // added 18.04.2012
+
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : 'בלתי ידוע',
+			'kindFolder'      : 'תיקייה',
+			'kindAlias'       : 'כינוי',
+			'kindAliasBroken' : 'כינוי שבור',
+			// applications
+			'kindApp'         : 'יישום',
+			'kindPostscript'  : 'מסמך Postscript',
+			'kindMsOffice'    : 'מסמך Microsoft Office',
+			'kindMsWord'      : 'מסמך Microsoft Word',
+			'kindMsExcel'     : 'מסמך Microsoft Excel',
+			'kindMsPP'        : 'מצגת Microsoft Powerpoint',
+			'kindOO'          : 'מסמך Open Office',
+			'kindAppFlash'    : 'יישום Flash',
+			'kindPDF'         : 'Portable Document Format (PDF)',
+			'kindTorrent'     : 'קובץ Bittorrent',
+			'kind7z'          : 'ארכיון 7z',
+			'kindTAR'         : 'ארכיון TAR',
+			'kindGZIP'        : 'ארכיון GZIP',
+			'kindBZIP'        : 'ארכיון BZIP',
+			'kindXZ'          : 'ארכיון XZ',
+			'kindZIP'         : 'ארכיון ZIP',
+			'kindRAR'         : 'ארכיון RAR',
+			'kindJAR'         : 'קובץ JAR של Java',
+			'kindTTF'         : 'גופן True Type',
+			'kindOTF'         : 'גופן Open Type',
+			'kindRPM'         : 'חבילת RPM',
+			// texts
+			'kindText'        : 'מסמך טקסט',
+			'kindTextPlain'   : 'טקסט פשוט',
+			'kindPHP'         : 'מקור PHP',
+			'kindCSS'         : 'גיליון סגנון מדורג',
+			'kindHTML'        : 'מסמך HTML',
+			'kindJS'          : 'מקור Javascript',
+			'kindRTF'         : 'תבנית טקסט עשיר',
+			'kindC'           : 'מקור C',
+			'kindCHeader'     : 'מקור כותרת C',
+			'kindCPP'         : 'מקור C++',
+			'kindCPPHeader'   : 'מקור כותרת C++',
+			'kindShell'       : 'תסריט מעטפת יוניקס',
+			'kindPython'      : 'מקור Python',
+			'kindJava'        : 'מקור Java',
+			'kindRuby'        : 'מקור Ruby',
+			'kindPerl'        : 'תסריט Perl',
+			'kindSQL'         : 'מקור SQL',
+			'kindXML'         : 'מקור XML',
+			'kindAWK'         : 'מקור AWK',
+			'kindCSV'         : 'ערכים מופרדים בפסיקים',
+			'kindDOCBOOK'     : 'מסמךDocbook XML',
+			// images
+			'kindImage'       : 'תמונה',
+			'kindBMP'         : 'תמונת BMP',
+			'kindJPEG'        : 'תמונת JPEG',
+			'kindGIF'         : 'תמונת GIF',
+			'kindPNG'         : 'תמונת PNG',
+			'kindTIFF'        : 'תמונת TIFF',
+			'kindTGA'         : 'תמונת TGA',
+			'kindPSD'         : 'תמונת Adobe Photoshop',
+			'kindXBITMAP'     : 'תמונת מפת סיביות X',
+			'kindPXM'         : 'תמונת Pixelmator',
+			// media
+			'kindAudio'       : 'מדיה מסוג שמע',
+			'kindAudioMPEG'   : 'שמע MPEG',
+			'kindAudioMPEG4'  : 'שמע MPEG-4',
+			'kindAudioMIDI'   : 'שמע MIDI',
+			'kindAudioOGG'    : 'שמע Ogg Vorbis',
+			'kindAudioWAV'    : 'שמע WAV',
+			'AudioPlaylist'   : 'רשימת נגינה MP3',
+			'kindVideo'       : 'מדיה מסוג וידאו',
+			'kindVideoDV'     : 'סרטון DV',
+			'kindVideoMPEG'   : 'סרטון MPEG',
+			'kindVideoMPEG4'  : 'סרטון MPEG-4',
+			'kindVideoAVI'    : 'סרטון AVI',
+			'kindVideoMOV'    : 'סרטון Quick Time',
+			'kindVideoWM'     : 'סרטון Windows Media',
+			'kindVideoFlash'  : 'סרטון Flash',
+			'kindVideoMKV'    : 'סרטון Matroska',
+			'kindVideoOGG'    : 'סרטון Ogg'
+		}
+	};
+}));
+

+ 434 - 0
src/assets/js/i18n/elfinder.hr.js

@@ -0,0 +1,434 @@
+/**
+ * hr translation
+ * @version 2016-04-18
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.hr = {
+		translator : '',
+		language   : 'Croatian',
+		direction  : 'ltr',
+		dateFormat : 'd.m.Y. H:i', // Mar 13, 2012 05:27 PM
+		fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM
+		messages   : {
+
+			/********************************** errors **********************************/
+			'error'                : 'Greška',
+			'errUnknown'           : 'Nepoznata greška.',
+			'errUnknownCmd'        : 'Nepoznata naredba.',
+			'errJqui'              : 'Kriva jQuery UI konfiguracija. Selectable, draggable, i droppable komponente moraju biti uključene.',
+			'errNode'              : 'elFinder zahtjeva DOM element da bi bio stvoren.',
+			'errURL'               : 'Krivo konfiguriran elFinder. Opcija URL nije postavljena.',
+			'errAccess'            : 'Zabranjen pristup.',
+			'errConnect'           : 'Nije moguće spajanje na server.',
+			'errAbort'             : 'Prekinuta veza.',
+			'errTimeout'           : 'Veza je istekla.',
+			'errNotFound'          : 'Server nije pronađen.',
+			'errResponse'          : 'Krivi odgovor servera.',
+			'errConf'              : 'Krivo konfiguriran server',
+			'errJSON'              : 'Nije instaliran PHP JSON modul.',
+			'errNoVolumes'         : 'Disk nije dostupan.',
+			'errCmdParams'         : 'Krivi parametri za naredbu "$1".',
+			'errDataNotJSON'       : 'Podaci nisu tipa JSON.',
+			'errDataEmpty'         : 'Nema podataka.',
+			'errCmdReq'            : 'Backend request requires command name.',
+			'errOpen'              : 'Ne mogu otvoriti "$1".',
+			'errNotFolder'         : 'Objekt nije mapa.',
+			'errNotFile'           : 'Objekt nije dokument.',
+			'errRead'              : 'Ne mogu pročitati "$1".',
+			'errWrite'             : 'Ne mogu pisati u "$1".',
+			'errPerm'              : 'Pristup zabranjen',
+			'errLocked'            : '"$1" je zaključan i ne može biti preimenovan, premješten ili obrisan.',
+			'errExists'            : 'Dokument s imenom "$1" već postoji.',
+			'errInvName'           : 'Krivo ime dokumenta',
+			'errFolderNotFound'    : 'Mapa nije pronađena',
+			'errFileNotFound'      : 'Dokument nije pronađen',
+			'errTrgFolderNotFound' : 'Mapa "$1" nije pronađena',
+			'errPopup'             : 'Browser prevented opening popup window. To open file enable it in browser options.',
+			'errMkdir'             : 'Ne mogu napraviti mapu "$1".',
+			'errMkfile'            : 'Ne mogu napraviti dokument "$1".',
+			'errRename'            : 'Ne mogu preimenovati "$1".',
+			'errCopyFrom'          : 'Kopiranje s diska "$1" nije dozvoljeno.',
+			'errCopyTo'            : 'Kopiranje na disk "$1" nije dozvoljeno.',
+			'errMkOutLink'         : 'Unable to create a link to outside the volume root.', // from v2.1 added 03.10.2015
+			'errUpload'            : 'Greška pri prebacivanju dokumenta na server.',  // old name - errUploadCommon
+			'errUploadFile'        : 'Ne mogu prebaciti "$1" na server', // old name - errUpload
+			'errUploadNoFiles'     : 'Nema dokumenata za prebacivanje na server',
+			'errUploadTotalSize'   : 'Dokumenti prelaze maksimalnu dopuštenu veličinu.', // old name - errMaxSize
+			'errUploadFileSize'    : 'Dokument je prevelik.', //  old name - errFileMaxSize
+			'errUploadMime'        : 'Ovaj tip dokumenta nije dopušten.',
+			'errUploadTransfer'    : '"$1" greška pri prebacivanju',
+			'errUploadTemp'        : 'Ne mogu napraviti privremeni dokument za prijenos na server', // from v2.1 added 26.09.2015
+			'errNotReplace'        : 'Object "$1" already exists at this location and can not be replaced by object with another type.', // new
+			'errReplace'           : 'Ne mogu zamijeniti "$1".',
+			'errSave'              : 'Ne mogu spremiti "$1".',
+			'errCopy'              : 'Ne mogu kopirati "$1".',
+			'errMove'              : 'Ne mogu premjestiti "$1".',
+			'errCopyInItself'      : 'Ne mogu kopirati "$1" na isto mjesto.',
+			'errRm'                : 'Ne mogu ukloniti "$1".',
+			'errRmSrc'             : 'Ne mogu ukloniti izvorni kod.',
+			'errExtract'           : 'Unable to extract files from "$1".',
+			'errArchive'           : 'Unable to create archive.',
+			'errArcType'           : 'Unsupported archive type.',
+			'errNoArchive'         : 'File is not archive or has unsupported archive type.',
+			'errCmdNoSupport'      : 'Backend does not support this command.',
+			'errReplByChild'       : 'The folder "$1" can\'t be replaced by an item it contains.',
+			'errArcSymlinks'       : 'For security reason denied to unpack archives contains symlinks or files with not allowed names.', // edited 24.06.2012
+			'errArcMaxSize'        : 'Archive files exceeds maximum allowed size.',
+			'errResize'            : 'Unable to resize "$1".',
+			'errResizeDegree'      : 'Invalid rotate degree.',  // added 7.3.2013
+			'errResizeRotate'      : 'Unable to rotate image.',  // added 7.3.2013
+			'errResizeSize'        : 'Invalid image size.',  // added 7.3.2013
+			'errResizeNoChange'    : 'Image size not changed.',  // added 7.3.2013
+			'errUsupportType'      : 'Unsupported file type.',
+			'errNotUTF8Content'    : 'File "$1" is not in UTF-8 and cannot be edited.',  // added 9.11.2011
+			'errNetMount'          : 'Unable to mount "$1".', // added 17.04.2012
+			'errNetMountNoDriver'  : 'Unsupported protocol.',     // added 17.04.2012
+			'errNetMountFailed'    : 'Mount failed.',         // added 17.04.2012
+			'errNetMountHostReq'   : 'Host required.', // added 18.04.2012
+			'errSessionExpires'    : 'Your session has expired due to inactivity.',
+			'errCreatingTempDir'   : 'Unable to create temporary directory: "$1"',
+			'errFtpDownloadFile'   : 'Unable to download file from FTP: "$1"',
+			'errFtpUploadFile'     : 'Unable to upload file to FTP: "$1"',
+			'errFtpMkdir'          : 'Unable to create remote directory on FTP: "$1"',
+			'errArchiveExec'       : 'Error while archiving files: "$1"',
+			'errExtractExec'       : 'Error while extracting files: "$1"',
+			'errNetUnMount'        : 'Unable to unmount', // from v2.1 added 30.04.2012
+			'errConvUTF8'          : 'Not convertible to UTF-8', // from v2.1 added 08.04.2014
+			'errFolderUpload'      : 'Try Google Chrome, If you\'d like to upload the folder.', // from v2.1 added 26.6.2015
+			'errSearchTimeout'     : 'Timed out while searching "$1". Search result is partial.', // from v2.1 added 12.1.2016
+			'errReauthRequire'     : 'Re-authorization is required.', // from v2.1.10 added 3.24.2016
+
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'Arhiviraj',
+			'cmdback'      : 'Nazad',
+			'cmdcopy'      : 'Kopiraj',
+			'cmdcut'       : 'Izreži',
+			'cmddownload'  : 'Preuzmi',
+			'cmdduplicate' : 'Dupliciraj',
+			'cmdedit'      : 'Uredi dokument',
+			'cmdextract'   : 'Raspakiraj arhivu',
+			'cmdforward'   : 'Naprijed',
+			'cmdgetfile'   : 'Odaberi dokumente',
+			'cmdhelp'      : 'O programu',
+			'cmdhome'      : 'Početak',
+			'cmdinfo'      : 'Info',
+			'cmdmkdir'     : 'Nova mapa',
+			'cmdmkdirin'   : 'U novu mapu', // from v2.1.7 added 19.2.2016
+			'cmdmkfile'    : 'Novi tekst dokument',
+			'cmdopen'      : 'Otvori',
+			'cmdpaste'     : 'Zalijepi',
+			'cmdquicklook' : 'Pregled',
+			'cmdreload'    : 'Ponovo učitaj',
+			'cmdrename'    : 'Preimenuj',
+			'cmdrm'        : 'Obriši',
+			'cmdsearch'    : 'Pronađi',
+			'cmdup'        : 'Roditeljska mapa',
+			'cmdupload'    : 'Prebaci dokumente na server',
+			'cmdview'      : 'Pregledaj',
+			'cmdresize'    : 'Promjeni veličinu i rotiraj',
+			'cmdsort'      : 'Sortiraj',
+			'cmdnetmount'  : 'Spoji se na mrežni disk', // added 18.04.2012
+			'cmdnetunmount': 'Odspoji disk', // from v2.1 added 30.04.2012
+			'cmdplaces'    : 'To Places', // added 28.12.2014
+			'cmdchmod'     : 'Change mode', // from v2.1 added 20.6.2015
+			'cmdopendir'   : 'Otvori mapu', // from v2.1 added 13.1.2016
+
+			/*********************************** buttons ***********************************/
+			'btnClose'  : 'Zatvori',
+			'btnSave'   : 'Spremi',
+			'btnRm'     : 'Ukloni',
+			'btnApply'  : 'Primjeni',
+			'btnCancel' : 'Odustani',
+			'btnNo'     : 'Ne',
+			'btnYes'    : 'Da',
+			'btnMount'  : 'Mount',  // added 18.04.2012
+			'btnApprove': 'Goto $1 & approve', // from v2.1 added 26.04.2012
+			'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012
+			'btnConv'   : 'Convert', // from v2.1 added 08.04.2014
+			'btnCwd'    : 'Here',      // from v2.1 added 22.5.2015
+			'btnVolume' : 'Volume',    // from v2.1 added 22.5.2015
+			'btnAll'    : 'All',       // from v2.1 added 22.5.2015
+			'btnMime'   : 'MIME Type', // from v2.1 added 22.5.2015
+			'btnFileName':'Filename',  // from v2.1 added 22.5.2015
+			'btnSaveClose': 'Spremi i zatvori', // from v2.1 added 12.6.2015
+			'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015
+
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'Otvori mapu',
+			'ntffile'     : 'Otvori dokument',
+			'ntfreload'   : 'Ponovo učitaj sadržaj mape',
+			'ntfmkdir'    : 'Radim mapu',
+			'ntfmkfile'   : 'Radim dokumente',
+			'ntfrm'       : 'Brišem dokumente',
+			'ntfcopy'     : 'Kopiram dokumente',
+			'ntfmove'     : 'Mičem dokumente',
+			'ntfprepare'  : 'Priprema za kopiranje dokumenata',
+			'ntfrename'   : 'Preimenuj dokumente',
+			'ntfupload'   : 'Pohranjujem dokumente na server',
+			'ntfdownload' : 'Preuzimam dokumente',
+			'ntfsave'     : 'Spremi dokumente',
+			'ntfarchive'  : 'Radim arhivu',
+			'ntfextract'  : 'Extracting files from archive',
+			'ntfsearch'   : 'Tražim dokumente',
+			'ntfresize'   : 'Resizing images',
+			'ntfsmth'     : 'Doing something',
+			'ntfloadimg'  : 'Učitavam sliku',
+			'ntfnetmount' : 'Mounting network volume', // added 18.04.2012
+			'ntfnetunmount': 'Unmounting network volume', // from v2.1 added 30.04.2012
+			'ntfdim'      : 'Acquiring image dimension', // added 20.05.2013
+			'ntfreaddir'  : 'Reading folder infomation', // from v2.1 added 01.07.2013
+			'ntfurl'      : 'Getting URL of link', // from v2.1 added 11.03.2014
+			'ntfchmod'    : 'Changing file mode', // from v2.1 added 20.6.2015
+			'ntfpreupload': 'Verifying upload file name', // from v2.1 added 31.11.2015
+			'ntfzipdl'    : 'Creating a file for download', // from v2.1.7 added 23.1.2016
+
+			/************************************ dates **********************************/
+			'dateUnknown' : 'nepoznato',
+			'Today'       : 'Danas',
+			'Yesterday'   : 'Jučer',
+			'msJan'       : 'Sij',
+			'msFeb'       : 'Vel',
+			'msMar'       : 'Ožu',
+			'msApr'       : 'Tra',
+			'msMay'       : 'Svi',
+			'msJun'       : 'Lip',
+			'msJul'       : 'Srp',
+			'msAug'       : 'Kol',
+			'msSep'       : 'Ruj',
+			'msOct'       : 'Lis',
+			'msNov'       : 'Stu',
+			'msDec'       : 'Pro',
+			'January'     : 'Siječanj',
+			'February'    : 'Veljača',
+			'March'       : 'Ožujak',
+			'April'       : 'Travanj',
+			'May'         : 'Svibanj',
+			'June'        : 'Lipanj',
+			'July'        : 'Srpanj',
+			'August'      : 'Kolovoz',
+			'September'   : 'Rujan',
+			'October'     : 'Listopad',
+			'November'    : 'Studeni',
+			'December'    : 'Prosinac',
+			'Sunday'      : 'Nedjelja',
+			'Monday'      : 'Ponedjeljak',
+			'Tuesday'     : 'Utorak',
+			'Wednesday'   : 'Srijeda',
+			'Thursday'    : 'Četvrtak',
+			'Friday'      : 'Petak',
+			'Saturday'    : 'Subota',
+			'Sun'         : 'Ned',
+			'Mon'         : 'Pon',
+			'Tue'         : 'Uto',
+			'Wed'         : 'Sri',
+			'Thu'         : 'Čet',
+			'Fri'         : 'Pet',
+			'Sat'         : 'Sub',
+
+			/******************************** sort variants ********************************/
+			'sortname'          : 'po imenu',
+			'sortkind'          : 'po tipu',
+			'sortsize'          : 'po veličini',
+			'sortdate'          : 'po datumu',
+			'sortFoldersFirst'  : 'Prvo mape',
+
+			/********************************** new items **********************************/
+			'untitled file.txt' : 'NoviDokument.txt', // added 10.11.2015
+			'untitled folder'   : 'NovaMapa',   // added 10.11.2015
+			'Archive'           : 'NovaArhiva',  // from v2.1 added 10.11.2015
+
+			/********************************** messages **********************************/
+			'confirmReq'      : 'Potvrda',
+			'confirmRm'       : 'Jeste li sigurni?',
+			'confirmRepl'     : 'Zamijeni stare dokumente novima?',
+			'confirmConvUTF8' : 'Not in UTF-8<br/>Convert to UTF-8?<br/>Contents become UTF-8 by saving after conversion.', // from v2.1 added 08.04.2014
+			'confirmNotSave'  : 'It has been modified.<br/>Losing work if you do not save changes.', // from v2.1 added 15.7.2015
+			'apllyAll'        : 'Primjeni na sve ',
+			'name'            : 'Ime',
+			'size'            : 'Veličina',
+			'perms'           : 'Dozvole',
+			'modify'          : 'Modificiran',
+			'kind'            : 'Tip',
+			'read'            : 'čitanje',
+			'write'           : 'pisanje',
+			'noaccess'        : 'bez pristupa',
+			'and'             : 'i',
+			'unknown'         : 'nepoznato',
+			'selectall'       : 'Odaberi sve',
+			'selectfiles'     : 'Odaberi dokument(e)',
+			'selectffile'     : 'Odaberi prvi dokument',
+			'selectlfile'     : 'Odaberi zadnji dokument',
+			'viewlist'        : 'Lista',
+			'viewicons'       : 'Ikone',
+			'places'          : 'Mjesta',
+			'calc'            : 'Računaj',
+			'path'            : 'Put',
+			'aliasfor'        : 'Drugo ime za',
+			'locked'          : 'Zaključano',
+			'dim'             : 'Dimenzije',
+			'files'           : 'Dokumenti',
+			'folders'         : 'Mape',
+			'items'           : 'Items',
+			'yes'             : 'da',
+			'no'              : 'ne',
+			'link'            : 'poveznica',
+			'searcresult'     : 'Rezultati pretrage',
+			'selected'        : 'selected items',
+			'about'           : 'Info',
+			'shortcuts'       : 'Prečaci',
+			'help'            : 'Pomoć',
+			'webfm'           : 'Web file manager',
+			'ver'             : 'Verzija',
+			'protocolver'     : 'protocol version',
+			'homepage'        : 'Project home',
+			'docs'            : 'Dokumentacija',
+			'github'          : 'Fork us on Github',
+			'twitter'         : 'Follow us on twitter',
+			'facebook'        : 'Join us on facebook',
+			'team'            : 'Tim',
+			'chiefdev'        : 'glavni developer',
+			'developer'       : 'developer',
+			'contributor'     : 'contributor',
+			'maintainer'      : 'maintainer',
+			'translator'      : 'translator',
+			'icons'           : 'Ikone',
+			'dontforget'      : 'and don\'t forget to take your towel',
+			'shortcutsof'     : 'Prečaci isključeni',
+			'dropFiles'       : 'Ovdje ispusti dokumente',
+			'or'              : 'ili',
+			'selectForUpload' : 'Odaberi dokumente koje prebacuješ na server',
+			'moveFiles'       : 'Premjesti dokumente',
+			'copyFiles'       : 'Kopiraj dokumente',
+			'rmFromPlaces'    : 'Remove from places',
+			'aspectRatio'     : 'Aspect ratio',
+			'scale'           : 'Skaliraj',
+			'width'           : 'Širina',
+			'height'          : 'Visina',
+			'resize'          : 'Resize',
+			'crop'            : 'Crop',
+			'rotate'          : 'Rotate',
+			'rotate-cw'       : 'Rotate 90 degrees CW',
+			'rotate-ccw'      : 'Rotate 90 degrees CCW',
+			'degree'          : '°',
+			'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012
+			'protocol'            : 'Protocol', // added 18.04.2012
+			'host'                : 'Host', // added 18.04.2012
+			'port'                : 'Port', // added 18.04.2012
+			'user'                : 'User', // added 18.04.2012
+			'pass'                : 'Password', // added 18.04.2012
+			'confirmUnmount'      : 'Are you unmount $1?',  // from v2.1 added 30.04.2012
+			'dropFilesBrowser': 'Drop or Paste files from browser', // from v2.1 added 30.05.2012
+			'dropPasteFiles'  : 'Drop or Paste files and URLs here', // from v2.1 added 07.04.2014
+			'encoding'        : 'Encoding', // from v2.1 added 19.12.2014
+			'locale'          : 'Locale',   // from v2.1 added 19.12.2014
+			'searchTarget'    : 'Target: $1',                // from v2.1 added 22.5.2015
+			'searchMime'      : 'Search by input MIME Type', // from v2.1 added 22.5.2015
+			'owner'           : 'Vlasnik', // from v2.1 added 20.6.2015
+			'group'           : 'Grupa', // from v2.1 added 20.6.2015
+			'other'           : 'Other', // from v2.1 added 20.6.2015
+			'execute'         : 'Izvrši', // from v2.1 added 20.6.2015
+			'perm'            : 'Dozvole', // from v2.1 added 20.6.2015
+			'mode'            : 'Mode', // from v2.1 added 20.6.2015
+			'emptyFolder'     : 'Mapa je prazna', // from v2.1.6 added 30.12.2015
+			'emptyFolderDrop' : 'Mapa je prazna\\A Dovuci dokumente koje želiš dodati', // from v2.1.6 added 30.12.2015
+			'emptyFolderLTap' : 'Mapa je prazna\\A Pritisni dugo za dodavanje dokumenata', // from v2.1.6 added 30.12.2015
+			'quality'         : 'Kvaliteta', // from v2.1.6 added 5.1.2016
+			'autoSync'        : 'Auto sync',  // from v2.1.6 added 10.1.2016
+			'moveUp'          : 'Gore',  // from v2.1.6 added 18.1.2016
+			'getLink'         : 'Get URL link', // from v2.1.7 added 9.2.2016
+			'selectedItems'   : 'Selected items ($1)', // from v2.1.7 added 2.19.2016
+			'folderId'        : 'Folder ID', // from v2.1.10 added 3.25.2016
+			'offlineAccess'   : 'Allow offline access', // from v2.1.10 added 3.25.2016
+			'reAuth'          : 'To re-authenticate', // from v2.1.10 added 3.25.2016
+
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : 'Unknown',
+			'kindFolder'      : 'Mapa',
+			'kindAlias'       : 'Drugo ime',
+			'kindAliasBroken' : 'Broken alias',
+			// applications
+			'kindApp'         : 'Aplikacija',
+			'kindPostscript'  : 'Postscript document',
+			'kindMsOffice'    : 'Microsoft Office dokument',
+			'kindMsWord'      : 'Microsoft Word dokument',
+			'kindMsExcel'     : 'Microsoft Excel dokument',
+			'kindMsPP'        : 'Microsoft Powerpoint prezentacija',
+			'kindOO'          : 'Open Office dokument',
+			'kindAppFlash'    : 'Flash aplikacija',
+			'kindPDF'         : 'Portable Document Format (PDF)',
+			'kindTorrent'     : 'Bittorrent dokument',
+			'kind7z'          : '7z arhiva',
+			'kindTAR'         : 'TAR arhiva',
+			'kindGZIP'        : 'GZIP arhiva',
+			'kindBZIP'        : 'BZIP arhiva',
+			'kindXZ'          : 'XZ arhiva',
+			'kindZIP'         : 'ZIP arhiva',
+			'kindRAR'         : 'RAR arhiva',
+			'kindJAR'         : 'Java JAR dokument',
+			'kindTTF'         : 'True Type font',
+			'kindOTF'         : 'Open Type font',
+			'kindRPM'         : 'RPM paket',
+			// texts
+			'kindText'        : 'Tekst arhiva',
+			'kindTextPlain'   : 'Obični tekst',
+			'kindPHP'         : 'PHP source',
+			'kindCSS'         : 'Cascading style sheet',
+			'kindHTML'        : 'HTML document',
+			'kindJS'          : 'Javascript source',
+			'kindRTF'         : 'Rich Text Format',
+			'kindC'           : 'C source',
+			'kindCHeader'     : 'C header source',
+			'kindCPP'         : 'C++ source',
+			'kindCPPHeader'   : 'C++ header source',
+			'kindShell'       : 'Unix shell script',
+			'kindPython'      : 'Python source',
+			'kindJava'        : 'Java source',
+			'kindRuby'        : 'Ruby source',
+			'kindPerl'        : 'Perl skripta',
+			'kindSQL'         : 'SQL source',
+			'kindXML'         : 'XML dokument',
+			'kindAWK'         : 'AWK source',
+			'kindCSV'         : 'vrijednosti razdvojene zarezom',
+			'kindDOCBOOK'     : 'Docbook XML dokument',
+			'kindMarkdown'    : 'Markdown tekst', // added 20.7.2015
+			// images
+			'kindImage'       : 'slika',
+			'kindBMP'         : 'BMP slika',
+			'kindJPEG'        : 'JPEG slika',
+			'kindGIF'         : 'GIF slika',
+			'kindPNG'         : 'PNG slika',
+			'kindTIFF'        : 'TIFF slika',
+			'kindTGA'         : 'TGA slika',
+			'kindPSD'         : 'Adobe Photoshop slika',
+			'kindXBITMAP'     : 'X bitmap slika',
+			'kindPXM'         : 'Pixelmator slika',
+			// media
+			'kindAudio'       : 'Audio',
+			'kindAudioMPEG'   : 'MPEG audio',
+			'kindAudioMPEG4'  : 'MPEG-4 audio',
+			'kindAudioMIDI'   : 'MIDI audio',
+			'kindAudioOGG'    : 'Ogg Vorbis audio',
+			'kindAudioWAV'    : 'WAV audio',
+			'AudioPlaylist'   : 'MP3 lista',
+			'kindVideo'       : 'Video ',
+			'kindVideoDV'     : 'DV video',
+			'kindVideoMPEG'   : 'MPEG video',
+			'kindVideoMPEG4'  : 'MPEG-4 video',
+			'kindVideoAVI'    : 'AVI video',
+			'kindVideoMOV'    : 'Quick Time video',
+			'kindVideoWM'     : 'Windows Media video',
+			'kindVideoFlash'  : 'Flash video',
+			'kindVideoMKV'    : 'Matroska video',
+			'kindVideoOGG'    : 'Ogg video'
+		}
+	};
+}));
+

+ 447 - 0
src/assets/js/i18n/elfinder.hu.js

@@ -0,0 +1,447 @@
+/**
+ * magyar translation
+ * @author Gáspár Lajos <info@glsys.eu>
+ * @version 2016-06-29
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.hu = {
+		translator : 'Gáspár Lajos &lt;info@glsys.eu&gt;',
+		language   : 'magyar',
+		direction  : 'ltr',
+		dateFormat : 'Y.F.d H:i:s', // Mar 13, 2012 05:27 PM
+		fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM
+		messages   : {
+
+			/********************************** errors **********************************/
+			'error'                : 'Hiba',
+			'errUnknown'           : 'Ismeretlen hiba.',
+			'errUnknownCmd'        : 'Ismeretlen parancs.',
+			'errJqui'              : 'Hibás jQuery UI konfiguráció. A "selectable", "draggable" és a "droppable" komponensek szükségesek.',
+			'errNode'              : 'Az elFinder "DOM" elem létrehozását igényli.',
+			'errURL'               : 'Hibás elFinder konfiguráció! "URL" paraméter nincs megadva.',
+			'errAccess'            : 'Hozzáférés megtagadva.',
+			'errConnect'           : 'Nem sikerült csatlakozni a kiszolgálóhoz.',
+			'errAbort'             : 'Kapcsolat megszakítva.',
+			'errTimeout'           : 'Kapcsolat időtúllépés.',
+			'errNotFound'          : 'A backend nem elérhető.',
+			'errResponse'          : 'Hibás backend válasz.',
+			'errConf'              : 'Hibás backend konfiguráció.',
+			'errJSON'              : 'PHP JSON modul nincs telepítve.',
+			'errNoVolumes'         : 'Nem állnak rendelkezésre olvasható kötetek.',
+			'errCmdParams'         : 'érvénytelen paraméterek a parancsban. ("$1")',
+			'errDataNotJSON'       : 'A válasz nem JSON típusú adat.',
+			'errDataEmpty'         : 'Nem érkezett adat.',
+			'errCmdReq'            : 'A backend kérelem parancsnevet igényel.',
+			'errOpen'              : '"$1" megnyitása nem sikerült.',
+			'errNotFolder'         : 'Az objektum nem egy mappa.',
+			'errNotFile'           : 'Az objektum nem egy fájl.',
+			'errRead'              : '"$1" olvasása nem sikerült.',
+			'errWrite'             : '"$1" írása nem sikerült.',
+			'errPerm'              : 'Engedély megtagadva.',
+			'errLocked'            : '"$1" zárolás alatt van, és nem lehet átnevezni, mozgatni vagy eltávolítani.',
+			'errExists'            : '"$1" nevű fájl már létezik.',
+			'errInvName'           : 'Érvénytelen fáljnév.',
+			'errFolderNotFound'    : 'Mappa nem található.',
+			'errFileNotFound'      : 'Fájl nem található.',
+			'errTrgFolderNotFound' : 'Cél mappa nem található. ("$1")',
+			'errPopup'             : 'A böngésző megakadályozta egy felugró ablak megnyitását. A fájl megnyitását tegye lehetővé a böngésző beállitásaiban.',
+			'errMkdir'             : '"$1" mappa létrehozása sikertelen.',
+			'errMkfile'            : '"$1" fájl létrehozása sikertelen.',
+			'errRename'            : '"$1" átnevezése sikertelen.',
+			'errCopyFrom'          : 'Fájlok másolása a kötetről nem megengedett. ("$1")',
+			'errCopyTo'            : 'Fájlok másolása a kötetre nem megengedett. ("$1")',
+			'errMkOutLink'         : 'Hivatkozás létrehozása a root köteten kívül nem megengedett.', // from v2.1 added 03.10.2015
+			'errUpload'            : 'Feltöltési hiba.',  // old name - errUploadCommon
+			'errUploadFile'        : 'Nem sikerült a fájlt feltölteni. ($1)', // old name - errUpload
+			'errUploadNoFiles'     : 'Nem található fájl feltöltéshez.',
+			'errUploadTotalSize'   : 'Az adat meghaladja a maximálisan megengedett méretet.', // old name - errMaxSize
+			'errUploadFileSize'    : 'A fájl meghaladja a maximálisan megengedett méretet.', //  old name - errFileMaxSize
+			'errUploadMime'        : 'A fájltípus nem engedélyezett.',
+			'errUploadTransfer'    : '"$1" transzfer hiba.',
+			'errUploadTemp'        : 'Sikertelen az ideiglenes fájl léterhezozása feltöltéshez.', // from v2.1 added 26.09.2015
+			'errNotReplace'        : 'Az objektum "$1" már létezik ezen a helyen, és nem lehet cserélni másik típusra', // new
+			'errReplace'           : '"$1" nem cserélhető.',
+			'errSave'              : '"$1" mentése nem sikerült.',
+			'errCopy'              : '"$1" másolása nem sikerült.',
+			'errMove'              : '"$1" áthelyezése nem sikerült.',
+			'errCopyInItself'      : '"$1" nem másolható saját magára.',
+			'errRm'                : '"$1" törlése nem sikerült.',
+			'errRmSrc'             : 'Forrásfájl(ok) eltávolítása sikertelen.',
+			'errExtract'           : 'Unable to extract files from "$1".',
+			'errArchive'           : 'Unable to create archive.',
+			'errArcType'           : 'Nem támogatott archívum típus.',
+			'errNoArchive'         : 'File is not archive or has unsupported archive type.',
+			'errCmdNoSupport'      : 'Backend does not support this command.',
+			'errReplByChild'       : 'The folder “$1” can’t be replaced by an item it contains.',
+			'errArcSymlinks'       : 'For security reason denied to unpack archives contains symlinks or files with not allowed names.', // edited 24.06.2012
+			'errArcMaxSize'        : 'Archive files exceeds maximum allowed size.',
+			'errResize'            : 'Unable to resize "$1".',
+			'errResizeDegree'      : 'Invalid rotate degree.',  // added 7.3.2013
+			'errResizeRotate'      : 'Unable to rotate image.',  // added 7.3.2013
+			'errResizeSize'        : 'Invalid image size.',  // added 7.3.2013
+			'errResizeNoChange'    : 'Image size not changed.',  // added 7.3.2013
+			'errUsupportType'      : 'Unsupported file type.',
+			'errNotUTF8Content'    : 'File "$1" is not in UTF-8 and cannot be edited.',  // added 9.11.2011
+			'errNetMount'          : 'Unable to mount "$1".', // added 17.04.2012
+			'errNetMountNoDriver'  : 'Unsupported protocol.',     // added 17.04.2012
+			'errNetMountFailed'    : 'Mount failed.',         // added 17.04.2012
+			'errNetMountHostReq'   : 'Host required.', // added 18.04.2012
+			'errSessionExpires'    : 'Your session has expired due to inactivity.',
+			'errCreatingTempDir'   : 'Unable to create temporary directory: "$1"',
+			'errFtpDownloadFile'   : 'Unable to download file from FTP: "$1"',
+			'errFtpUploadFile'     : 'Unable to upload file to FTP: "$1"',
+			'errFtpMkdir'          : 'Unable to create remote directory on FTP: "$1"',
+			'errArchiveExec'       : 'Error while archiving files: "$1"',
+			'errExtractExec'       : 'Error while extracting files: "$1"',
+			'errNetUnMount'        : 'Unable to unmount', // from v2.1 added 30.04.2012
+			'errConvUTF8'          : 'Not convertible to UTF-8', // from v2.1 added 08.04.2014
+			'errFolderUpload'      : 'Try Google Chrome, If you\'d like to upload the folder.', // from v2.1 added 26.6.2015
+			'errSearchTimeout'     : 'Timed out while searching "$1". Search result is partial.', // from v2.1 added 12.1.2016
+			'errReauthRequire'     : 'Re-authorization is required.', // from v2.1.10 added 3.24.2016
+
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'Archívum létrehozása',
+			'cmdback'      : 'Vissza',
+			'cmdcopy'      : 'Másolás',
+			'cmdcut'       : 'Kivágás',
+			'cmddownload'  : 'Letöltés',
+			'cmdduplicate' : 'Másolat készítés',
+			'cmdedit'      : 'Szerkesztés',
+			'cmdextract'   : 'Kibontás',
+			'cmdforward'   : 'Előre',
+			'cmdgetfile'   : 'Fájlok kijelölése',
+			'cmdhelp'      : 'Erről a programról...',
+			'cmdhome'      : 'Főkönyvtár',
+			'cmdinfo'      : 'Tulajdonságok',
+			'cmdmkdir'     : 'Új mappa',
+			'cmdmkdirin'   : 'Into new folder', // from v2.1.7 added 19.2.2016
+			'cmdmkfile'    : 'Új szöveges dokumentum',
+			'cmdopen'      : 'Megnyitás',
+			'cmdpaste'     : 'Beillesztés',
+			'cmdquicklook' : 'Előnézet',
+			'cmdreload'    : 'Frissítés',
+			'cmdrename'    : 'Átnevezés',
+			'cmdrm'        : 'Törlés',
+			'cmdsearch'    : 'Keresés',
+			'cmdup'        : 'Ugrás a szülőmappába',
+			'cmdupload'    : 'Feltöltés',
+			'cmdview'      : 'View',
+			'cmdresize'    : 'Resize & Rotate',
+			'cmdsort'      : 'Sort',
+			'cmdnetmount'  : 'Mount network volume', // added 18.04.2012
+			'cmdnetunmount': 'Unmount', // from v2.1 added 30.04.2012
+			'cmdplaces'    : 'To Places', // added 28.12.2014
+			'cmdchmod'     : 'Change mode', // from v2.1 added 20.6.2015
+			'cmdopendir'   : 'Open a folder', // from v2.1 added 13.1.2016
+			'cmdcolwidth'  : 'Reset column width', // from v2.1.13 added 12.06.2016
+
+			/*********************************** buttons ***********************************/
+			'btnClose'  : 'Bezár',
+			'btnSave'   : 'Ment',
+			'btnRm'     : 'Töröl',
+			'btnApply'  : 'Apply',
+			'btnCancel' : 'Mégsem',
+			'btnNo'     : 'Nem',
+			'btnYes'    : 'Igen',
+			'btnMount'  : 'Mount',  // added 18.04.2012
+			'btnApprove': 'Goto $1 & approve', // from v2.1 added 26.04.2012
+			'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012
+			'btnConv'   : 'Convert', // from v2.1 added 08.04.2014
+			'btnCwd'    : 'Here',      // from v2.1 added 22.5.2015
+			'btnVolume' : 'Volume',    // from v2.1 added 22.5.2015
+			'btnAll'    : 'All',       // from v2.1 added 22.5.2015
+			'btnMime'   : 'MIME Type', // from v2.1 added 22.5.2015
+			'btnFileName':'Filename',  // from v2.1 added 22.5.2015
+			'btnSaveClose': 'Save & Close', // from v2.1 added 12.6.2015
+			'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015
+
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'Mappa megnyitás',
+			'ntffile'     : 'Fájl megnyitás',
+			'ntfreload'   : 'Reload folder content',
+			'ntfmkdir'    : 'Mappa létrehozása',
+			'ntfmkfile'   : 'Creating files',
+			'ntfrm'       : 'Fájlok törélse',
+			'ntfcopy'     : 'Fájlok másolása',
+			'ntfmove'     : 'Fájlok áthelyezése',
+			'ntfprepare'  : 'Prepare to copy files',
+			'ntfrename'   : 'Fájlok átnevezése',
+			'ntfupload'   : 'Fájlok feltöltése',
+			'ntfdownload' : 'Fájlok letöltése',
+			'ntfsave'     : 'Fájlok mentése',
+			'ntfarchive'  : 'Archívum létrehozása',
+			'ntfextract'  : 'Kibontás archívumból',
+			'ntfsearch'   : 'Fájlok keresése',
+			'ntfresize'   : 'Resizing images',
+			'ntfsmth'     : 'Doing something >_<',
+			'ntfloadimg'  : 'Loading image',
+			'ntfnetmount' : 'Mounting network volume', // added 18.04.2012
+			'ntfnetunmount': 'Unmounting network volume', // from v2.1 added 30.04.2012
+			'ntfdim'      : 'Acquiring image dimension', // added 20.05.2013
+			'ntfreaddir'  : 'Reading folder infomation', // from v2.1 added 01.07.2013
+			'ntfurl'      : 'Getting URL of link', // from v2.1 added 11.03.2014
+			'ntfchmod'    : 'Changing file mode', // from v2.1 added 20.6.2015
+			'ntfpreupload': 'Verifying upload file name', // from v2.1 added 31.11.2015
+			'ntfzipdl'    : 'Creating a file for download', // from v2.1.7 added 23.1.2016
+
+			/************************************ dates **********************************/
+			'dateUnknown' : 'Ismeretlen',
+			'Today'       : 'Ma',
+			'Yesterday'   : 'Tegnap',
+			'msJan'       : 'jan',
+			'msFeb'       : 'febr',
+			'msMar'       : 'márc',
+			'msApr'       : 'ápr',
+			'msMay'       : 'máj',
+			'msJun'       : 'jún',
+			'msJul'       : 'júl',
+			'msAug'       : 'aug',
+			'msSep'       : 'szept',
+			'msOct'       : 'okt',
+			'msNov'       : 'nov',
+			'msDec'       : 'dec',
+			'January'     : 'January',
+			'February'    : 'February',
+			'March'       : 'March',
+			'April'       : 'April',
+			'May'         : 'May',
+			'June'        : 'June',
+			'July'        : 'July',
+			'August'      : 'August',
+			'September'   : 'September',
+			'October'     : 'October',
+			'November'    : 'November',
+			'December'    : 'December',
+			'Sunday'      : 'Sunday',
+			'Monday'      : 'Monday',
+			'Tuesday'     : 'Tuesday',
+			'Wednesday'   : 'Wednesday',
+			'Thursday'    : 'Thursday',
+			'Friday'      : 'Friday',
+			'Saturday'    : 'Saturday',
+			'Sun'         : 'Sun',
+			'Mon'         : 'Mon',
+			'Tue'         : 'Tue',
+			'Wed'         : 'Wed',
+			'Thu'         : 'Thu',
+			'Fri'         : 'Fri',
+			'Sat'         : 'Sat',
+
+			/******************************** sort variants ********************************/
+			'sortname'          : 'by name',
+			'sortkind'          : 'by kind',
+			'sortsize'          : 'by size',
+			'sortdate'          : 'by date',
+			'sortFoldersFirst'  : 'Folders first',
+			'sortperm'          : 'by permission', // from v2.1.13 added 13.06.2016
+			'sortmode'          : 'by mode',       // from v2.1.13 added 13.06.2016
+			'sortowner'         : 'by owner',      // from v2.1.13 added 13.06.2016
+			'sortgroup'         : 'by group',      // from v2.1.13 added 13.06.2016
+
+			/********************************** new items **********************************/
+			'untitled file.txt' : 'NewFile.txt', // added 10.11.2015
+			'untitled folder'   : 'NewFolder',   // added 10.11.2015
+			'Archive'           : 'NewArchive',  // from v2.1 added 10.11.2015
+
+			/********************************** messages **********************************/
+			'confirmReq'      : 'Confirmation required',
+			'confirmRm'       : 'Valóban törölni akarja a kijelölt adatokat?<br/>Ez később nem fordítható vissza!',
+			'confirmRepl'     : 'Replace old file with new one?',
+			'confirmConvUTF8' : 'Not in UTF-8<br/>Convert to UTF-8?<br/>Contents become UTF-8 by saving after conversion.', // from v2.1 added 08.04.2014
+			'confirmNotSave'  : 'It has been modified.<br/>Losing work if you do not save changes.', // from v2.1 added 15.7.2015
+			'apllyAll'        : 'Apply to all',
+			'name'            : 'Név',
+			'size'            : 'Méret',
+			'perms'           : 'Jogok',
+			'modify'          : 'Módosítva',
+			'kind'            : 'Típus',
+			'read'            : 'olvasás',
+			'write'           : 'írás',
+			'noaccess'        : '-',
+			'and'             : 'és',
+			'unknown'         : 'ismeretlen',
+			'selectall'       : 'Összes kijelölése',
+			'selectfiles'     : 'Fájlok kijelölése',
+			'selectffile'     : 'Első fájl kijelölése',
+			'selectlfile'     : 'Utolsó fájl kijelölése',
+			'viewlist'        : 'Lista nézet',
+			'viewicons'       : 'Ikon nézet',
+			'places'          : 'Helyek',
+			'calc'            : 'Calculate',
+			'path'            : 'Útvonal',
+			'aliasfor'        : 'Cél',
+			'locked'          : 'Zárolt',
+			'dim'             : 'Méretek',
+			'files'           : 'Fájlok',
+			'folders'         : 'Mappák',
+			'items'           : 'Elemek',
+			'yes'             : 'igen',
+			'no'              : 'nem',
+			'link'            : 'Parancsikon',
+			'searcresult'     : 'Keresés eredménye',
+			'selected'        : 'kijelölt elemek',
+			'about'           : 'Névjegy',
+			'shortcuts'       : 'Gyorsbillenytyűk',
+			'help'            : 'Súgó',
+			'webfm'           : 'Web file manager',
+			'ver'             : 'Verzió',
+			'protocolver'     : 'protokol verzió',
+			'homepage'        : 'Projekt honlap',
+			'docs'            : 'Dokumentáció',
+			'github'          : 'Hozz létre egy új verziót a Github-on',
+			'twitter'         : 'Kövess minket a twitter-en',
+			'facebook'        : 'Csatlakozz hozzánk a facebook-on',
+			'team'            : 'Csapat',
+			'chiefdev'        : 'vezető fejlesztő',
+			'developer'       : 'fejlesztő',
+			'contributor'     : 'külsős hozzájáruló',
+			'maintainer'      : 'karbantartó',
+			'translator'      : 'fordító',
+			'icons'           : 'Ikonok',
+			'dontforget'      : 'törölközőt ne felejts el hozni!',
+			'shortcutsof'     : 'Shortcuts disabled',
+			'dropFiles'       : 'Fájlok dobása ide',
+			'or'              : 'vagy',
+			'selectForUpload' : 'fájlok böngészése',
+			'moveFiles'       : 'Fájlok áthelyezése',
+			'copyFiles'       : 'Fájlok másolása',
+			'rmFromPlaces'    : 'Remove from places',
+			'aspectRatio'     : 'Aspect ratio',
+			'scale'           : 'Scale',
+			'width'           : 'Width',
+			'height'          : 'Height',
+			'resize'          : 'Resize',
+			'crop'            : 'Crop',
+			'rotate'          : 'Rotate',
+			'rotate-cw'       : 'Rotate 90 degrees CW',
+			'rotate-ccw'      : 'Rotate 90 degrees CCW',
+			'degree'          : '°',
+			'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012
+			'protocol'            : 'Protocol', // added 18.04.2012
+			'host'                : 'Host', // added 18.04.2012
+			'port'                : 'Port', // added 18.04.2012
+			'user'                : 'User', // added 18.04.2012
+			'pass'                : 'Password', // added 18.04.2012
+			'confirmUnmount'      : 'Are you unmount $1?',  // from v2.1 added 30.04.2012
+			'dropFilesBrowser': 'Drop or Paste files from browser', // from v2.1 added 30.05.2012
+			'dropPasteFiles'  : 'Drop or Paste files and URLs here', // from v2.1 added 07.04.2014
+			'encoding'        : 'Encoding', // from v2.1 added 19.12.2014
+			'locale'          : 'Locale',   // from v2.1 added 19.12.2014
+			'searchTarget'    : 'Target: $1',                // from v2.1 added 22.5.2015
+			'searchMime'      : 'Search by input MIME Type', // from v2.1 added 22.5.2015
+			'owner'           : 'Owner', // from v2.1 added 20.6.2015
+			'group'           : 'Group', // from v2.1 added 20.6.2015
+			'other'           : 'Other', // from v2.1 added 20.6.2015
+			'execute'         : 'Execute', // from v2.1 added 20.6.2015
+			'perm'            : 'Permission', // from v2.1 added 20.6.2015
+			'mode'            : 'Mode', // from v2.1 added 20.6.2015
+			'emptyFolder'     : 'Folder is empty', // from v2.1.6 added 30.12.2015
+			'emptyFolderDrop' : 'Folder is empty\\A Drop to add items', // from v2.1.6 added 30.12.2015
+			'emptyFolderLTap' : 'Folder is empty\\A Long tap to add items', // from v2.1.6 added 30.12.2015
+			'quality'         : 'Quality', // from v2.1.6 added 5.1.2016
+			'autoSync'        : 'Auto sync',  // from v2.1.6 added 10.1.2016
+			'moveUp'          : 'Move up',  // from v2.1.6 added 18.1.2016
+			'getLink'         : 'Get URL link', // from v2.1.7 added 9.2.2016
+			'selectedItems'   : 'Selected items ($1)', // from v2.1.7 added 2.19.2016
+			'folderId'        : 'Folder ID', // from v2.1.10 added 3.25.2016
+			'offlineAccess'   : 'Allow offline access', // from v2.1.10 added 3.25.2016
+			'reAuth'          : 'To re-authenticate', // from v2.1.10 added 3.25.2016
+			'nowLoading'      : 'Now loading...', // from v2.1.12 added 4.26.2016
+			'openMulti'       : 'Open multiple files', // from v2.1.12 added 5.14.2016
+			'openMultiConfirm': 'You are trying to open the $1 files. Are you sure you want to open in browser?', // from v2.1.12 added 5.14.2016
+			'emptySearch'     : 'Search results is empty', // from v2.1.12 added 5.16.2016
+			'editingFile'     : 'You are editing a file.', // from v2.1.13 added 6.3.2016
+			'hasSelected'     : 'You have selected $1 items.', // from v2.1.13 added 6.3.2016
+			'hasClipboard'    : 'You have $1 items in the clipboard.', // from v2.1.13 added 6.3.2016
+
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : 'Ismeretlen',
+			'kindFolder'      : 'Mappa',
+			'kindAlias'       : 'Parancsikon',
+			'kindAliasBroken' : 'Hibás parancsikon',
+			// applications
+			'kindApp'         : 'Alkalmazás',
+			'kindPostscript'  : 'Postscript dokumentum',
+			'kindMsOffice'    : 'Microsoft Office dokumentum',
+			'kindMsWord'      : 'Microsoft Word dokumentum',
+			'kindMsExcel'     : 'Microsoft Excel dokumentum',
+			'kindMsPP'        : 'Microsoft Powerpoint bemutató',
+			'kindOO'          : 'Open Office dokumentum',
+			'kindAppFlash'    : 'Flash alkalmazás',
+			'kindPDF'         : 'Portable Document Format (PDF)',
+			'kindTorrent'     : 'Bittorrent fájl',
+			'kind7z'          : '7z archívum',
+			'kindTAR'         : 'TAR archívum',
+			'kindGZIP'        : 'GZIP archívum',
+			'kindBZIP'        : 'BZIP archívum',
+			'kindXZ'          : 'XZ archívum',
+			'kindZIP'         : 'ZIP archívum',
+			'kindRAR'         : 'RAR archívum',
+			'kindJAR'         : 'Java JAR fájl',
+			'kindTTF'         : 'True Type font',
+			'kindOTF'         : 'Open Type font',
+			'kindRPM'         : 'RPM csomag',
+			// texts
+			'kindText'        : 'Szöveges dokumentum',
+			'kindTextPlain'   : 'Plain text',
+			'kindPHP'         : 'PHP forráskód',
+			'kindCSS'         : 'Cascading style sheet',
+			'kindHTML'        : 'HTML dokumentum',
+			'kindJS'          : 'Javascript forráskód',
+			'kindRTF'         : 'Rich Text Format',
+			'kindC'           : 'C forráskód',
+			'kindCHeader'     : 'C header forráskód',
+			'kindCPP'         : 'C++ forráskód',
+			'kindCPPHeader'   : 'C++ header forráskód',
+			'kindShell'       : 'Unix shell script',
+			'kindPython'      : 'Python forráskód',
+			'kindJava'        : 'Java forráskód',
+			'kindRuby'        : 'Ruby forráskód',
+			'kindPerl'        : 'Perl script',
+			'kindSQL'         : 'SQL forráskód',
+			'kindXML'         : 'XML dokumentum',
+			'kindAWK'         : 'AWK forráskód',
+			'kindCSV'         : 'Comma separated values',
+			'kindDOCBOOK'     : 'Docbook XML dokumentum',
+			'kindMarkdown'    : 'Markdown text', // added 20.7.2015
+			// images
+			'kindImage'       : 'Kép',
+			'kindBMP'         : 'BMP kép',
+			'kindJPEG'        : 'JPEG kép',
+			'kindGIF'         : 'GIF kép',
+			'kindPNG'         : 'PNG kép',
+			'kindTIFF'        : 'TIFF kép',
+			'kindTGA'         : 'TGA kép',
+			'kindPSD'         : 'Adobe Photoshop kép',
+			'kindXBITMAP'     : 'X bitmap image',
+			'kindPXM'         : 'Pixelmator image',
+			// media
+			'kindAudio'       : 'Hangfájl',
+			'kindAudioMPEG'   : 'MPEG hangfájl',
+			'kindAudioMPEG4'  : 'MPEG-4 hangfájl',
+			'kindAudioMIDI'   : 'MIDI hangfájl',
+			'kindAudioOGG'    : 'Ogg Vorbis hangfájl',
+			'kindAudioWAV'    : 'WAV hangfájl',
+			'AudioPlaylist'   : 'MP3 playlist',
+			'kindVideo'       : 'Film',
+			'kindVideoDV'     : 'DV film',
+			'kindVideoMPEG'   : 'MPEG film',
+			'kindVideoMPEG4'  : 'MPEG-4 film',
+			'kindVideoAVI'    : 'AVI film',
+			'kindVideoMOV'    : 'Quick Time film',
+			'kindVideoWM'     : 'Windows Media film',
+			'kindVideoFlash'  : 'Flash film',
+			'kindVideoMKV'    : 'Matroska film',
+			'kindVideoOGG'    : 'Ogg film'
+		}
+	};
+}));
+

+ 498 - 0
src/assets/js/i18n/elfinder.id.js

@@ -0,0 +1,498 @@
+/**
+ * Bahasa Indonesia translation
+ * @author Suyadi <1441177004009@student.unsika.ac.id>
+ * @author Ammar Faizi <ammarfaizi2@gmail.com>
+ * @version 2017-05-28
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.id = {
+		translator : 'Suyadi &lt;1441177004009@student.unsika.ac.id&gt;, Ammar Faizi &lt;ammarfaizi2@gmail.com&gt;',
+		language   : 'Bahasa Indonesia',
+		direction  : 'ltr',
+		dateFormat : 'j F, Y H:i', // Mar 13, 2012 05:27 PM
+		fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM
+		nonameDateFormat : 'd m Y - H : i : s', // to apply if upload file is noname: 120513172700
+		messages   : {
+
+			/********************************** errors **********************************/
+			'error'                : 'Kesalahan',
+			'errUnknown'           : 'Kesalahan tak dikenal.',
+			'errUnknownCmd'        : 'Perintah tak dikenal.',
+			'errJqui'              : 'Konfigurasi jQuery UI tidak valid. Komponen pemilih, penyeret dan penaruh harus disertakan.',
+			'errNode'              : 'elFinder membutuhkan pembuatan elemen DOM.',
+			'errURL'               : 'Konfigurasi elFinder tidak valid! opsi URL belum diatur.',
+			'errAccess'            : 'Akses ditolak.',
+			'errConnect'           : 'Tidak dapat tersambung ke backend.',
+			'errAbort'             : 'Koneksi dibatalkan.',
+			'errTimeout'           : 'Waktu koneksi habis.',
+			'errNotFound'          : 'Backend tidak ditemukan.',
+			'errResponse'          : 'Respon backend tidak valid.',
+			'errConf'              : 'Konfigurasi elFinder tidak valid.',
+			'errJSON'              : 'Modul PHP JSON belum terpasang.',
+			'errNoVolumes'         : 'Tidak tersedia ruang kosong.',
+			'errCmdParams'         : 'Parameter perintah "$1" tidak valid.',
+			'errDataNotJSON'       : 'Data bukan merupakan JSON.',
+			'errDataEmpty'         : 'Data masih kosong.',
+			'errCmdReq'            : 'Permintaan ke backend membutuhkan nama perintah.',
+			'errOpen'              : 'Tidak dapat membuka "$1".',
+			'errNotFolder'         : 'Obyek ini bukan folder.',
+			'errNotFile'           : 'Obyek ini bukan berkas.',
+			'errRead'              : 'Tidak dapat membaca "$1".',
+			'errWrite'             : 'Tidak dapat menulis ke "$1".',
+			'errPerm'              : 'Ijin ditolak.',
+			'errLocked'            : '"$1" ini terkunci dan tak dapat dipidahkan, diubah atau dihapus.',
+			'errExists'            : 'Berkas bernama "$1" sudah ada.',
+			'errInvName'           : 'Nama berkas tidak valid.',
+			'errInvDirname'        : 'Nama folder salah.',  // from v2.1.24 added 12.4.2017
+			'errFolderNotFound'    : 'Folder tidak ditemukan.',
+			'errFileNotFound'      : 'Berkas tidak ditemukan.',
+			'errTrgFolderNotFound' : 'Folder tujuan "$1" tidak ditemukan.',
+			'errPopup'             : 'Peramban anda mencegah untuk membuka jendela munculan. Untuk dapat membuka berkas ini ubah pengaturan pada peramban anda.',
+			'errMkdir'             : 'Tidak dapat membuat folder "$1".',
+			'errMkfile'            : 'Tidak dapat membuat berkas "$1".',
+			'errRename'            : 'Tidak dapat mengubah nama "$1".',
+			'errCopyFrom'          : 'Tidak diizinkan menyalin berkas dari volume "$1".',
+			'errCopyTo'            : 'tidak diizinkan menyalin berkas ke volume "$1".',
+			'errMkOutLink'         : 'Tidak dapat membuat tautan diluar volume root.', // from v2.1 added 03.10.2015
+			'errUpload'            : 'Kesalahan saat mengunggah.',  // old name - errUploadCommon
+			'errUploadFile'        : 'Tidak dapat mengunggah "$1".', // old name - errUpload
+			'errUploadNoFiles'     : 'Tak ada berkas untuk diunggah.',
+			'errUploadTotalSize'   : 'Data melampaui ukuran yang diperbolehkan.', // old name - errMaxSize
+			'errUploadFileSize'    : 'Berkas melampaui ukuran yang diperbolehkan.', //  old name - errFileMaxSize
+			'errUploadMime'        : 'Jenis berkas ini tidak diijinkan.',
+			'errUploadTransfer'    : 'Kesalahan transfer "$1".',
+			'errUploadTemp'        : 'Tidak dapat membuat file sementara untuk diupload.', // from v2.1 added 26.09.2015
+			'errNotReplace'        : 'Obyek "$1" sudah ada di lokasi ini dan tidak dapat ditimpa oleh obyek jenis lain.', // new
+			'errReplace'           : 'Tidak dapat menimpa "$1".',
+			'errSave'              : 'Tidak dapat menyimpan "$1".',
+			'errCopy'              : 'Tidak dapat menyalin "$1".',
+			'errMove'              : 'Tidak dapat memindahkan "$1".',
+			'errCopyInItself'      : 'Tidak dapat menyalin "$1" ke dirinya sendiri.',
+			'errRm'                : 'Tidak dapat menghapus "$1".',
+			'errTrash'             : 'Tidak dapat masuk ke tempat sampah.', // from v2.1.24 added 30.4.2017
+			'errRmSrc'             : 'Tidak dapat menghapus sumber berkas.',
+			'errExtract'           : 'Tidak dapat mengekstrak berkas dari "$1".',
+			'errArchive'           : 'Tidak dapat membuat arsip.',
+			'errArcType'           : 'Jenis arsip tidak didukung.',
+			'errNoArchive'         : 'Berkas ini bukan arsip atau arsip jenis ini tidak didukung.',
+			'errCmdNoSupport'      : 'Backend tidak mendukung perintah ini.',
+			'errReplByChild'       : 'Folder “$1” tidak dapat ditimpa dengan berkas didalamnya.',
+			'errArcSymlinks'       : 'Untuk keamanan tak diijinkan mengekstrak arsip berisi symlink atau jenis berkas yang tak diijinkan.', // edited 24.06.2012
+			'errArcMaxSize'        : 'Arsip ini melampaui ukuran yang diijinkan.',
+			'errResize'            : 'Tidak dapat mengubah ukuran "$1".',
+			'errResizeDegree'      : 'Derajat putaran tidak valid.',  // added 7.3.2013
+			'errResizeRotate'      : 'Citra tidak diputar.',  // added 7.3.2013
+			'errResizeSize'        : 'Ukuran citra tidak valid.',  // added 7.3.2013
+			'errResizeNoChange'    : 'Ukuran citra tidak diubah.',  // added 7.3.2013
+			'errUsupportType'      : 'Jenis berkas tidak didukung.',
+			'errNotUTF8Content'    : 'Berkas "$1" tidak dalam format UTF-8 dan tidak dapat disunting.',  // added 9.11.2011
+			'errNetMount'          : 'Tidak dapat membaca susunan "$1".', // added 17.04.2012
+			'errNetMountNoDriver'  : 'Protokol tidak didukung.',     // added 17.04.2012
+			'errNetMountFailed'    : 'Tidak dapat membaca susunannya.',         // added 17.04.2012
+			'errNetMountHostReq'   : 'Host harus ada.', // added 18.04.2012
+			'errSessionExpires'    : 'Sesi anda telah kadaluwarsa karena lama tidak aktif.',
+			'errCreatingTempDir'   : 'Tidak dapat membuat direktori sementara: "$1"',
+			'errFtpDownloadFile'   : 'Tidak dapat mengunduh berkas dari FTP: "$1"',
+			'errFtpUploadFile'     : 'Tidak dapat mengunggah berkas dari FTP: "$1"',
+			'errFtpMkdir'          : 'Tidak dapat membuat remot direktori dari FTP: "$1"',
+			'errArchiveExec'       : 'Kesalahan saat mengarsipkan berkas: "$1"',
+			'errExtractExec'       : 'Kesalahan saat mengekstrak berkas: "$1"',
+			'errNetUnMount'        : 'Tidak dapat melakukan mount.', // from v2.1 added 30.04.2012
+			'errConvUTF8'          : 'Tidak cocok untuk konversi ke UTF-8', // from v2.1 added 08.04.2014
+			'errFolderUpload'      : 'Coba dengan browser yang modern, Jika akan mengupload folder.', // from v2.1 added 26.6.2015
+			'errSearchTimeout'     : 'Waktu habis selama melakukan pencarian "$1". Hasil sementara.', // from v2.1 added 12.1.2016
+			'errReauthRequire'     : 'Re-authorization dibutuhkan.', // from v2.1.10 added 24.3.2016
+			'errMaxTargets'        : 'Berkas maksimal yang dipilih adalah $1.', // from v2.1.17 added 17.10.2016
+			'errRestore'           : 'Tidak dapat mengembalikan berkas dari tempat sampah. Tujuan tidak ditemukan.', // from v2.1.24 added 3.5.2017
+			'errEditorNotFound'    : 'Tidak ditemukan editor untuk file tipe ini.', // from v2.1.25 added 23.5.2017
+
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'Buat arsip',
+			'cmdback'      : 'Kembali',
+			'cmdcopy'      : 'Salin',
+			'cmdcut'       : 'Potong',
+			'cmddownload'  : 'Unduh',
+			'cmdduplicate' : 'Gandakan',
+			'cmdedit'      : 'Sunting berkas',
+			'cmdextract'   : 'Ekstrak berkas dari arsip',
+			'cmdforward'   : 'Maju',
+			'cmdgetfile'   : 'Pilih berkas',
+			'cmdhelp'      : 'Tentang software ini',
+			'cmdhome'      : 'Rumah',
+			'cmdinfo'      : 'Dapatkan info',
+			'cmdmkdir'     : 'Buat folder',
+			'cmdmkdirin'   : 'Masuk ke folder baru', // from v2.1.7 added 19.2.2016
+			'cmdmkfile'    : 'Buat berkas teks',
+			'cmdopen'      : 'Buka',
+			'cmdpaste'     : 'Tempel',
+			'cmdquicklook' : 'Pratinjau',
+			'cmdreload'    : 'Muat-ulang',
+			'cmdrename'    : 'Ganti nama',
+			'cmdrm'        : 'Hapus',
+			'cmdtrash'     : 'Sampahkan', //from v2.1.24 added 29.4.2017
+			'cmdrestore'   : 'Kembalikan', //from v2.1.24 added 3.5.2017
+			'cmdsearch'    : 'Cari berkas',
+			'cmdup'        : 'Ke direktori utama',
+			'cmdupload'    : 'Unggah berkas',
+			'cmdview'      : 'Lihat',
+			'cmdresize'    : 'Ubah ukuran & Putar',
+			'cmdsort'      : 'Urutkan',
+			'cmdnetmount'  : 'Baca-susun volume jaringan', // added 18.04.2012
+			'cmdnetunmount': 'Unmount', // from v2.1 added 30.04.2012
+			'cmdplaces'    : 'Ke Tempat', // added 28.12.2014
+			'cmdchmod'     : 'Mode mengubah', // from v2.1 added 20.6.2015
+			'cmdopendir'   : 'Membuka folder', // from v2.1 added 13.1.2016
+			'cmdcolwidth'  : 'Reset column width', // from v2.1.13 added 12.06.2016
+			'cmdfullscreen': 'Layar Penuh', // from v2.1.15 added 03.08.2016
+			'cmdmove'      : 'Pindah', // from v2.1.15 added 21.08.2016
+
+			/*********************************** buttons ***********************************/
+			'btnClose'  : 'Tutup',
+			'btnSave'   : 'Simpan',
+			'btnRm'     : 'Buang',
+			'btnApply'  : 'Terapkan',
+			'btnCancel' : 'Batal',
+			'btnNo'     : 'Tidak',
+			'btnYes'    : 'Ya',
+			'btnMount'  : 'Baca susunan',  // added 18.04.2012
+			'btnApprove': 'Menuju ke $1 & setujui', // from v2.1 added 26.04.2012
+			'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012
+			'btnConv'   : 'Konversi', // from v2.1 added 08.04.2014
+			'btnCwd'    : 'Disini',      // from v2.1 added 22.5.2015
+			'btnVolume' : 'Volume',    // from v2.1 added 22.5.2015
+			'btnAll'    : 'Semua',       // from v2.1 added 22.5.2015
+			'btnMime'   : 'MIME Type', // from v2.1 added 22.5.2015
+			'btnFileName':'Nama file',  // from v2.1 added 22.5.2015
+			'btnSaveClose': 'Simpan & Tutup', // from v2.1 added 12.6.2015
+			'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015
+			'btnRename'    : 'Ubah nama',      // from v2.1.24 added 6.4.2017
+			'btnRenameAll' : 'Ubah nama(Semua)', // from v2.1.24 added 6.4.2017
+			'btnPrevious' : 'Sebelumnya ($1/$2)', // from v2.1.24 added 11.5.2017
+			'btnNext'     : 'Selanjutnya ($1/$2)', // from v2.1.24 added 11.5.2017
+			'btnSaveAs'   : 'Simpan sebagai', // from v2.1.25 added 24.5.2017
+
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'Buka folder',
+			'ntffile'     : 'Buka berkas',
+			'ntfreload'   : 'Muat-ulang isi folder',
+			'ntfmkdir'    : 'Membuat direktori',
+			'ntfmkfile'   : 'Membuat berkas',
+			'ntfrm'       : 'Menghapus berkas',
+			'ntfcopy'     : 'Salin berkas',
+			'ntfmove'     : 'Pindahkan berkas',
+			'ntfprepare'  : 'Persiapan menyalin berkas',
+			'ntfrename'   : 'Ubah nama berkas',
+			'ntfupload'   : 'Unggah berkas',
+			'ntfdownload' : 'Mengunduh berkas',
+			'ntfsave'     : 'Simpan berkas',
+			'ntfarchive'  : 'Membuat arsip',
+			'ntfextract'  : 'Mengekstrak berkas dari arsip',
+			'ntfsearch'   : 'Mencari berkas',
+			'ntfresize'   : 'Mengubah ukuran citra',
+			'ntfsmth'     : 'Melakukan sesuatu',
+			'ntfloadimg'  : 'Memuat citra',
+			'ntfnetmount' : 'Membaca susunan volume jaringan', // added 18.04.2012
+			'ntfnetunmount': 'Unmounting network volume', // from v2.1 added 30.04.2012
+			'ntfdim'      : 'Mendapatkan dimensi citra', // added 20.05.2013
+			'ntfreaddir'  : 'Membaca informasi folder', // from v2.1 added 01.07.2013
+			'ntfurl'      : 'Mendapatkan URL dari link', // from v2.1 added 11.03.2014
+			'ntfchmod'    : 'Dalam mode mengubah', // from v2.1 added 20.6.2015
+			'ntfpreupload': 'Sedang memverifikasi nama file yang diupload', // from v2.1 added 31.11.2015
+			'ntfzipdl'    : 'Membuat file untuk didownload', // from v2.1.7 added 23.1.2016
+			'ntfparents'  : 'Mengambil informasi path', // from v2.1.17 added 2.11.2016
+			'ntfchunkmerge': 'Sedang mengupload file', // from v2.1.17 added 2.11.2016
+			'ntftrash'    : 'Sedang melempar ke tempat sampah', // from v2.1.24 added 2.5.2017
+			'ntfrestore'  : 'Sedang mengembalikan dari tempat sampah', // from v2.1.24 added 3.5.2017
+			'ntfchkdir'   : 'Mengecek folder tujuan', // from v2.1.24 added 3.5.2017
+
+			/*********************************** volumes *********************************/
+			'volume_Trash' : 'Sampah', //from v2.1.24 added 29.4.2017
+
+			/************************************ dates **********************************/
+			'dateUnknown' : 'tak diketahui',
+			'Today'       : 'Hari ini',
+			'Yesterday'   : 'Kemarin',
+			'msJan'       : 'Jan',
+			'msFeb'       : 'Feb',
+			'msMar'       : 'Mar',
+			'msApr'       : 'Apr',
+			'msMay'       : 'Mei',
+			'msJun'       : 'Jun',
+			'msJul'       : 'Jul',
+			'msAug'       : 'Agt',
+			'msSep'       : 'Sep',
+			'msOct'       : 'Okt',
+			'msNov'       : 'Nop',
+			'msDec'       : 'Des',
+			'January'     : 'Januari',
+			'February'    : 'Pebruari',
+			'March'       : 'Maret',
+			'April'       : 'April',
+			'May'         : 'Mei',
+			'June'        : 'Juni',
+			'July'        : 'Juli',
+			'August'      : 'Agustus',
+			'September'   : 'September',
+			'October'     : 'Oktober',
+			'November'    : 'Nopember',
+			'December'    : 'Desember',
+			'Sunday'      : 'Minggu',
+			'Monday'      : 'Senin',
+			'Tuesday'     : 'Selasa',
+			'Wednesday'   : 'Rabu',
+			'Thursday'    : 'Kamis',
+			'Friday'      : 'Jum \'at',
+			'Saturday'    : 'Sabtu',
+			'Sun'         : 'Min',
+			'Mon'         : 'Sen',
+			'Tue'         : 'Sel',
+			'Wed'         : 'Rab',
+			'Thu'         : 'Kam',
+			'Fri'         : 'Jum',
+			'Sat'         : 'Sab',
+
+			/******************************** sort variants ********************************/
+			'sortname'          : 'menurut nama',
+			'sortkind'          : 'menurut jenis',
+			'sortsize'          : 'menurut ukuran',
+			'sortdate'          : 'menurut tanggal',
+			'sortFoldersFirst'  : 'Utamakan folder',
+			'sortperm'          : 'menurut perizinan', // from v2.1.13 added 13.06.2016
+			'sortmode'          : 'menurut mode',       // from v2.1.13 added 13.06.2016
+			'sortowner'         : 'menurut pemilik',      // from v2.1.13 added 13.06.2016
+			'sortgroup'         : 'menurut grup',      // from v2.1.13 added 13.06.2016
+			'sortAlsoTreeview'  : 'Also Treeview',  // from v2.1.15 added 01.08.2016
+
+			/********************************** new items **********************************/
+			'untitled file.txt' : 'FileBaru.txt', // added 10.11.2015
+			'untitled folder'   : 'FolderBaru',   // added 10.11.2015
+			'Archive'           : 'ArsipBaru',  // from v2.1 added 10.11.2015
+
+			/********************************** messages **********************************/
+			'confirmReq'      : 'Diperlukan konfirmasi',
+			'confirmRm'       : 'Anda yakin akan menghapus berkas?<br/>Ini tidak dapat kembalikan!',
+			'confirmRepl'     : 'Timpa berkas lama dengan yang baru?',
+			'confirmRest'     : 'Timpa berkas yang ada dengan berkas dari sampah?', // fromv2.1.24 added 5.5.2017
+			'confirmConvUTF8' : 'Bukan UTF-8<br/>Konversi ke UTF-8?<br/>Konten akan berubah menjadi UTF-8 ketika disimpan dengan konversi.', // from v2.1 added 08.04.2014
+			'confirmNonUTF8'  : 'Character encoding of this file couldn\'t be detected. It need to temporarily convert to UTF-8 for editting.<br/>Please select character encoding of this file.', // from v2.1.19 added 28.11.2016
+			'confirmNotSave'  : 'Telah terjadi perubahan.<br/>Kehilangan perkerjaan jika kamu tidak menyimpan.', // from v2.1 added 15.7.2015
+			'confirmTrash'    : 'Anda yakin untuk membuang berkas ke tempat sampah?', //from v2.1.24 added 29.4.2017
+			'apllyAll'        : 'Terapkan ke semua',
+			'name'            : 'Nama',
+			'size'            : 'Ukuran',
+			'perms'           : 'Perijinan',
+			'modify'          : 'Diubah',
+			'kind'            : 'Jenis',
+			'read'            : 'baca',
+			'write'           : 'tulis',
+			'noaccess'        : 'tidak ada akses',
+			'and'             : 'dan',
+			'unknown'         : 'tak diketahui',
+			'selectall'       : 'Pilih semua berkas',
+			'selectfiles'     : 'Pilih berkas',
+			'selectffile'     : 'Pilih berkas pertama',
+			'selectlfile'     : 'Pilih berkas terakhir',
+			'viewlist'        : 'Tampilan daftar',
+			'viewicons'       : 'Tampilan ikon',
+			'places'          : 'Lokasi',
+			'calc'            : 'Hitung',
+			'path'            : 'Alamat',
+			'aliasfor'        : 'Nama lain untuk',
+			'locked'          : 'Dikunci',
+			'dim'             : 'Dimensi',
+			'files'           : 'Berkas',
+			'folders'         : 'Folder',
+			'items'           : 'Pokok',
+			'yes'             : 'ya',
+			'no'              : 'tidak',
+			'link'            : 'Tautan',
+			'searcresult'     : 'Hasil pencarian',
+			'selected'        : 'Pokok terpilih',
+			'about'           : 'Tentang',
+			'shortcuts'       : 'Pintasan',
+			'help'            : 'Bantuan',
+			'webfm'           : 'Pengelola berkas web',
+			'ver'             : 'Versi',
+			'protocolver'     : 'versi protokol',
+			'homepage'        : 'Rumah proyek',
+			'docs'            : 'Dokumentasi',
+			'github'          : 'Ambil kami di Github',
+			'twitter'         : 'Ikuti kami di twitter',
+			'facebook'        : 'Gabung dengan kami di facebook',
+			'team'            : 'Tim',
+			'chiefdev'        : 'kepala pengembang',
+			'developer'       : 'pengembang',
+			'contributor'     : 'kontributor',
+			'maintainer'      : 'pengurus',
+			'translator'      : 'penerjemah',
+			'icons'           : 'Ikon',
+			'dontforget'      : 'dan jangan lupa pakai handukmu',
+			'shortcutsof'     : 'Pintasan dimatikan',
+			'dropFiles'       : 'Seret berkas anda kesini',
+			'or'              : 'atau',
+			'selectForUpload' : 'Pilih berkas untuk diunggah',
+			'moveFiles'       : 'Pindahkan berkas',
+			'copyFiles'       : 'Salin berkas',
+			'restoreFiles'    : 'Kembalikan berkas', // from v2.1.24 added 5.5.2017
+			'rmFromPlaces'    : 'Hapus dari lokasi',
+			'aspectRatio'     : 'Aspek rasio',
+			'scale'           : 'Skala',
+			'width'           : 'Lebar',
+			'height'          : 'Tinggi',
+			'resize'          : 'Ubah ukuran',
+			'crop'            : 'Potong',
+			'rotate'          : 'Putar',
+			'rotate-cw'       : 'Putar 90 derajat ke kanan',
+			'rotate-ccw'      : 'Putar 90 derajat ke kiri',
+			'degree'          : '°',
+			'netMountDialogTitle' : 'Baca susunan volume jaringan', // added 18.04.2012
+			'protocol'            : 'Protokol', // added 18.04.2012
+			'host'                : 'Host', // added 18.04.2012
+			'port'                : 'Port', // added 18.04.2012
+			'user'                : 'Pengguna', // added 18.04.2012
+			'pass'                : 'Sandi', // added 18.04.2012
+			'confirmUnmount'      : 'Apakah anda unmount $1?',  // from v2.1 added 30.04.2012
+			'dropFilesBrowser': 'Seret atau Tempel file dari browser', // from v2.1 added 30.05.2012
+			'dropPasteFiles'  : 'Seret file, Tempel URL atau gambar dari clipboard', // from v2.1 added 07.04.2014
+			'encoding'        : 'Encoding', // from v2.1 added 19.12.2014
+			'locale'          : 'Lokasi',   // from v2.1 added 19.12.2014
+			'searchTarget'    : 'Target: $1',                // from v2.1 added 22.5.2015
+			'searchMime'      : 'Mencari berdasarkan inpu MIME Type', // from v2.1 added 22.5.2015
+			'owner'           : 'Pemilik', // from v2.1 added 20.6.2015
+			'group'           : 'Grup', // from v2.1 added 20.6.2015
+			'other'           : 'Lainnya', // from v2.1 added 20.6.2015
+			'execute'         : 'Eksekusi', // from v2.1 added 20.6.2015
+			'perm'            : 'Izin', // from v2.1 added 20.6.2015
+			'mode'            : 'Mode', // from v2.1 added 20.6.2015
+			'emptyFolder'     : 'Folder kosong', // from v2.1.6 added 30.12.2015
+			'emptyFolderDrop' : 'Folder kosong\\A Seret untuk tambahkan berkas', // from v2.1.6 added 30.12.2015
+			'emptyFolderLTap' : 'Folder kosong\\A Tekan yang lama untuk tambahkan berkas', // from v2.1.6 added 30.12.2015
+			'quality'         : 'Kualitas', // from v2.1.6 added 5.1.2016
+			'autoSync'        : 'Sinkronasi Otomatis',  // from v2.1.6 added 10.1.2016
+			'moveUp'          : 'Pindah ke atas',  // from v2.1.6 added 18.1.2016
+			'getLink'         : 'Mendepatkan URL link', // from v2.1.7 added 9.2.2016
+			'selectedItems'   : '($1) berkas dipilih', // from v2.1.7 added 2.19.2016
+			'folderId'        : 'ID Folder', // from v2.1.10 added 3.25.2016
+			'offlineAccess'   : 'Izin akses offline', // from v2.1.10 added 3.25.2016
+			'reAuth'          : 'To re-authenticate', // from v2.1.10 added 3.25.2016
+			'nowLoading'      : 'Sedang memuat...', // from v2.1.12 added 4.26.2016
+			'openMulti'       : 'Membuka file bersamaan', // from v2.1.12 added 5.14.2016
+			'openMultiConfirm': 'Anda mencoba membuka file $1. Apakah anda ingin membuka di browser?', // from v2.1.12 added 5.14.2016
+			'emptySearch'     : 'Hasil pencarian kosong dalam target', // from v2.1.12 added 5.16.2016
+			'editingFile'     : 'Sedang mengedit file', // from v2.1.13 added 6.3.2016
+			'hasSelected'     : 'Anda memilih $1 berkas', // from v2.1.13 added 6.3.2016
+			'hasClipboard'    : 'Kamu mempunyai $i berkas di clipboard', // from v2.1.13 added 6.3.2016
+			'incSearchOnly'   : 'Hanya pencarian bertamah untuk menampilkan tampilan sekarang', // from v2.1.13 added 6.30.2016
+			'reinstate'       : 'Reinstate', // from v2.1.15 added 3.8.2016
+			'complete'        : '$1 selesai', // from v2.1.15 added 21.8.2016
+			'contextmenu'     : 'Context menu', // from v2.1.15 added 9.9.2016
+			'pageTurning'     : 'Page turning', // from v2.1.15 added 10.9.2016
+			'volumeRoots'     : 'Volume roots', // from v2.1.16 added 16.9.2016
+			'reset'           : 'Reset', // from v2.1.16 added 1.10.2016
+			'bgcolor'         : 'Warna background', // from v2.1.16 added 1.10.2016
+			'colorPicker'     : 'Mengambil warna', // from v2.1.16 added 1.10.2016
+			'8pxgrid'         : '8px Grid', // from v2.1.16 added 4.10.2016
+			'enabled'         : 'Diaktifkan', // from v2.1.16 added 4.10.2016
+			'disabled'        : 'Nonaktifkan', // from v2.1.16 added 4.10.2016
+			'emptyIncSearch'  : 'Search results is empty in current view.\\APress [Enter] to expand search target.', // from v2.1.16 added 5.10.2016
+			'emptyLetSearch'  : 'First letter search results is empty in current view.', // from v2.1.23 added 24.3.2017
+			'textLabel'       : 'Text label', // from v2.1.17 added 13.10.2016
+			'minsLeft'        : '$1 mins left', // from v2.1.17 added 13.11.2016
+			'openAsEncoding'  : 'Reopen with selected encoding', // from v2.1.19 added 2.12.2016
+			'saveAsEncoding'  : 'Save with the selected encoding', // from v2.1.19 added 2.12.2016
+			'selectFolder'    : 'Select folder', // from v2.1.20 added 13.12.2016
+			'firstLetterSearch': 'First letter search', // from v2.1.23 added 24.3.2017
+			'presets'         : 'Presets', // from v2.1.25 added 26.5.2017
+
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : 'Tak diketahui',
+			'kindRoot'        : 'Volume Root', // from v2.1.16 added 16.10.2016
+			'kindFolder'      : 'Folder',
+			'kindAlias'       : 'Nama lain',
+			'kindAliasBroken' : 'Nama lain rusak',
+			// applications
+			'kindApp'         : 'Aplikasi',
+			'kindPostscript'  : 'Dokumen postscript',
+			'kindMsOffice'    : 'Dokumen Ms. Office',
+			'kindMsWord'      : 'Dokumen Ms. Word',
+			'kindMsExcel'     : 'Dokumen Ms. Excel',
+			'kindMsPP'        : 'Dokumen Ms. Powerpoint',
+			'kindOO'          : 'Dokumen Open Office',
+			'kindAppFlash'    : 'Aplikasi Flash',
+			'kindPDF'         : 'Portable Dokumen Format (PDF)',
+			'kindTorrent'     : 'Berkas Bittorrent',
+			'kind7z'          : 'Arsip 7z',
+			'kindTAR'         : 'Arsip TAR',
+			'kindGZIP'        : 'Arsip GZIP',
+			'kindBZIP'        : 'Arsip BZIP',
+			'kindXZ'          : 'Arsip XZ',
+			'kindZIP'         : 'Arsip ZIP',
+			'kindRAR'         : 'Arsip RAR',
+			'kindJAR'         : 'Berkas Java JAR',
+			'kindTTF'         : 'Huruf True Type',
+			'kindOTF'         : 'Huruf Open Type',
+			'kindRPM'         : 'Paket RPM',
+			// texts
+			'kindText'        : 'Dokumen teks',
+			'kindTextPlain'   : 'Berkas teks biasa',
+			'kindPHP'         : 'Kode-sumber PHP',
+			'kindCSS'         : 'Cascading style sheet',
+			'kindHTML'        : 'Dokumen HTML',
+			'kindJS'          : 'Kode-sumber Javascript',
+			'kindRTF'         : 'Berkas Rich Text',
+			'kindC'           : 'Kode-sumber C',
+			'kindCHeader'     : 'Kode-sumber header C',
+			'kindCPP'         : 'Kode-sumber C++',
+			'kindCPPHeader'   : 'Kode-sumber header C++',
+			'kindShell'       : 'Berkas shell Unix',
+			'kindPython'      : 'Kode-sumber Python',
+			'kindJava'        : 'Kode-sumber Java',
+			'kindRuby'        : 'Kode-sumber Ruby',
+			'kindPerl'        : 'Kode-sumber Perl',
+			'kindSQL'         : 'Kode-sumber SQL',
+			'kindXML'         : 'Dokumen XML',
+			'kindAWK'         : 'Kode-sumber AWK',
+			'kindCSV'         : 'Dokumen CSV',
+			'kindDOCBOOK'     : 'Dokumen Docbook XML',
+			'kindMarkdown'    : 'Markdown text', // added 20.7.2015
+			// images
+			'kindImage'       : 'Citra',
+			'kindBMP'         : 'Citra BMP',
+			'kindJPEG'        : 'Citra JPEG',
+			'kindGIF'         : 'Citra GIF',
+			'kindPNG'         : 'Citra PNG',
+			'kindTIFF'        : 'Citra TIFF',
+			'kindTGA'         : 'Citra TGA',
+			'kindPSD'         : 'Citra Adobe Photoshop',
+			'kindXBITMAP'     : 'Citra X bitmap',
+			'kindPXM'         : 'Citra Pixelmator',
+			// media
+			'kindAudio'       : 'Berkas audio',
+			'kindAudioMPEG'   : 'Berkas audio MPEG',
+			'kindAudioMPEG4'  : 'Berkas audio MPEG-4',
+			'kindAudioMIDI'   : 'Berkas audio MIDI',
+			'kindAudioOGG'    : 'Berkas audio Ogg Vorbis',
+			'kindAudioWAV'    : 'Berkas audio WAV',
+			'AudioPlaylist'   : 'Berkas daftar putar MP3',
+			'kindVideo'       : 'Berkas video',
+			'kindVideoDV'     : 'Berkas video DV',
+			'kindVideoMPEG'   : 'Berkas video MPEG',
+			'kindVideoMPEG4'  : 'Berkas video MPEG-4',
+			'kindVideoAVI'    : 'Berkas video AVI',
+			'kindVideoMOV'    : 'Berkas video Quick Time',
+			'kindVideoWM'     : 'Berkas video Windows Media',
+			'kindVideoFlash'  : 'Berkas video Flash',
+			'kindVideoMKV'    : 'Berkas video Matroska',
+			'kindVideoOGG'    : 'Berkas video Ogg'
+		}
+	};
+}));
+

+ 448 - 0
src/assets/js/i18n/elfinder.it.js

@@ -0,0 +1,448 @@
+/**
+ * Italiano translation
+ * @author Alberto Tocci (alberto.tocci@gmail.com)
+ * @author Claudio Nicora (coolsoft.ita@gmail.com)
+ * @version 2016-12-12
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.it = {
+		translator : 'Alberto Tocci (alberto.tocci@gmail.com), Claudio Nicora (coolsoft.ita@gmail.com)',
+		language   : 'Italiano',
+		direction  : 'ltr',
+		dateFormat : 'd/m/Y H:i',
+		fancyDateFormat : '$1 H:i',
+		messages   : {
+
+			/********************************** errors **********************************/
+			'error'                : 'Errore',
+			'errUnknown'           : 'Errore sconosciuto.',
+			'errUnknownCmd'        : 'Comando sconosciuto.',
+			'errJqui'              : 'Configurazione JQuery UI non valida. Devono essere inclusi i plugin Selectable, Draggable e Droppable.',
+			'errNode'              : 'elFinder necessita dell\'elemento DOM per essere inizializzato.',
+			'errURL'               : 'Configurazione non valida.Il parametro URL non è settato.',
+			'errAccess'            : 'Accesso non consentito.',
+			'errConnect'           : 'Impossibile collegarsi al backend.',
+			'errAbort'             : 'Connessione annullata.',
+			'errTimeout'           : 'Timeout di connessione.',
+			'errNotFound'          : 'Backend non trovato.',
+			'errResponse'          : 'Risposta non valida dal backend.',
+			'errConf'              : 'Configurazione backend non valida.',
+			'errJSON'              : 'Modulo PHP JSON non installato.',
+			'errNoVolumes'         : 'Non è stato possibile leggere i volumi.',
+			'errCmdParams'         : 'Parametri non validi per il comando "$1".',
+			'errDataNotJSON'       : 'I dati non sono nel formato JSON.',
+			'errDataEmpty'         : 'Stringa vuota.',
+			'errCmdReq'            : 'La richiesta al backend richiede il nome del comando.',
+			'errOpen'              : 'Impossibile aprire "$1".',
+			'errNotFolder'         : 'L\'oggetto non è una cartella..',
+			'errNotFile'           : 'L\'oggetto non è un file.',
+			'errRead'              : 'Impossibile leggere "$1".',
+			'errWrite'             : 'Non è possibile scrivere in "$1".',
+			'errPerm'              : 'Permesso negato.',
+			'errLocked'            : '"$1" è bloccato e non può essere rinominato, spostato o eliminato.',
+			'errExists'            : 'Il file "$1" è già esistente.',
+			'errInvName'           : 'Nome file non valido.',
+			'errFolderNotFound'    : 'Cartella non trovata.',
+			'errFileNotFound'      : 'File non trovato.',
+			'errTrgFolderNotFound' : 'La cartella di destinazione"$1" non è stata trovata.',
+			'errPopup'             : 'Il tuo Browser non consente di aprire finestre di pop-up. Per aprire il file abilita questa opzione nelle impostazioni del tuo Browser.',
+			'errMkdir'             : 'Impossibile creare la cartella "$1".',
+			'errMkfile'            : 'Impossibile creare il file "$1".',
+			'errRename'            : 'Impossibile rinominare "$1".',
+			'errCopyFrom'          : 'Non è possibile copiare file da "$1".',
+			'errCopyTo'            : 'Non è possibile copiare file in "$1".',
+			'errMkOutLink'         : 'Impossibile creare un link all\'esterno della radice del volume.', // from v2.1 added 03.10.2015
+			'errUpload'            : 'Errore di Caricamento.',  // old name - errUploadCommon
+			'errUploadFile'        : 'Impossibile Caricare "$1".', // old name - errUpload
+			'errUploadNoFiles'     : 'Non sono stati specificati file da caricare.',
+			'errUploadTotalSize'   : 'La dimensione totale dei file supera il limite massimo consentito.', // old name - errMaxSize
+			'errUploadFileSize'    : 'Le dimensioni del file superano il massimo consentito.', //  old name - errFileMaxSize
+			'errUploadMime'        : 'FileType non consentito.',
+			'errUploadTransfer'    : 'Trasferimento errato del file "$1".',
+			'errUploadTemp'        : 'Impossibile creare il file temporaneo per l\'upload.', // from v2.1 added 26.09.2015
+			'errNotReplace'        : 'L\'oggetto "$1" esiste già in questa cartella e non può essere sostituito con un oggetto di un tipo differente.', // new
+			'errReplace'           : 'Impossibile sostituire "$1".',
+			'errSave'              : 'Impossibile salvare "$1".',
+			'errCopy'              : 'Impossibile copiare "$1".',
+			'errMove'              : 'Impossibile spostare "$1".',
+			'errCopyInItself'      : 'Sorgente e destinazione risultato essere uguali.',
+			'errRm'                : 'Impossibile rimuovere "$1".',
+			'errRmSrc'             : 'Impossibile eliminare i file origine.',
+			'errExtract'           : 'Impossibile estrarre file da "$1".',
+			'errArchive'           : 'Impossibile creare archivio.',
+			'errArcType'           : 'Tipo di archivio non supportato.',
+			'errNoArchive'         : 'Il file non è un archivio o contiene file non supportati.',
+			'errCmdNoSupport'      : 'Il Backend non supporta questo comando.',
+			'errReplByChild'       : 'La cartella $1 non può essere sostituita da un oggetto in essa contenuto.',
+			'errArcSymlinks'       : 'Per questioni di sicurezza non è possibile estrarre archivi che contengono collegamenti..', // edited 24.06.2012
+			'errArcMaxSize'        : 'La dimensione dell\'archivio supera le massime dimensioni consentite.',
+			'errResize'            : 'Impossibile ridimensionare "$1".',
+			'errResizeDegree'      : 'Angolo di rotazione non valido.',  // added 7.3.2013
+			'errResizeRotate'      : 'Impossibile ruotare l\'immagine.',  // added 7.3.2013
+			'errResizeSize'        : 'Dimensione dell\'immagine non valida.',  // added 7.3.2013
+			'errResizeNoChange'    : 'Dimensione dell\'immagine non modificata.',  // added 7.3.2013
+			'errUsupportType'      : 'Tipo di file non supportato.',
+			'errNotUTF8Content'    : 'Il file "$1" non è nel formato UTF-8 e non può essere modificato.',  // added 9.11.2011
+			'errNetMount'          : 'Impossibile montare "$1".', // added 17.04.2012
+			'errNetMountNoDriver'  : 'Protocollo non supportato.',     // added 17.04.2012
+			'errNetMountFailed'    : 'Mount fallito.',         // added 17.04.2012
+			'errNetMountHostReq'   : 'Necessario host.', // added 18.04.2012
+			'errSessionExpires'    : 'La sessione è scaduta a causa di inattività.',
+			'errCreatingTempDir'   : 'Impossibile creare la cartella temporanea: "$1"',
+			'errFtpDownloadFile'   : 'Impossibile scaricare il file tramite FTP: "$1"',
+			'errFtpUploadFile'     : 'Impossibile caricare il file tramite FTP: "$1"',
+			'errFtpMkdir'          : 'Impossibile creare la cartella remota tramite FTP: "$1"',
+			'errArchiveExec'       : 'Errore durante l\'archiviazione dei file: "$1"',
+			'errExtractExec'       : 'Errore durante l\'estrazione dei file: "$1"',
+			'errNetUnMount'        : 'Impossibile smontare', // from v2.1 added 30.04.2012
+			'errConvUTF8'          : 'Non convertibile nel formato UTF-8', // from v2.1 added 08.04.2014
+			'errFolderUpload'      : 'Per uploadare l0intera cartella usare Google Chrome.', // from v2.1 added 26.6.2015
+			'errSearchTimeout'     : 'Timeout durante la ricerca di "$1". I risultati della ricerca sono parziali.', // from v2.1 added 12.1.2016
+			'errReauthRequire'     : 'E\' necessaria la riautorizzazione.', // from v2.1.10 added 3.24.2016
+
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'Crea archivio',
+			'cmdback'      : 'Indietro',
+			'cmdcopy'      : 'Copia',
+			'cmdcut'       : 'Taglia',
+			'cmddownload'  : 'Download',
+			'cmdduplicate' : 'Duplica',
+			'cmdedit'      : 'Modifica File',
+			'cmdextract'   : 'Estrai Archivio',
+			'cmdforward'   : 'Avanti',
+			'cmdgetfile'   : 'Seleziona File',
+			'cmdhelp'      : 'About',
+			'cmdhome'      : 'Home',
+			'cmdinfo'      : 'Informazioni',
+			'cmdmkdir'     : 'Nuova cartella',
+			'cmdmkdirin'   : 'In una nuova cartella', // from v2.1.7 added 19.2.2016
+			'cmdmkfile'    : 'Nuovo file di testo',
+			'cmdopen'      : 'Apri',
+			'cmdpaste'     : 'Incolla',
+			'cmdquicklook' : 'Anteprima',
+			'cmdreload'    : 'Ricarica',
+			'cmdrename'    : 'Rinomina',
+			'cmdrm'        : 'Elimina',
+			'cmdsearch'    : 'Ricerca file',
+			'cmdup'        : 'Vai alla directory padre',
+			'cmdupload'    : 'Carica File',
+			'cmdview'      : 'Visualizza',
+			'cmdresize'    : 'Ridimensiona Immagine',
+			'cmdsort'      : 'Ordina',
+			'cmdnetmount'  : 'Monta disco di rete', // added 18.04.2012
+			'cmdnetunmount': 'Smonta', // from v2.1 added 30.04.2012
+			'cmdplaces'    : 'To Places', // added 28.12.2014
+			'cmdchmod'     : 'Cambia modalità', // from v2.1 added 20.6.2015
+			'cmdopendir'   : 'Apri una cartella', // from v2.1 added 13.1.2016
+			'cmdcolwidth'  : 'Reimposta dimensione colonne', // from v2.1.13 added 12.06.2016
+
+			/*********************************** buttons ***********************************/
+			'btnClose'  : 'Chiudi',
+			'btnSave'   : 'Salva',
+			'btnRm'     : 'Elimina',
+			'btnApply'  : 'Applica',
+			'btnCancel' : 'Annulla',
+			'btnNo'     : 'No',
+			'btnYes'    : 'Si',
+			'btnMount'  : 'Monta',  // added 18.04.2012
+			'btnApprove': 'Vai a $1 & approva', // from v2.1 added 26.04.2012
+			'btnUnmount': 'Smonta', // from v2.1 added 30.04.2012
+			'btnConv'   : 'Converti', // from v2.1 added 08.04.2014
+			'btnCwd'    : 'Qui',      // from v2.1 added 22.5.2015
+			'btnVolume' : 'Disco',    // from v2.1 added 22.5.2015
+			'btnAll'    : 'Tutti',       // from v2.1 added 22.5.2015
+			'btnMime'   : 'MIME Type', // from v2.1 added 22.5.2015
+			'btnFileName':'Nome file',  // from v2.1 added 22.5.2015
+			'btnSaveClose': 'Salva & Chiudi', // from v2.1 added 12.6.2015
+			'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015
+
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'Apri cartella',
+			'ntffile'     : 'Apri file',
+			'ntfreload'   : 'Ricarica il contenuto della cartella',
+			'ntfmkdir'    : 'Creazione delle directory in corso',
+			'ntfmkfile'   : 'Creazione dei files in corso',
+			'ntfrm'       : 'Eliminazione dei files in corso',
+			'ntfcopy'     : 'Copia file in corso',
+			'ntfmove'     : 'Spostamento file in corso',
+			'ntfprepare'  : 'Preparazione della copia dei file.',
+			'ntfrename'   : 'Sto rinominando i file',
+			'ntfupload'   : 'Caricamento file in corso',
+			'ntfdownload' : 'Downloading file in corso',
+			'ntfsave'     : 'Salvataggio file in corso',
+			'ntfarchive'  : 'Creazione archivio in corso',
+			'ntfextract'  : 'Estrazione file dall\'archivio in corso',
+			'ntfsearch'   : 'Ricerca files in corso',
+			'ntfresize'   : 'Ridimensionamento immagini',
+			'ntfsmth'     : 'Operazione in corso. Attendere...',
+			'ntfloadimg'  : 'Caricamento immagine in corso',
+			'ntfnetmount' : 'Montaggio disco di rete', // added 18.04.2012
+			'ntfnetunmount': 'Smontaggio disco di rete', // from v2.1 added 30.04.2012
+			'ntfdim'      : 'Lettura dimensioni immagine', // added 20.05.2013
+			'ntfreaddir'  : 'Lettura informazioni cartella', // from v2.1 added 01.07.2013
+			'ntfurl'      : 'Lettura URL del collegamento', // from v2.1 added 11.03.2014
+			'ntfchmod'    : 'Modifica della modalità del file', // from v2.1 added 20.6.2015
+			'ntfpreupload': 'Verifica del nome del file caricato', // from v2.1 added 31.11.2015
+			'ntfzipdl'    : 'Creazione del file da scaricare', // from v2.1.7 added 23.1.2016
+
+			/************************************ dates **********************************/
+			'dateUnknown' : 'sconosciuto',
+			'Today'       : 'Oggi',
+			'Yesterday'   : 'Ieri',
+			'msJan'       : 'Gen',
+			'msFeb'       : 'Feb',
+			'msMar'       : 'Mar',
+			'msApr'       : 'Apr',
+			'msMay'       : 'Mag',
+			'msJun'       : 'Giu',
+			'msJul'       : 'Lug',
+			'msAug'       : 'Ago',
+			'msSep'       : 'Set',
+			'msOct'       : 'Ott',
+			'msNov'       : 'Nov',
+			'msDec'       : 'Dic',
+			'January'     : 'Gennaio',
+			'February'    : 'Febbraio',
+			'March'       : 'Marzo',
+			'April'       : 'Aprile',
+			'May'         : 'Maggio',
+			'June'        : 'Giugno',
+			'July'        : 'Luglio',
+			'August'      : 'Agosto',
+			'September'   : 'Settembre',
+			'October'     : 'Ottobre',
+			'November'    : 'Novembre',
+			'December'    : 'Dicembre',
+			'Sunday'      : 'Domenica',
+			'Monday'      : 'Lunedì',
+			'Tuesday'     : 'Martedì',
+			'Wednesday'   : 'Mercoledì',
+			'Thursday'    : 'Giovedì',
+			'Friday'      : 'Venerdì',
+			'Saturday'    : 'Sabato',
+			'Sun'         : 'Dom',
+			'Mon'         : 'Lun',
+			'Tue'         : 'Mar',
+			'Wed'         : 'Mer',
+			'Thu'         : 'Gio',
+			'Fri'         : 'Ven',
+			'Sat'         : 'Sab',
+
+			/******************************** sort variants ********************************/
+			'sortname'          : 'per nome',
+			'sortkind'          : 'per tipo',
+			'sortsize'          : 'per dimensione',
+			'sortdate'          : 'per data',
+			'sortFoldersFirst'  : 'cartelle in testa',
+			'sortperm'          : 'per permessi', // from v2.1.13 added 13.06.2016
+			'sortmode'          : 'per modalità',       // from v2.1.13 added 13.06.2016
+			'sortowner'         : 'per possessore',      // from v2.1.13 added 13.06.2016
+			'sortgroup'         : 'per gruppo',      // from v2.1.13 added 13.06.2016
+
+			/********************************** new items **********************************/
+			'untitled file.txt' : 'NuovoFile.txt', // added 10.11.2015
+			'untitled folder'   : 'NuovaCartella',   // added 10.11.2015
+			'Archive'           : 'NuovoArchivio',  // from v2.1 added 10.11.2015
+
+			/********************************** messages **********************************/
+			'confirmReq'      : 'Conferma richiesta',
+			'confirmRm'       : 'Sei sicuro di voler eliminare i file?<br />L\'operazione non è reversibile!',
+			'confirmRepl'     : 'Sostituire i file ?',
+			'confirmConvUTF8' : 'Non in formato UTF-8<br/>Convertire in UTF-8?<br/>Il contenuto diventerà UTF-8 salvando dopo la conversione.', // from v2.1 added 08.04.2014
+			'confirmNotSave'  : 'Il contenuto è stato modificato.<br/>Le modifiche andranno perse se non si salveranno.', // from v2.1 added 15.7.2015
+			'apllyAll'        : 'Applica a tutti',
+			'name'            : 'Nome',
+			'size'            : 'Dimensione',
+			'perms'           : 'Permessi',
+			'modify'          : 'Modificato il',
+			'kind'            : 'Tipo',
+			'read'            : 'lettura',
+			'write'           : 'scrittura',
+			'noaccess'        : 'nessun accesso',
+			'and'             : 'e',
+			'unknown'         : 'sconosciuto',
+			'selectall'       : 'Seleziona tutti i file',
+			'selectfiles'     : 'Seleziona file',
+			'selectffile'     : 'Seleziona il primo file',
+			'selectlfile'     : 'Seleziona l\'ultimo file',
+			'viewlist'        : 'Visualizza Elenco',
+			'viewicons'       : 'Visualizza Icone',
+			'places'          : 'Places',
+			'calc'            : 'Calcola',
+			'path'            : 'Percorso',
+			'aliasfor'        : 'Alias per',
+			'locked'          : 'Bloccato',
+			'dim'             : 'Dimensioni',
+			'files'           : 'File',
+			'folders'         : 'Cartelle',
+			'items'           : 'Oggetti',
+			'yes'             : 'si',
+			'no'              : 'no',
+			'link'            : 'Collegamento',
+			'searcresult'     : 'Risultati ricerca',
+			'selected'        : 'oggetti selezionati',
+			'about'           : 'Informazioni',
+			'shortcuts'       : 'Scorciatoie',
+			'help'            : 'Aiuto',
+			'webfm'           : 'Web file manager',
+			'ver'             : 'Versione',
+			'protocolver'     : 'versione protocollo',
+			'homepage'        : 'Home del progetto',
+			'docs'            : 'Documentazione',
+			'github'          : 'Seguici su Github',
+			'twitter'         : 'Seguici su Twitter',
+			'facebook'        : 'Seguici su Facebook',
+			'team'            : 'Team',
+			'chiefdev'        : 'sviluppatore capo',
+			'developer'       : 'sviluppatore',
+			'contributor'     : 'collaboratore',
+			'maintainer'      : 'manutentore',
+			'translator'      : 'traduttore',
+			'icons'           : 'Icone',
+			'dontforget'      : 'e non dimenticate di portare l\'asciugamano',
+			'shortcutsof'     : 'Scorciatoie disabilitate',
+			'dropFiles'       : 'Trascina i file qui',
+			'or'              : 'o',
+			'selectForUpload' : 'Seleziona file da caricare',
+			'moveFiles'       : 'Sposta file',
+			'copyFiles'       : 'Copia file',
+			'rmFromPlaces'    : 'Rimuovi da places',
+			'aspectRatio'     : 'Proporzioni',
+			'scale'           : 'Scala',
+			'width'           : 'Larghezza',
+			'height'          : 'Altezza',
+			'resize'          : 'Ridimensione',
+			'crop'            : 'Ritaglia',
+			'rotate'          : 'Ruota',
+			'rotate-cw'       : 'Ruota di 90° in senso orario',
+			'rotate-ccw'      : 'Ruota di 90° in senso antiorario',
+			'degree'          : 'Gradi',
+			'netMountDialogTitle' : 'Monta disco di rete', // added 18.04.2012
+			'protocol'            : 'Protocollo', // added 18.04.2012
+			'host'                : 'Host', // added 18.04.2012
+			'port'                : 'Porta', // added 18.04.2012
+			'user'                : 'Utente', // added 18.04.2012
+			'pass'                : 'Password', // added 18.04.2012
+			'confirmUnmount'      : 'Vuoi smontare $1?',  // from v2.1 added 30.04.2012
+			'dropFilesBrowser': 'Rilascia o incolla dal browser', // from v2.1 added 30.05.2012
+			'dropPasteFiles'  : 'Rilascia o incolla files e indirizzi URL qui', // from v2.1 added 07.04.2014
+			'encoding'        : 'Codifica', // from v2.1 added 19.12.2014
+			'locale'          : 'Lingua',   // from v2.1 added 19.12.2014
+			'searchTarget'    : 'Destinazione: $1',                // from v2.1 added 22.5.2015
+			'searchMime'      : 'Cerca per MIME Type', // from v2.1 added 22.5.2015
+			'owner'           : 'Possessore', // from v2.1 added 20.6.2015
+			'group'           : 'Gruppo', // from v2.1 added 20.6.2015
+			'other'           : 'Altri', // from v2.1 added 20.6.2015
+			'execute'         : 'Esegui', // from v2.1 added 20.6.2015
+			'perm'            : 'Permessi', // from v2.1 added 20.6.2015
+			'mode'            : 'Modalità', // from v2.1 added 20.6.2015
+			'emptyFolder'     : 'La cartella è vuota', // from v2.1.6 added 30.12.2015
+			'emptyFolderDrop' : 'La cartella è vuota\\A Trascina e rilascia per aggiungere elementi', // from v2.1.6 added 30.12.2015
+			'emptyFolderLTap' : 'La cartella è vuota\\A Premi a lungo per aggiungere elementi', // from v2.1.6 added 30.12.2015
+			'quality'         : 'Qualità', // from v2.1.6 added 5.1.2016
+			'autoSync'        : 'Sincr. automatica',  // from v2.1.6 added 10.1.2016
+			'moveUp'          : 'Sposta in alto',  // from v2.1.6 added 18.1.2016
+			'getLink'         : 'Mostra URL link', // from v2.1.7 added 9.2.2016
+			'selectedItems'   : 'Elementi selezionati ($1)', // from v2.1.7 added 2.19.2016
+			'folderId'        : 'ID cartella', // from v2.1.10 added 3.25.2016
+			'offlineAccess'   : 'Permetti accesso non in linea', // from v2.1.10 added 3.25.2016
+			'reAuth'          : 'Per ri-autenticarsi', // from v2.1.10 added 3.25.2016
+			'nowLoading'      : 'Caricamento...', // from v2.1.12 added 4.26.2016
+			'openMulti'       : 'Apri più files', // from v2.1.12 added 5.14.2016
+			'openMultiConfirm': 'Stai cercando di aprire $1 files. Sei sicuro di volerli aprire nel browser?', // from v2.1.12 added 5.14.2016
+			'emptySearch'     : 'Nessun risultato soddisfa i criteri di ricerca', // from v2.1.12 added 5.16.2016
+			'editingFile'     : 'Il file è in modifica.', // from v2.1.13 added 6.3.2016
+			'hasSelected'     : '$1 elementi sono selezionati.', // from v2.1.13 added 6.3.2016
+			'hasClipboard'    : '$1 elementi negli appunti.', // from v2.1.13 added 6.3.2016
+			'incSearchOnly'   : 'La ricerca incrementale è solo dalla vista corrente.', // from v2.1.13 added 6.30.2016
+
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : 'Sconosciuto',
+			'kindFolder'      : 'Cartella',
+			'kindAlias'       : 'Alias',
+			'kindAliasBroken' : 'Alias guasto',
+			// applications
+			'kindApp'         : 'Applicazione',
+			'kindPostscript'  : 'Documento Postscript',
+			'kindMsOffice'    : 'Documento Microsoft Office',
+			'kindMsWord'      : 'Documento Microsoft Word',
+			'kindMsExcel'     : 'Documento Microsoft Excel',
+			'kindMsPP'        : 'Presentazione Microsoft Powerpoint',
+			'kindOO'          : 'Documento Open Office',
+			'kindAppFlash'    : 'Applicazione Flash',
+			'kindPDF'         : 'Documento PDF',
+			'kindTorrent'     : 'File Bittorrent',
+			'kind7z'          : 'Archivio 7z',
+			'kindTAR'         : 'Archivio TAR',
+			'kindGZIP'        : 'Archivio GZIP',
+			'kindBZIP'        : 'Archivio BZIP',
+			'kindXZ'          : 'Archivio XZ',
+			'kindZIP'         : 'Archivio ZIP',
+			'kindRAR'         : 'Archivio RAR',
+			'kindJAR'         : 'File Java JAR',
+			'kindTTF'         : 'Font True Type',
+			'kindOTF'         : 'Font Open Type',
+			'kindRPM'         : 'Pacchetto RPM',
+			// texts
+			'kindText'        : 'Documento di testo',
+			'kindTextPlain'   : 'Testo Semplice',
+			'kindPHP'         : 'File PHP',
+			'kindCSS'         : 'File CSS (Cascading Style Sheet)',
+			'kindHTML'        : 'Documento HTML',
+			'kindJS'          : 'File Javascript',
+			'kindRTF'         : 'File RTF (Rich Text Format)',
+			'kindC'           : 'File C',
+			'kindCHeader'     : 'File C (header)',
+			'kindCPP'         : 'File C++',
+			'kindCPPHeader'   : 'File C++ (header)',
+			'kindShell'       : 'Script Unix shell',
+			'kindPython'      : 'File Python',
+			'kindJava'        : 'File Java',
+			'kindRuby'        : 'File Ruby',
+			'kindPerl'        : 'File Perl',
+			'kindSQL'         : 'File SQL',
+			'kindXML'         : 'File XML',
+			'kindAWK'         : 'File AWK',
+			'kindCSV'         : 'File CSV (Comma separated values)',
+			'kindDOCBOOK'     : 'File Docbook XML',
+			'kindMarkdown'    : 'Testo markdown', // added 20.7.2015
+			// images
+			'kindImage'       : 'Immagine',
+			'kindBMP'         : 'Immagine BMP',
+			'kindJPEG'        : 'Immagine JPEG',
+			'kindGIF'         : 'Immagine GIF',
+			'kindPNG'         : 'Immagine PNG',
+			'kindTIFF'        : 'Immagine TIFF',
+			'kindTGA'         : 'Immagine TGA',
+			'kindPSD'         : 'Immagine Adobe Photoshop',
+			'kindXBITMAP'     : 'Immagine X bitmap',
+			'kindPXM'         : 'Immagine Pixelmator',
+			// media
+			'kindAudio'       : 'File Audio',
+			'kindAudioMPEG'   : 'Audio MPEG',
+			'kindAudioMPEG4'  : 'Audio MPEG-4',
+			'kindAudioMIDI'   : 'Audio MIDI',
+			'kindAudioOGG'    : 'Audio Ogg Vorbis',
+			'kindAudioWAV'    : 'Audio WAV',
+			'AudioPlaylist'   : 'Playlist MP3',
+			'kindVideo'       : 'File Video',
+			'kindVideoDV'     : 'Filmato DV',
+			'kindVideoMPEG'   : 'Filmato MPEG',
+			'kindVideoMPEG4'  : 'Filmato MPEG-4',
+			'kindVideoAVI'    : 'Filmato AVI',
+			'kindVideoMOV'    : 'Filmato Quick Time',
+			'kindVideoWM'     : 'Filmato Windows Media',
+			'kindVideoFlash'  : 'Filmato Flash',
+			'kindVideoMKV'    : 'Filmato Matroska',
+			'kindVideoOGG'    : 'Filmato Ogg'
+		}
+	};
+}));

+ 520 - 0
src/assets/js/i18n/elfinder.jp.js

@@ -0,0 +1,520 @@
+/**
+ * Japanese translation
+ * @author Tomoaki Yoshida <info@yoshida-studio.jp>
+ * @author Naoki Sawada <hypweb@gmail.com>
+ * @version 2017-09-28
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.jp = {
+		translator : 'Tomoaki Yoshida &lt;info@yoshida-studio.jp&gt;, Naoki Sawada &lt;hypweb@gmail.com&gt;',
+		language   : 'Japanese',
+		direction  : 'ltr',
+		dateFormat : 'Y/m/d h:i A', // Mar 13, 2012 05:27 PM
+		fancyDateFormat : '$1 h:i A', // will produce smth like: Today 12:25 PM
+		nonameDateFormat : 'ymd-His', // to apply if upload file is noname: 120513172700
+		messages   : {
+
+			/********************************** errors **********************************/
+			'error'                : 'エラー',
+			'errUnknown'           : '不明なエラーです。',
+			'errUnknownCmd'        : '不明なコマンドです。',
+			'errJqui'              : '無効な jQuery UI 設定です。Selectable, Draggable, Droppable コンポーネントを含める必要があります。',
+			'errNode'              : 'elFinder は DOM Element が必要です。',
+			'errURL'               : '無効な elFinder 設定です! URLを設定されていません。',
+			'errAccess'            : 'アクセスが拒否されました。',
+			'errConnect'           : 'バックエンドとの接続ができません。',
+			'errAbort'             : '接続が中断されました。',
+			'errTimeout'           : '接続がタイムアウトしました。',
+			'errNotFound'          : 'バックエンドが見つかりません。',
+			'errResponse'          : '無効なバックエンドレスポンスです。',
+			'errConf'              : 'バックエンドの設定が有効ではありません。',
+			'errJSON'              : 'PHP JSON モジュールがインストールされていません。',
+			'errNoVolumes'         : '読み込み可能なボリュームがありません。',
+			'errCmdParams'         : 'コマンド "$1"のパラメーターが無効です。',
+			'errDataNotJSON'       : 'JSONデータではありません。',
+			'errDataEmpty'         : '空のデータです。',
+			'errCmdReq'            : 'バックエンドリクエストはコマンド名が必要です。',
+			'errOpen'              : '"$1" を開くことができません。',
+			'errNotFolder'         : 'オブジェクトがフォルダではありません。',
+			'errNotFile'           : 'オブジェクトがファイルではありません。',
+			'errRead'              : '"$1" を読み込むことができません。',
+			'errWrite'             : '"$1" に書き込むことができません。',
+			'errPerm'              : '権限がありません。',
+			'errLocked'            : '"$1" はロックされているので名前の変更、移動、削除ができません。',
+			'errExists'            : '"$1" というアイテム名はすでに存在しています。',
+			'errInvName'           : '無効なファイル名です。',
+			'errInvDirname'        : '無効なフォルダ名です。',  // from v2.1.24 added 12.4.2017
+			'errFolderNotFound'    : 'フォルダが見つかりません。',
+			'errFileNotFound'      : 'ファイルが見つかりません。',
+			'errTrgFolderNotFound' : 'ターゲットとするフォルダ "$1" が見つかりません。',
+			'errPopup'             : 'ポップアップウィンドウが開けません。ファイルを開くにはブラウザの設定を変更してください。',
+			'errMkdir'             : 'フォルダ "$1" を作成することができません。',
+			'errMkfile'            : 'ファイル "$1" を作成することができません。',
+			'errRename'            : '"$1" の名前を変更することができません。',
+			'errCopyFrom'          : '"$1" からのファイルコピーは許可されていません。',
+			'errCopyTo'            : '"$1" へのファイルコピーは許可されていません。',
+			'errMkOutLink'         : 'ボリュームルート外へのリンクを作成することはできません。', // from v2.1 added 03.10.2015
+			'errUpload'            : 'アップロードエラー',  // old name - errUploadCommon
+			'errUploadFile'        : '"$1" をアップロードすることができません。', // old name - errUpload
+			'errUploadNoFiles'     : 'アップロードされたファイルはありません。',
+			'errUploadTotalSize'   : 'データが許容サイズを超えています。', // old name - errMaxSize
+			'errUploadFileSize'    : 'ファイルが許容サイズを超えています。', //  old name - errFileMaxSize
+			'errUploadMime'        : '許可されていないファイル形式です。',
+			'errUploadTransfer'    : '"$1" 転送エラーです。',
+			'errUploadTemp'        : 'アップロード用一時ファイルを作成できません。', // from v2.1 added 26.09.2015
+			'errNotReplace'        : 'アイテム "$1" はすでにこの場所にあり、アイテムのタイプが違うので置き換えることはできません。', // new
+			'errReplace'           : '"$1" を置き換えることができません。',
+			'errSave'              : '"$1" を保存することができません。',
+			'errCopy'              : '"$1" をコピーすることができません。',
+			'errMove'              : '"$1" を移動することができません。',
+			'errCopyInItself'      : '"$1" をそれ自身の中にコピーすることはできません。',
+			'errRm'                : '"$1" を削除することができません。',
+			'errTrash'             : 'ごみ箱に入れることができません。', // from v2.1.24 added 30.4.2017
+			'errRmSrc'             : '元ファイルを削除することができません。',
+			'errExtract'           : '"$1" を解凍することができません。',
+			'errArchive'           : 'アーカイブを作成することができません。',
+			'errArcType'           : 'サポート外のアーカイブ形式です。',
+			'errNoArchive'         : 'アーカイブでないかサポートされていないアーカイブ形式です。',
+			'errCmdNoSupport'      : 'サポートされていないコマンドです。',
+			'errReplByChild'       : 'フォルダ "$1" に含まれてるアイテムを置き換えることはできません。',
+			'errArcSymlinks'       : 'シンボリックリンクまたは許容されないファイル名を含むアーカイブはセキュリティ上、解凍できません。', // edited 24.06.2012
+			'errArcMaxSize'        : 'アーカイブが許容されたサイズを超えています。',
+			'errResize'            : '"$1" のリサイズまたは回転ができません。',
+			'errResizeDegree'      : 'イメージの回転角度が不正です。',  // added 7.3.2013
+			'errResizeRotate'      : 'イメージを回転できません。',  // added 7.3.2013
+			'errResizeSize'        : '指定されたイメージサイズが不正です。',  // added 7.3.2013
+			'errResizeNoChange'    : 'イメージサイズなどの変更点がありません。',  // added 7.3.2013
+			'errUsupportType'      : 'このファイルタイプはサポートされていません。',
+			'errNotUTF8Content'    : 'ファイル "$1" には UTF-8 以外の文字が含まれているので編集できません。',  // added 9.11.2011
+			'errNetMount'          : '"$1" をマウントできません。', // added 17.04.2012
+			'errNetMountNoDriver'  : 'サポートされていないプロトコルです。',     // added 17.04.2012
+			'errNetMountFailed'    : 'マウントに失敗しました。',         // added 17.04.2012
+			'errNetMountHostReq'   : 'ホスト名は必須です。', // added 18.04.2012
+			'errSessionExpires'    : 'アクションがなかったため、セッションが期限切れになりました。',
+			'errCreatingTempDir'   : '一時ディレクトリを作成できません:"$1"',
+			'errFtpDownloadFile'   : 'FTP からファイルをダウンロードできません:"$1"',
+			'errFtpUploadFile'     : 'FTP へファイルをアップロードできません:"$1"',
+			'errFtpMkdir'          : 'FTP にリモートディレクトリを作成できません:"$1"',
+			'errArchiveExec'       : 'ファイルのアーカイブ中にエラーが発生しました:"$1"',
+			'errExtractExec'       : 'ファイルの抽出中にエラーが発生しました:"$1"',
+			'errNetUnMount'        : 'アンマウントできません。', // from v2.1 added 30.04.2012
+			'errConvUTF8'          : 'UTF-8 に変換できませんでした。', // from v2.1 added 08.04.2014
+			'errFolderUpload'      : 'フォルダをアップロードしたいのであれば、モダンブラウザを試してください。', // from v2.1 added 26.6.2015
+			'errSearchTimeout'     : '"$1" を検索中にタイムアウトしました。検索結果は部分的です。', // from v2.1 added 12.1.2016
+			'errReauthRequire'     : '再認可が必要です。', // from v2.1.10 added 24.3.2016
+			'errMaxTargets'        : '選択可能な最大アイテム数は $1 個です。', // from v2.1.17 added 17.10.2016
+			'errRestore'           : '宛先の特定ができないため、ごみ箱から戻せません。', // from v2.1.24 added 3.5.2017
+			'errEditorNotFound'    : 'このファイルタイプのエディターがありません。', // from v2.1.25 added 23.5.2017
+			'errServerError'       : 'サーバー側でエラーが発生しました。', // from v2.1.25 added 16.6.2017
+			'errEmpty'             : 'フォルダ"$1"を空にすることができません。', // from v2.1.25 added 22.6.2017
+			
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'アーカイブ作成',
+			'cmdback'      : '戻る',
+			'cmdcopy'      : 'コピー',
+			'cmdcut'       : 'カット',
+			'cmddownload'  : 'ダウンロード',
+			'cmdduplicate' : '複製',
+			'cmdedit'      : 'ファイル編集',
+			'cmdextract'   : 'アーカイブを解凍',
+			'cmdforward'   : '進む',
+			'cmdgetfile'   : 'ファイル選択',
+			'cmdhelp'      : 'このソフトウェアについて',
+			'cmdhome'      : 'ルート',
+			'cmdinfo'      : '情報',
+			'cmdmkdir'     : '新規フォルダ',
+			'cmdmkdirin'   : '新規フォルダへ', // from v2.1.7 added 19.2.2016
+			'cmdmkfile'    : '新規テキストファイル',
+			'cmdopen'      : '開く',
+			'cmdpaste'     : 'ペースト',
+			'cmdquicklook' : 'プレビュー',
+			'cmdreload'    : 'リロード',
+			'cmdrename'    : 'リネーム',
+			'cmdrm'        : '削除',
+			'cmdtrash'     : 'ごみ箱へ', //from v2.1.24 added 29.4.2017
+			'cmdrestore'   : '復元', //from v2.1.24 added 3.5.2017
+			'cmdsearch'    : 'ファイルを探す',
+			'cmdup'        : '親フォルダへ移動',
+			'cmdupload'    : 'ファイルアップロード',
+			'cmdview'      : 'ビュー',
+			'cmdresize'    : 'リサイズと回転',
+			'cmdsort'      : 'ソート',
+			'cmdnetmount'  : 'ネットワークボリュームをマウント', // added 18.04.2012
+			'cmdnetunmount': 'アンマウント', // from v2.1 added 30.04.2012
+			'cmdplaces'    : 'お気に入りへ', // added 28.12.2014
+			'cmdchmod'     : '属性変更', // from v2.1 added 20.6.2015
+			'cmdopendir'   : 'フォルダを開く', // from v2.1 added 13.1.2016
+			'cmdcolwidth'  : '列幅リセット', // from v2.1.13 added 12.06.2016
+			'cmdfullscreen': 'フルスクリーン', // from v2.1.15 added 03.08.2016
+			'cmdmove'      : '移動', // from v2.1.15 added 21.08.2016
+			'cmdempty'     : 'フォルダを空に', // from v2.1.25 added 22.06.2017
+			'cmdundo'      : '元に戻す', // from v2.1.27 added 31.07.2017
+			'cmdredo'      : 'やり直し', // from v2.1.27 added 31.07.2017
+			'cmdpreference': '環境設定', // from v2.1.27 added 03.08.2017
+			'cmdselectall' : 'すべて選択', // from v2.1.28 added 15.08.2017
+			'cmdselectnone': '選択解除', // from v2.1.28 added 15.08.2017
+			'cmdselectinvert': '選択を反転', // from v2.1.28 added 15.08.2017
+
+			/*********************************** buttons ***********************************/
+			'btnClose'  : '閉じる',
+			'btnSave'   : '保存',
+			'btnRm'     : '削除',
+			'btnApply'  : '適用',
+			'btnCancel' : 'キャンセル',
+			'btnNo'     : 'いいえ',
+			'btnYes'    : 'はい',
+			'btnMount'  : 'マウント',  // added 18.04.2012
+			'btnApprove': '$1へ行き認可する', // from v2.1 added 26.04.2012
+			'btnUnmount': 'アンマウント', // from v2.1 added 30.04.2012
+			'btnConv'   : '変換', // from v2.1 added 08.04.2014
+			'btnCwd'    : 'この場所',      // from v2.1 added 22.5.2015
+			'btnVolume' : 'ボリューム',    // from v2.1 added 22.5.2015
+			'btnAll'    : '全て',       // from v2.1 added 22.5.2015
+			'btnMime'   : 'MIMEタイプ', // from v2.1 added 22.5.2015
+			'btnFileName':'ファイル名',  // from v2.1 added 22.5.2015
+			'btnSaveClose': '保存して閉じる', // from v2.1 added 12.6.2015
+			'btnBackup' : 'バックアップ', // fromv2.1 added 28.11.2015
+			'btnRename'    : 'リネーム',      // from v2.1.24 added 6.4.2017
+			'btnRenameAll' : 'リネーム(全て)', // from v2.1.24 added 6.4.2017
+			'btnPrevious' : '前へ ($1/$2)', // from v2.1.24 added 11.5.2017
+			'btnNext'     : '次へ ($1/$2)', // from v2.1.24 added 11.5.2017
+			'btnSaveAs'   : '別名保存', // from v2.1.25 added 24.5.2017
+
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'フォルダを開いています',
+			'ntffile'     : 'ファイルを開いています',
+			'ntfreload'   : 'フォルダを再読込しています',
+			'ntfmkdir'    : 'フォルダを作成しています',
+			'ntfmkfile'   : 'ファイルを作成しています',
+			'ntfrm'       : 'ファイルを削除しています',
+			'ntfcopy'     : 'ファイルをコピーしています',
+			'ntfmove'     : 'ファイルを移動しています',
+			'ntfprepare'  : '既存アイテムを確認しています',
+			'ntfrename'   : 'ファイル名を変更しています',
+			'ntfupload'   : 'ファイルをアップロードしています',
+			'ntfdownload' : 'ファイルをダウンロードしています',
+			'ntfsave'     : 'ファイルを保存しています',
+			'ntfarchive'  : 'アーカイブ作成しています',
+			'ntfextract'  : 'アーカイブを解凍しています',
+			'ntfsearch'   : 'ファイル検索中',
+			'ntfresize'   : 'リサイズしています',
+			'ntfsmth'     : '処理をしています',
+			'ntfloadimg'  : 'イメージを読み込んでいます',
+			'ntfnetmount' : 'ネットボリュームをマウント中', // added 18.04.2012
+			'ntfnetunmount': 'ネットボリュームをアンマウント中', // from v2.1 added 30.04.2012
+			'ntfdim'      : '画像サイズを取得しています', // added 20.05.2013
+			'ntfreaddir'  : 'ホルダ情報を読み取っています', // from v2.1 added 01.07.2013
+			'ntfurl'      : 'リンクURLを取得しています', // from v2.1 added 11.03.2014
+			'ntfchmod'    : 'ファイル属性を変更しています', // from v2.1 added 20.6.2015
+			'ntfpreupload': 'アップロードファイル名を検証中', // from v2.1 added 31.11.2015
+			'ntfzipdl'    : 'ダウンロード用ファイルを作成中', // from v2.1.7 added 23.1.2016
+			'ntfparents'  : 'パス情報を取得しています', // from v2.1.17 added 2.11.2016
+			'ntfchunkmerge': 'アップロード済みファイルを処理中', // from v2.1.17 added 2.11.2016
+			'ntftrash'    : 'ごみ箱に入れています', // from v2.1.24 added 2.5.2017
+			'ntfrestore'  : 'ごみ箱から元に戻しています', // from v2.1.24 added 2.5.2017
+			'ntfchkdir'   : '宛先ホルダーを確認しています', // from v2.1.24 added 3.5.2017
+			'ntfundo'     : '前の操作を取り消して元に戻しています', // from v2.1.27 added 31.07.2017
+			'ntfredo'     : '元に戻した操作をやり直しています', // from v2.1.27 added 31.07.2017
+
+			/*********************************** volumes *********************************/
+			'volume_Trash' : 'ごみ箱', //from v2.1.24 added 29.4.2017
+
+			/************************************ dates **********************************/
+			'dateUnknown' : '不明',
+			'Today'       : '今日',
+			'Yesterday'   : '昨日',
+			'msJan'       : '1月',
+			'msFeb'       : '2月',
+			'msMar'       : '3月',
+			'msApr'       : '4月',
+			'msMay'       : '5月',
+			'msJun'       : '6月',
+			'msJul'       : '7月',
+			'msAug'       : '8月',
+			'msSep'       : '9月',
+			'msOct'       : '10月',
+			'msNov'       : '11月',
+			'msDec'       : '12月',
+			'January'     : '1月',
+			'February'    : '2月',
+			'March'       : '3月',
+			'April'       : '4月',
+			'May'         : '5月',
+			'June'        : '6月',
+			'July'        : '7月',
+			'August'      : '8月',
+			'September'   : '9月',
+			'October'     : '10月',
+			'November'    : '11月',
+			'December'    : '12月',
+			'Sunday'      : '日曜日',
+			'Monday'      : '月曜日',
+			'Tuesday'     : '火曜日',
+			'Wednesday'   : '水曜日',
+			'Thursday'    : '木曜日',
+			'Friday'      : '金曜日',
+			'Saturday'    : '土曜日',
+			'Sun'         : '(日)',
+			'Mon'         : '(月)',
+			'Tue'         : '(火)',
+			'Wed'         : '(水)',
+			'Thu'         : '(木)',
+			'Fri'         : '(金)',
+			'Sat'         : '(土)',
+
+			/******************************** sort variants ********************************/
+			'sortname'          : '名前順',
+			'sortkind'          : '種類順',
+			'sortsize'          : 'サイズ順',
+			'sortdate'          : '日付順',
+			'sortFoldersFirst'  : 'フォルダ優先',
+			'sortperm'          : '権限順', // from v2.1.13 added 13.06.2016
+			'sortmode'          : '属性順',       // from v2.1.13 added 13.06.2016
+			'sortowner'         : 'オーナー順',      // from v2.1.13 added 13.06.2016
+			'sortgroup'         : 'グループ順',      // from v2.1.13 added 13.06.2016
+			'sortAlsoTreeview'  : 'ツリービューも',  // from v2.1.15 added 01.08.2016
+
+			/********************************** new items **********************************/
+			'untitled file.txt' : '新規ファイル.txt', // added 10.11.2015
+			'untitled folder'   : '新規フォルダ',   // added 10.11.2015
+			'Archive'           : '新規アーカイブ',  // from v2.1 added 10.11.2015
+
+			/********************************** messages **********************************/
+			'confirmReq'      : '処理を実行しますか?',
+			'confirmRm'       : 'アイテムを完全に削除してもよろしいですか?<br/>この操作は取り消せません!',
+			'confirmRepl'     : '古いアイテムを新しいアイテムで上書きしますか?',
+			'confirmRest'     : '既存のアイテムをごみ箱のアイテムで上書きしますか?', // fromv2.1.24 added 5.5.2017
+			'confirmConvUTF8' : 'UTF-8 以外の文字が含まれています。<br/>UTF-8  に変換しますか?<br/>変換後の保存でコンテンツは UTF-8 になります。', // from v2.1 added 08.04.2014
+			'confirmNonUTF8'  : 'このファイルの文字エンコーディングを判別できませんでした。編集するには一時的に UTF-8 に変換する必要があります。<br/>文字エンコーディングを指定してください。', // from v2.1.19 added 28.11.2016
+			'confirmNotSave'  : '変更されています。<br/>保存せずに閉じると編集内容が失われます。', // from v2.1 added 15.7.2015
+			'confirmTrash'    : 'アイテムをごみ箱に移動してもよろしいですか?', //from v2.1.24 added 29.4.2017
+			'apllyAll'        : '全てに適用します',
+			'name'            : '名前',
+			'size'            : 'サイズ',
+			'perms'           : '権限',
+			'modify'          : '更新',
+			'kind'            : '種類',
+			'read'            : '読み取り',
+			'write'           : '書き込み',
+			'noaccess'        : 'アクセス禁止',
+			'and'             : ',',
+			'unknown'         : '不明',
+			'selectall'       : '全てのファイルを選択',
+			'selectfiles'     : 'ファイル選択',
+			'selectffile'     : '最初のファイルを選択',
+			'selectlfile'     : '最後のファイルを選択',
+			'viewlist'        : 'リスト形式で表示',
+			'viewicons'       : 'アイコン形式で表示',
+			'places'          : 'お気に入り',
+			'calc'            : '計算中',
+			'path'            : 'パス',
+			'aliasfor'        : 'エイリアス',
+			'locked'          : 'ロック',
+			'dim'             : 'サイズ',
+			'files'           : 'ファイル',
+			'folders'         : 'フォルダ',
+			'items'           : 'アイテム',
+			'yes'             : 'はい',
+			'no'              : 'いいえ',
+			'link'            : 'リンク',
+			'searcresult'     : '検索結果',
+			'selected'        : '選択されたアイテム',
+			'about'           : 'アバウト',
+			'shortcuts'       : 'ショートカット',
+			'help'            : 'ヘルプ',
+			'webfm'           : 'ウェブファイルマネージャー',
+			'ver'             : 'バージョン',
+			'protocolver'     : 'プロトコルバージョン',
+			'homepage'        : 'プロジェクトホーム',
+			'docs'            : 'ドキュメンテーション',
+			'github'          : 'Github でフォーク',
+			'twitter'         : 'Twitter でフォロー',
+			'facebook'        : 'Facebookグループ に参加',
+			'team'            : 'チーム',
+			'chiefdev'        : 'チーフデベロッパー',
+			'developer'       : 'デベロッパー',
+			'contributor'     : 'コントリビュータ',
+			'maintainer'      : 'メインテナー',
+			'translator'      : '翻訳者',
+			'icons'           : 'アイコン',
+			'dontforget'      : 'タオル忘れちゃだめよ~',
+			'shortcutsof'     : 'ショートカットは利用できません',
+			'dropFiles'       : 'ここにファイルをドロップ',
+			'or'              : 'または',
+			'selectForUpload' : 'ファイルを選択',
+			'moveFiles'       : 'アイテムを移動',
+			'copyFiles'       : 'アイテムをコピー',
+			'restoreFiles'    : 'アイテムを元に戻す', // from v2.1.24 added 5.5.2017
+			'rmFromPlaces'    : 'ここから削除',
+			'aspectRatio'     : '縦横比維持',
+			'scale'           : '表示縮尺',
+			'width'           : '幅',
+			'height'          : '高さ',
+			'resize'          : 'リサイズ',
+			'crop'            : '切り抜き',
+			'rotate'          : '回転',
+			'rotate-cw'       : '90度左回転',
+			'rotate-ccw'      : '90度右回転',
+			'degree'          : '度',
+			'netMountDialogTitle' : 'ネットワークボリュームのマウント', // added 18.04.2012
+			'protocol'            : 'プロトコル', // added 18.04.2012
+			'host'                : 'ホスト名', // added 18.04.2012
+			'port'                : 'ポート', // added 18.04.2012
+			'user'                : 'ユーザー名', // added 18.04.2012
+			'pass'                : 'パスワード', // added 18.04.2012
+			'confirmUnmount'      : '$1をアンマウントしますか?',  // from v2.1 added 30.04.2012
+			'dropFilesBrowser': 'ブラウザからファイルをドロップまたは貼り付け', // from v2.1 added 30.05.2012
+			'dropPasteFiles'  : 'ここにファイルをドロップ または URLリスト, 画像(クリップボード) を貼り付け', // from v2.1 added 07.04.2014
+			'encoding'        : 'エンコーディング', // from v2.1 added 19.12.2014
+			'locale'          : 'ロケール',   // from v2.1 added 19.12.2014
+			'searchTarget'    : '検索範囲: $1',                // from v2.1 added 22.5.2015
+			'searchMime'      : '指定した MIME タイプで検索', // from v2.1 added 22.5.2015
+			'owner'           : 'オーナー', // from v2.1 added 20.6.2015
+			'group'           : 'グループ', // from v2.1 added 20.6.2015
+			'other'           : 'その他', // from v2.1 added 20.6.2015
+			'execute'         : '実行', // from v2.1 added 20.6.2015
+			'perm'            : 'パーミッション', // from v2.1 added 20.6.2015
+			'mode'            : '属性', // from v2.1 added 20.6.2015
+			'emptyFolder'     : '空のフォルダ', // from v2.1.6 added 30.12.2015
+			'emptyFolderDrop' : '空のフォルダ\\Aアイテムを追加するにはここへドロップ', // from v2.1.6 added 30.12.2015
+			'emptyFolderLTap' : '空のフォルダ\\Aアイテムを追加するにはここをロングタップ', // from v2.1.6 added 30.12.2015
+			'quality'         : '品質', // from v2.1.6 added 5.1.2016
+			'autoSync'        : '自動更新',  // from v2.1.6 added 10.1.2016
+			'moveUp'          : '上へ移動',  // from v2.1.6 added 18.1.2016
+			'getLink'         : 'リンクURLを取得', // from v2.1.7 added 9.2.2016
+			'selectedItems'   : '選択アイテム ($1)', // from v2.1.7 added 2.19.2016
+			'folderId'        : 'フォルダID', // from v2.1.10 added 3.25.2016
+			'offlineAccess'   : 'オフライン アクセスを可能にする', // from v2.1.10 added 3.25.2016
+			'reAuth'          : '再認証する', // from v2.1.10 added 3.25.2016
+			'nowLoading'      : '読み込んでいます...', // from v2.1.12 added 4.26.2016
+			'openMulti'       : '複数ファイルオープン', // from v2.1.12 added 5.14.2016
+			'openMultiConfirm': '$1 個のファイルを開こうとしています。このままブラウザで開きますか?', // from v2.1.12 added 5.14.2016
+			'emptySearch'     : '検索対象に該当するアイテムはありません。', // from v2.1.12 added 5.16.2016
+			'editingFile'     : 'ファイルを編集中です。', // from v2.1.13 added 6.3.2016
+			'hasSelected'     : '$1 個のアイテムを選択中です。', // from v2.1.13 added 6.3.2016
+			'hasClipboard'    : '$1 個のアイテムがクリップボードに入っています。', // from v2.1.13 added 6.3.2016
+			'incSearchOnly'   : '逐次検索対象は現在のビューのみです。', // from v2.1.13 added 6.30.2016
+			'reinstate'       : '元に戻す', // from v2.1.15 added 3.8.2016
+			'complete'        : '$1 完了', // from v2.1.15 added 21.8.2016
+			'contextmenu'     : 'コンテキストメニュー', // from v2.1.15 added 9.9.2016
+			'pageTurning'     : 'ページめくり', // from v2.1.15 added 10.9.2016
+			'volumeRoots'     : 'ボリュームルート', // from v2.1.16 added 16.9.2016
+			'reset'           : 'リセット', // from v2.1.16 added 1.10.2016
+			'bgcolor'         : '背景色', // from v2.1.16 added 1.10.2016
+			'colorPicker'     : 'カラーピッカー', // from v2.1.16 added 1.10.2016
+			'8pxgrid'         : '8pxグリッド', // from v2.1.16 added 4.10.2016
+			'enabled'         : '有効', // from v2.1.16 added 4.10.2016
+			'disabled'        : '無効', // from v2.1.16 added 4.10.2016
+			'emptyIncSearch'  : '現在のビュー内に該当するアイテムはありません。\\A[Enter]キーで検索対象を拡げます。', // from v2.1.16 added 5.10.2016
+			'emptyLetSearch'  : '現在のビュー内に指定された文字で始まるアイテムはありません。', // from v2.1.23 added 24.3.2017
+			'textLabel'       : 'テキストラベル', // from v2.1.17 added 13.10.2016
+			'minsLeft'        : '残り$1分', // from v2.1.17 added 13.11.2016
+			'openAsEncoding'  : '選択したエンコーディングで開き直す', // from v2.1.19 added 2.12.2016
+			'saveAsEncoding'  : '選択したエンコーディングで保存', // from v2.1.19 added 2.12.2016
+			'selectFolder'    : 'フォルダを選択', // from v2.1.20 added 13.12.2016
+			'firstLetterSearch': '一文字目で検索', // from v2.1.23 added 24.3.2017
+			'presets'         : 'プリセット', // from v2.1.25 added 26.5.2017
+			'tooManyToTrash'  : 'アイテム数が多すぎるのでごみ箱に入れられません。', // from v2.1.25 added 9.6.2017
+			'TextArea'        : 'テキストエリア', // from v2.1.25 added 14.6.2017
+			'folderToEmpty'   : 'フォルダ"$1"を空にします。', // from v2.1.25 added 22.6.2017
+			'filderIsEmpty'   : 'フォルダ"$1"にアイテムはありません。', // from v2.1.25 added 22.6.2017
+			'preference'      : '環境設定', // from v2.1.26 added 28.6.2017
+			'language'        : '言語設定', // from v2.1.26 added 28.6.2017
+			'clearBrowserData': 'ブラウザに保存された設定を初期化する', // from v2.1.26 added 28.6.2017
+			'toolbarPref'     : 'ツールバー設定', // from v2.1.27 added 2.8.2017
+			'charsLeft'       : '... 残り $1 文字',  // from v2.1.29 added 30.8.2017
+			'sum'             : '合計', // from v2.1.29 added 28.9.2017
+
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : '不明',
+			'kindRoot'        : 'ボリュームルート', // from v2.1.16 added 16.10.2016
+			'kindFolder'      : 'フォルダ',
+			'kindSelects'     : '複数選択', // from v2.1.29 added 29.8.2017
+			'kindAlias'       : '別名',
+			'kindAliasBroken' : '宛先不明の別名',
+			// applications
+			'kindApp'         : 'アプリケーション',
+			'kindPostscript'  : 'Postscript ドキュメント',
+			'kindMsOffice'    : 'Microsoft Office ドキュメント',
+			'kindMsWord'      : 'Microsoft Word ドキュメント',
+			'kindMsExcel'     : 'Microsoft Excel ドキュメント',
+			'kindMsPP'        : 'Microsoft Powerpoint プレゼンテーション',
+			'kindOO'          : 'Open Office ドキュメント',
+			'kindAppFlash'    : 'Flash アプリケーション',
+			'kindPDF'         : 'PDF',
+			'kindTorrent'     : 'Bittorrent ファイル',
+			'kind7z'          : '7z アーカイブ',
+			'kindTAR'         : 'TAR アーカイブ',
+			'kindGZIP'        : 'GZIP アーカイブ',
+			'kindBZIP'        : 'BZIP アーカイブ',
+			'kindXZ'          : 'XZ アーカイブ',
+			'kindZIP'         : 'ZIP アーカイブ',
+			'kindRAR'         : 'RAR アーカイブ',
+			'kindJAR'         : 'Java JAR ファイル',
+			'kindTTF'         : 'True Type フォント',
+			'kindOTF'         : 'Open Type フォント',
+			'kindRPM'         : 'RPM パッケージ',
+			// texts
+			'kindText'        : 'Text ドキュメント',
+			'kindTextPlain'   : 'プレインテキスト',
+			'kindPHP'         : 'PHP ソース',
+			'kindCSS'         : 'スタイルシート',
+			'kindHTML'        : 'HTML ドキュメント',
+			'kindJS'          : 'Javascript ソース',
+			'kindRTF'         : 'Rich Text フォーマット',
+			'kindC'           : 'C ソース',
+			'kindCHeader'     : 'C ヘッダーソース',
+			'kindCPP'         : 'C++ ソース',
+			'kindCPPHeader'   : 'C++ ヘッダーソース',
+			'kindShell'       : 'Unix shell スクリプト',
+			'kindPython'      : 'Python ソース',
+			'kindJava'        : 'Java ソース',
+			'kindRuby'        : 'Ruby ソース',
+			'kindPerl'        : 'Perl スクリプト',
+			'kindSQL'         : 'SQL ソース',
+			'kindXML'         : 'XML ドキュメント',
+			'kindAWK'         : 'AWK ソース',
+			'kindCSV'         : 'CSV',
+			'kindDOCBOOK'     : 'Docbook XML ドキュメント',
+			'kindMarkdown'    : 'Markdown テキスト', // added 20.7.2015
+			// images
+			'kindImage'       : 'イメージ',
+			'kindBMP'         : 'BMP イメージ',
+			'kindJPEG'        : 'JPEG イメージ',
+			'kindGIF'         : 'GIF イメージ',
+			'kindPNG'         : 'PNG イメージ',
+			'kindTIFF'        : 'TIFF イメージ',
+			'kindTGA'         : 'TGA イメージ',
+			'kindPSD'         : 'Adobe Photoshop イメージ',
+			'kindXBITMAP'     : 'X bitmap イメージ',
+			'kindPXM'         : 'Pixelmator イメージ',
+			// media
+			'kindAudio'       : 'オーディオメディア',
+			'kindAudioMPEG'   : 'MPEG オーディオ',
+			'kindAudioMPEG4'  : 'MPEG-4 オーディオ',
+			'kindAudioMIDI'   : 'MIDI オーディオ',
+			'kindAudioOGG'    : 'Ogg Vorbis オーディオ',
+			'kindAudioWAV'    : 'WAV オーディオ',
+			'AudioPlaylist'   : 'MP3 プレイリスト',
+			'kindVideo'       : 'ビデオメディア',
+			'kindVideoDV'     : 'DV ムービー',
+			'kindVideoMPEG'   : 'MPEG ムービー',
+			'kindVideoMPEG4'  : 'MPEG-4 ムービー',
+			'kindVideoAVI'    : 'AVI ムービー',
+			'kindVideoMOV'    : 'Quick Time ムービー',
+			'kindVideoWM'     : 'Windows Media ムービー',
+			'kindVideoFlash'  : 'Flash ムービー',
+			'kindVideoMKV'    : 'Matroska ムービー',
+			'kindVideoOGG'    : 'Ogg ムービー'
+		}
+	};
+}));
+

+ 374 - 0
src/assets/js/i18n/elfinder.ko.js

@@ -0,0 +1,374 @@
+/**
+ * Korean translation
+ * @author Hwang Ahreum 황아름 <luckmagic@naver.com>
+ * @version 2014-12-19
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.ko = {
+		translator : 'Hwang Ahreum; &lt;luckmagic@naver.com&gt;',
+		language   : 'Korea-한국어',
+		direction  : 'ltr',
+		dateFormat : 'd.m.Y H:i',
+		fancyDateFormat : '$1 H:i',
+		messages   : {
+
+			/********************************** errors **********************************/
+			'error'                : '에러',
+			'errUnknown'           : '알 수 없는 에러',
+			'errUnknownCmd'        : '알 수 없는 명령어',
+			'errJqui'              : 'jQuery UI 환경설정이 올바르지 않습니다. 선택,드래그앤드롭 컴포넌트가 포함되어야합니다',
+			'errNode'              : 'elFinder를 생성하기 위해서는 DOM Element를 요구합니다',
+			'errURL'               : 'elFinder 환경설정이 올바르지 않습니다! URL 옵션이 설정되지 않았습니다',
+			'errAccess'            : '액세스 할 수 없습니다',
+			'errConnect'           : 'Backend에 연결할 수 없습니다',
+			'errAbort'             : '연결 실패',
+			'errTimeout'           : '연결시간 초과',
+			'errNotFound'          : 'Backend를 찾을 수 없습니다',
+			'errResponse'          : 'Backend가 응답하지 않습니다',
+			'errConf'              : 'Backend 환경설정이 올바르지 않습니다',
+			'errJSON'              : 'PHP JSON 모듈이 설치되지 않았습니다',
+			'errNoVolumes'         : '읽기 가능한 볼률이 없습니다',
+			'errCmdParams'         : ' "$1" 명령어는 잘못된 인수입니다',
+			'errDataNotJSON'       : '데이터는 JSON이 아닙니다',
+			'errDataEmpty'         : '빈 데이터 입니다',
+			'errCmdReq'            : 'Backend는 필요한 명령어 이름을 요청합니다',
+			'errOpen'              : ' "$1" 열 수 없습니다',
+			'errNotFolder'         : '폴더가 아닙니다',
+			'errNotFile'           : '파일이 아닙니다',
+			'errRead'              : ' "$1" 읽을 수 없습니다',
+			'errWrite'             : ' "$1" 쓸 수 없습니다',
+			'errPerm'              : '권한이 없습니다',
+			'errLocked'            : ' "$1" 잠겨 있습니다, 이동,삭제가 불가능합니다',
+			'errExists'            : ' "$1" 존재합니다',
+			'errInvName'           : '이름에 올바르지 않은 문자가 포함되었습니다',
+			'errFolderNotFound'    : '폴더를 찾을 수 없습니다',
+			'errFileNotFound'      : '파일을 찾을 수 없습니다',
+			'errTrgFolderNotFound' : ' "$1" 폴더를 찾을 수 없습니다',
+			'errPopup'             : '브라우저에서 팝업을 차단하였습니다.팝업을 허용하려면 브라우저 옵션을 변경하세요',
+			'errMkdir'             : ' "$1" 폴더를 생성할 수 없습니다',
+			'errMkfile'            : ' "$1" 파일을 생성할 수 없습니다',
+			'errRename'            : ' "$1" 이름을 변경할 수 없습니다',
+			'errCopyFrom'          : '볼률 "$1" 로부터 파일을 복사할 수 없습니다',
+			'errCopyTo'            : '볼률 "$1" 에 파일을 복사할 수 없습니다',
+			'errUpload'            : '업로드 에러',
+			'errUploadFile'        : ' "$1" 업로드할 수 없습니다',
+			'errUploadNoFiles'     : '업로드할 파일이 없습니다',
+			'errUploadTotalSize'   : '데이터가 허용된 최대크기를 초과하였습니다',
+			'errUploadFileSize'    : '파일이 허용된 최대크기를 초과하였습니다',
+			'errUploadMime'        : '잘못된 파일형식입니다',
+			'errUploadTransfer'    : ' "$1" 전송 에러',
+			'errNotReplace'        : 'Object "$1" already exists at this location and can not be replaced by object with another type.',
+			'errReplace'           : 'Unable to replace "$1".',
+			'errSave'              : ' "$1" 저장할 수 없습니다',
+			'errCopy'              : ' "$1" 복사할 수 없습니다',
+			'errMove'              : ' "$1" 이동할 수 없습니다',
+			'errCopyInItself'      : ' "$1" 이곳에 복사 할 수 없습니다',
+			'errRm'                : ' "$1" 이름을 변경할 수 없습니다',
+			'errRmSrc'             : 'Unable remove source file(s).',
+			'errExtract'           : ' "$1" 에 압축을 풀 수 없습니다',
+			'errArchive'           : '압축파일을 생성할 수 없습니다',
+			'errArcType'           : '지원하지 않는 압축파일 형식입니다',
+			'errNoArchive'         : '압축파일이 아니거나 지원하지 않는 압축파일 형식입니다',
+			'errCmdNoSupport'      : '이 명령어는 Backend를 지원하지 않습니다',
+			'errReplByChild'       : ' "$1" 폴더에 덮어쓸수 없습니다',
+			'errArcSymlinks'       : '보안을 위해 시스템 호출을 포함한 압축파일인지를 분석합니다',
+			'errArcMaxSize'        : '압축파일이 허용된 최대크기를 초과하였습니다',
+			'errResize'            : ' "$1" 크기 변경을 할 수 없습니다',
+			'errResizeDegree'      : 'Invalid rotate degree.',
+			'errResizeRotate'      : 'Unable to rotate image.',
+			'errResizeSize'        : 'Invalid image size.',
+			'errResizeNoChange'    : 'Image size not changed.',
+			'errUsupportType'      : '지원하지 않는 파일 형식',
+			'errNotUTF8Content'    : 'File "$1" is not in UTF-8 and cannot be edited.',  // added 9.11.2011
+			'errNetMount'          : 'Unable to mount "$1".', // added 17.04.2012
+			'errNetMountNoDriver'  : 'Unsupported protocol.',     // added 17.04.2012
+			'errNetMountFailed'    : 'Mount failed.',         // added 17.04.2012
+			'errNetMountHostReq'   : 'Host required.', // added 18.04.2012
+			'errSessionExpires'    : 'Your session has expired due to inactivity.',
+			'errCreatingTempDir'   : 'Unable to create temporary directory: "$1"',
+			'errFtpDownloadFile'   : 'Unable to download file from FTP: "$1"',
+			'errFtpUploadFile'     : 'Unable to upload file to FTP: "$1"',
+			'errFtpMkdir'          : 'Unable to create remote directory on FTP: "$1"',
+			'errArchiveExec'       : 'Error while archiving files: "$1"',
+			'errExtractExec'       : 'Error while extracting files: "$1"',
+
+			/******************************* commands names ********************************/
+			'cmdarchive'   : '압축파일생성',
+			'cmdback'      : '뒤로',
+			'cmdcopy'      : '복사',
+			'cmdcut'       : '자르기',
+			'cmddownload'  : '다운로드',
+			'cmdduplicate' : '사본',
+			'cmdedit'      : '편집',
+			'cmdextract'   : '압축풀기',
+			'cmdforward'   : '앞으로',
+			'cmdgetfile'   : '선택',
+			'cmdhelp'      : '이 소프트웨어는',
+			'cmdhome'      : '홈',
+			'cmdinfo'      : '파일정보',
+			'cmdmkdir'     : '새 폴더',
+			'cmdmkfile'    : '새 텍스트파일',
+			'cmdopen'      : '열기',
+			'cmdpaste'     : '붙여넣기',
+			'cmdquicklook' : '미리보기',
+			'cmdreload'    : '새로고침',
+			'cmdrename'    : '이름바꾸기',
+			'cmdrm'        : '삭제',
+			'cmdsearch'    : '파일찾기',
+			'cmdup'        : '상위폴더',
+			'cmdupload'    : '업로드',
+			'cmdview'      : '보기',
+			'cmdresize'    : '이미지 사이즈변경',
+			'cmdsort'      : '정렬',
+			'cmdnetmount'  : 'Mount network volume',
+
+			/*********************************** buttons ***********************************/ 
+			'btnClose'  : '닫기',
+			'btnSave'   : '저장',
+			'btnRm'     : '삭제',
+			'btnApply'  : '적용',
+			'btnCancel' : '취소',
+			'btnNo'     : '아니오',
+			'btnYes'    : '예',
+			'btnMount'  : 'Mount',
+
+			/******************************** notifications ********************************/
+			'ntfopen'     : '폴더 열기',
+			'ntffile'     : '파일 열기',
+			'ntfreload'   : '새로고침',
+			'ntfmkdir'    : '폴더 생성',
+			'ntfmkfile'   : '파일 생성',
+			'ntfrm'       : '삭제',
+			'ntfcopy'     : '복사',
+			'ntfmove'     : '이동',
+			'ntfprepare'  : '복사 준비',
+			'ntfrename'   : '이름바꾸기',
+			'ntfupload'   : '업로드',
+			'ntfdownload' : '다운로드',
+			'ntfsave'     : '저장하기',
+			'ntfarchive'  : '압축파일만들기',
+			'ntfextract'  : '압축풀기',
+			'ntfsearch'   : '검색',
+			'ntfresize'   : 'Resizing images',
+			'ntfsmth'     : '작업중 >_<',
+			'ntfloadimg'  : '이미지 불러오기',
+			'ntfnetmount' : 'Mounting network volume', // added 18.04.2012
+			'ntfdim'      : 'Acquiring image dimension', // added 20.05.2013
+
+			/************************************ dates **********************************/
+			'dateUnknown' : '알수없음',
+			'Today'       : '오늘',
+			'Yesterday'   : '내일',
+			'msJan'       : '1월',
+			'msFeb'       : '2월',
+			'msMar'       : '3월',
+			'msApr'       : '4월',
+			'msMay'       : '5월',
+			'msJun'       : '6월',
+			'msJul'       : '7월',
+			'msAug'       : '8월',
+			'msSep'       : '9월',
+			'msOct'       : '10월',
+			'msNov'       : '11월',
+			'msDec'       : '12월',
+			'January'     : '1월',
+			'February'    : '2월',
+			'March'       : '3월',
+			'April'       : '4월',
+			'May'         : '5월',
+			'June'        : '6월',
+			'July'        : '7월',
+			'August'      : '8월',
+			'September'   : '9월',
+			'October'     : '10월',
+			'November'    : '11월',
+			'December'    : '12월',
+			'Sunday'      : '일요일', 
+			'Monday'      : '월요일', 
+			'Tuesday'     : '화요일', 
+			'Wednesday'   : '수요일', 
+			'Thursday'    : '목요일', 
+			'Friday'      : '금요일', 
+			'Saturday'    : '토요일',
+			'Sun'         : '일', 
+			'Mon'         : '월', 
+			'Tue'         : '화', 
+			'Wed'         : '수', 
+			'Thu'         : '목', 
+			'Fri'         : '금', 
+			'Sat'         : '토',
+			
+			/******************************** sort variants ********************************/
+			'sortname'          : '이름', 
+			'sortkind'          : '종류', 
+			'sortsize'          : '크기',
+			'sortdate'          : '날짜',
+			'sortFoldersFirst'  : 'Folders first',
+
+			/********************************** messages **********************************/
+			'confirmReq'      : '확인',
+			'confirmRm'       : '이 파일을 정말 삭제 하겠습니까?<br/>실행 후 되돌릴 수 없습니다!',
+			'confirmRepl'     : '파일을 덮어쓰겠습니까?',
+			'apllyAll'        : '모두 적용',
+			'name'            : '이름',
+			'size'            : '크기',
+			'perms'           : '권한',
+			'modify'          : '수정된 시간',
+			'kind'            : '종류',
+			'read'            : '읽기',
+			'write'           : '쓰기',
+			'noaccess'        : '액세스 불가',
+			'and'             : '와',
+			'unknown'         : '알 수 없음',
+			'selectall'       : '모든 파일 선택',
+			'selectfiles'     : '파일 선택',
+			'selectffile'     : '첫번째 파일 선택',
+			'selectlfile'     : '마지막 파일 선택',
+			'viewlist'        : '리스트 보기',
+			'viewicons'       : '아이콘 보기',
+			'places'          : '위치',
+			'calc'            : '계산', 
+			'path'            : '경로',
+			'aliasfor'        : '별명',
+			'locked'          : '잠금',
+			'dim'             : '크기',
+			'files'           : '파일',
+			'folders'         : '폴더',
+			'items'           : '아이템',
+			'yes'             : '예',
+			'no'              : '아니오',
+			'link'            : '링크',
+			'searcresult'     : '검색 결과',  
+			'selected'        : '아이템 선택',
+			'about'           : 'About',
+			'shortcuts'       : '단축아이콘',
+			'help'            : '도움말',
+			'webfm'           : '웹 파일매니저',
+			'ver'             : '버전',
+			'protocolver'     : '프로토콜 버전',
+			'homepage'        : '홈페이지',
+			'docs'            : '문서',
+			'github'          : 'Fork us on Github',
+			'twitter'         : '트위터따라가기',
+			'facebook'        : '페이스북 가입하기',
+			'team'            : '팀',
+			'chiefdev'        : '개발팀장',
+			'developer'       : '개발자',
+			'contributor'     : '공헌자',
+			'maintainer'      : '관리자',
+			'translator'      : '번역',
+			'icons'           : '아이콘',
+			'dontforget'      : 'and don\'t forget to take your towel',
+			'shortcutsof'     : '단축아이콘 사용불가',
+			'dropFiles'       : '여기로 이동하기',
+			'or'              : '또는',
+			'selectForUpload' : '업로드 파일 선택',
+			'moveFiles'       : '파일 이동',
+			'copyFiles'       : '파일 복사',
+			'rmFromPlaces'    : '현재 폴더에서 삭제하기',
+			'aspectRatio'     : '화면비율',
+			'scale'           : '크기',
+			'width'           : '가로',
+			'height'          : '세로',
+			'resize'          : '사이즈 변경',
+			'crop'            : '자르기',
+			'rotate'          : '회전',
+			'rotate-cw'       : '반시계방향 90도 회전',
+			'rotate-ccw'      : '시계방향 90도 회전',
+			'degree'          : '각도',
+			'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012
+			'protocol'            : 'Protocol', // added 18.04.2012
+			'host'                : 'Host', // added 18.04.2012
+			'port'                : 'Port', // added 18.04.2012
+			'user'                : 'User', // added 18.04.2012
+			'pass'                : 'Password', // added 18.04.2012
+
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : '알수없음',
+			'kindFolder'      : '폴더',
+			'kindAlias'       : 'Alias',
+			'kindAliasBroken' : '손상된 Alias',
+			// applications
+			'kindApp'         : '응용프로그램',
+			'kindPostscript'  : 'Postscript 문서',
+			'kindMsOffice'    : 'Microsoft Office 문서',
+			'kindMsWord'      : 'Microsoft Word 문서',
+			'kindMsExcel'     : 'Microsoft Excel 문서',
+			'kindMsPP'        : 'Microsoft Powerpoint',
+			'kindOO'          : 'Office 문서 열기',
+			'kindAppFlash'    : '플래쉬',
+			'kindPDF'         : 'PDF(PDF)',
+			'kindTorrent'     : 'Bittorrent 파일',
+			'kind7z'          : '7z 압축파일',
+			'kindTAR'         : 'TAR 압축파일',
+			'kindGZIP'        : 'GZIP 압축파일',
+			'kindBZIP'        : 'BZIP 압축파일',
+			'kindXZ'          : 'XZ 압축파일',
+			'kindZIP'         : 'ZIP 압축파일',
+			'kindRAR'         : 'RAR 압축파일',
+			'kindJAR'         : 'Java JAR 파일',
+			'kindTTF'         : '트루타입 글꼴',
+			'kindOTF'         : '오픈타입 글꼴',
+			'kindRPM'         : 'RPM 패키지',
+			// texts
+			'kindText'        : 'Text 문서',
+			'kindTextPlain'   : '보통 텍스트',
+			'kindPHP'         : 'PHP 소스',
+			'kindCSS'         : 'CSS 문서',
+			'kindHTML'        : 'HTML 문서',
+			'kindJS'          : '자바스크립트 소스',
+			'kindRTF'         : 'RTF 형식',
+			'kindC'           : 'C 소스',
+			'kindCHeader'     : 'C 헤더소스',
+			'kindCPP'         : 'C++ 소스',
+			'kindCPPHeader'   : 'C++ 헤더소스',
+			'kindShell'       : 'Unix shell 스크립트',
+			'kindPython'      : 'Python 소스',
+			'kindJava'        : 'Java 소스',
+			'kindRuby'        : 'Ruby 소스',
+			'kindPerl'        : 'Perl 스크립트',
+			'kindSQL'         : 'SQL 소스',
+			'kindXML'         : 'XML 문서',
+			'kindAWK'         : 'AWK 소스',
+			'kindCSV'         : 'CSV 형식',
+			'kindDOCBOOK'     : 'XML 닥북 문서',
+			// images
+			'kindImage'       : '이미지',
+			'kindBMP'         : 'BMP 이미지',
+			'kindJPEG'        : 'JPEG 이미지',
+			'kindGIF'         : 'GIF 이미지',
+			'kindPNG'         : 'PNG 이미지',
+			'kindTIFF'        : 'TIFF 이미지',
+			'kindTGA'         : 'TGA 이미지',
+			'kindPSD'         : 'Adobe Photoshop 이미지',
+			'kindXBITMAP'     : 'X bitmap 이미지',
+			'kindPXM'         : 'Pixelmator 이미지',
+			// media
+			'kindAudio'       : '오디오 미디어',
+			'kindAudioMPEG'   : 'MPEG 오디오',
+			'kindAudioMPEG4'  : 'MPEG-4 오디오',
+			'kindAudioMIDI'   : 'MIDI 오디오',
+			'kindAudioOGG'    : 'Ogg Vorbis 오디오',
+			'kindAudioWAV'    : 'WAV 오디오',
+			'AudioPlaylist'   : 'MP3 플레이 리스트',
+			'kindVideo'       : 'Video 미디어',
+			'kindVideoDV'     : 'DV 동영상',
+			'kindVideoMPEG'   : 'MPEG 동영상',
+			'kindVideoMPEG4'  : 'MPEG-4 동영상',
+			'kindVideoAVI'    : 'AVI 동영상',
+			'kindVideoMOV'    : '퀵타임 동영상',
+			'kindVideoWM'     : '윈도우 미디어 플레이어 동영상',
+			'kindVideoFlash'  : '플래쉬 동영상',
+			'kindVideoMKV'    : 'Matroska 동영상',
+			'kindVideoOGG'    : 'Ogg 동영상'
+		}
+	};
+}));

+ 419 - 0
src/assets/js/i18n/elfinder.nl.js

@@ -0,0 +1,419 @@
+/**
+ * Dutch translation
+ * @author Barry vd. Heuvel <barry@fruitcakestudio.nl>
+ * @version 2015-12-01
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.nl = {
+		translator : 'Barry vd. Heuvel &lt;barry@fruitcakestudio.nl&gt;',
+		language   : 'Nederlands',
+		direction  : 'ltr',
+		dateFormat : 'd-m-Y H:i', // Mar 13, 2012 05:27 PM
+		fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM
+		messages   : {
+
+			/********************************** errors **********************************/
+			'error'                : 'Fout',
+			'errUnknown'           : 'Onbekend fout.',
+			'errUnknownCmd'        : 'Onbekend commando.',
+			'errJqui'              : 'Ongeldige jQuery UI configuratie. Selectable, draggable en droppable componenten moeten aanwezig zijn.',
+			'errNode'              : 'Voor elFinder moet een DOM Element gemaakt worden.',
+			'errURL'               : 'Ongeldige elFinder configuratie! URL optie is niet ingesteld.',
+			'errAccess'            : 'Toegang geweigerd.',
+			'errConnect'           : 'Kan geen verbinding met de backend maken.',
+			'errAbort'             : 'Verbinding afgebroken.',
+			'errTimeout'           : 'Verbinding time-out.',
+			'errNotFound'          : 'Backend niet gevonden.',
+			'errResponse'          : 'Ongeldige reactie van de backend.',
+			'errConf'              : 'Ongeldige backend configuratie.',
+			'errJSON'              : 'PHP JSON module niet geïnstalleerd.',
+			'errNoVolumes'         : 'Leesbaar volume is niet beschikbaar.',
+			'errCmdParams'         : 'Ongeldige parameters voor commando "$1".',
+			'errDataNotJSON'       : 'Data is niet JSON.',
+			'errDataEmpty'         : 'Data is leeg.',
+			'errCmdReq'            : 'Backend verzoek heeft een commando naam nodig.',
+			'errOpen'              : 'Kan "$1" niet openen.',
+			'errNotFolder'         : 'Object is geen map.',
+			'errNotFile'           : 'Object is geen bestand.',
+			'errRead'              : 'Kan "$1" niet lezen.',
+			'errWrite'             : 'Kan niet schrijven in "$1".',
+			'errPerm'              : 'Toegang geweigerd.',
+			'errLocked'            : '"$1" is vergrendeld en kan niet hernoemd, verplaats of verwijderd worden.',
+			'errExists'            : 'Bestand "$1" bestaat al.',
+			'errInvName'           : 'Ongeldige bestandsnaam.',
+			'errFolderNotFound'    : 'Map niet gevonden.',
+			'errFileNotFound'      : 'Bestand niet gevonden.',
+			'errTrgFolderNotFound' : 'Doelmap"$1" niet gevonden.',
+			'errPopup'             : 'De browser heeft voorkomen dat de pop-up is geopend. Pas de browser instellingen aan om de popup te kunnen openen.',
+			'errMkdir'             : 'Kan map "$1" niet aanmaken.',
+			'errMkfile'            : 'Kan bestand "$1" niet aanmaken.',
+			'errRename'            : 'Kan "$1" niet hernoemen.',
+			'errCopyFrom'          : 'Bestanden kopiëren van "$1" is niet toegestaan.',
+			'errCopyTo'            : 'Bestanden kopiëren naar "$1" is niet toegestaan.',
+			'errMkOutLink'         : 'Kan geen link maken buiten de hoofdmap.', // from v2.1 added 03.10.2015
+			'errUpload'            : 'Upload fout.',  // old name - errUploadCommon
+			'errUploadFile'        : 'Kan "$1" niet uploaden.', // old name - errUpload
+			'errUploadNoFiles'     : 'Geen bestanden gevonden om te uploaden.',
+			'errUploadTotalSize'   : 'Data overschrijdt de maximale grootte.', // old name - errMaxSize
+			'errUploadFileSize'    : 'Bestand overschrijdt de maximale grootte.', //  old name - errFileMaxSize
+			'errUploadMime'        : 'Bestandstype niet toegestaan.',
+			'errUploadTransfer'    : '"$1" overdrachtsfout.',
+			'errUploadTemp'        : 'Kan geen tijdelijk bestand voor de upload maken.', // from v2.1 added 26.09.2015
+			'errNotReplace'        : 'Object "$1" bestaat al op deze locatie en kan niet vervangen worden door een ander type object.', // new
+			'errReplace'           : 'Kan "$1" niet vervangen.',
+			'errSave'              : 'Kan "$1" niet opslaan.',
+			'errCopy'              : 'Kan "$1" niet kopiëren.',
+			'errMove'              : 'Kan "$1" niet verplaatsen.',
+			'errCopyInItself'      : 'Kan "$1" niet in zichzelf kopiëren.',
+			'errRm'                : 'Kan "$1" niet verwijderen.',
+			'errRmSrc'             : 'Kan bronbestanden niet verwijderen.',
+			'errExtract'           : 'Kan de bestanden van "$1" niet uitpakken.',
+			'errArchive'           : 'Kan het archief niet maken.',
+			'errArcType'           : 'Archief type is niet ondersteund.',
+			'errNoArchive'         : 'Bestand is geen archief of geen ondersteund archief type.',
+			'errCmdNoSupport'      : 'Backend ondersteund dit commando niet.',
+			'errReplByChild'       : 'De map "$1" kan niet vervangen worden door een item uit die map.',
+			'errArcSymlinks'       : 'Om veiligheidsredenen kan een bestand met symlinks of bestanden met niet toegestane namen niet worden uitgepakt .', // edited 24.06.2012
+			'errArcMaxSize'        : 'Archief overschrijdt de maximale bestandsgrootte.',
+			'errResize'            : 'Kan het formaat van "$1" niet wijzigen.',
+			'errResizeDegree'      : 'Ongeldig aantal graden om te draaien.',  // added 7.3.2013
+			'errResizeRotate'      : 'Afbeelding kan niet gedraaid worden.',  // added 7.3.2013
+			'errResizeSize'        : 'Ongeldig afbeelding formaat.',  // added 7.3.2013
+			'errResizeNoChange'    : 'Afbeelding formaat is niet veranderd.',  // added 7.3.2013
+			'errUsupportType'      : 'Bestandstype wordt niet ondersteund.',
+			'errNotUTF8Content'    : 'Bestand "$1" is niet in UTF-8 and kan niet aangepast worden.',  // added 9.11.2011
+			'errNetMount'          : 'Kan "$1" niet mounten.', // added 17.04.2012
+			'errNetMountNoDriver'  : 'Niet ondersteund protocol.',     // added 17.04.2012
+			'errNetMountFailed'    : 'Mount mislukt.',         // added 17.04.2012
+			'errNetMountHostReq'   : 'Host is verplicht.', // added 18.04.2012
+			'errSessionExpires'    : 'Uw sessie is verlopen vanwege inactiviteit.',
+			'errCreatingTempDir'   : 'Kan de tijdelijke map niet aanmaken: "$1" ',
+			'errFtpDownloadFile'   : 'Kan het bestand niet downloaden vanaf FTP: "$1"',
+			'errFtpUploadFile'     : 'Kan het bestand niet uploaden naar FTP: "$1"',
+			'errFtpMkdir'          : 'Kan het externe map niet aanmaken op de FTP-server: "$1"',
+			'errArchiveExec'       : 'Er is een fout opgetreden bij het archivering van de bestanden: "$1" ',
+			'errExtractExec'       : 'Er is een fout opgetreden bij het uitpakken van de bestanden: "$1" ',
+			'errNetUnMount'        : 'Kan niet unmounten', // from v2.1 added 30.04.2012
+			'errConvUTF8'          : 'Kan niet converteren naar UTF-8', // from v2.1 added 08.04.2014
+			'errFolderUpload'      : 'Probeer Google Chrome, als je de map wil uploaden.', // from v2.1 added 26.6.2015
+
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'Maak archief',
+			'cmdback'      : 'Vorige',
+			'cmdcopy'      : 'Kopieer',
+			'cmdcut'       : 'Knip',
+			'cmddownload'  : 'Download',
+			'cmdduplicate' : 'Dupliceer',
+			'cmdedit'      : 'Pas bestand aan',
+			'cmdextract'   : 'Bestanden uit archief uitpakken',
+			'cmdforward'   : 'Volgende',
+			'cmdgetfile'   : 'Kies bestanden',
+			'cmdhelp'      : 'Over deze software',
+			'cmdhome'      : 'Home',
+			'cmdinfo'      : 'Bekijk info',
+			'cmdmkdir'     : 'Nieuwe map',
+			'cmdmkfile'    : 'Nieuw tekstbestand',
+			'cmdopen'      : 'Open',
+			'cmdpaste'     : 'Plak',
+			'cmdquicklook' : 'Voorbeeld',
+			'cmdreload'    : 'Vernieuwen',
+			'cmdrename'    : 'Naam wijzigen',
+			'cmdrm'        : 'Verwijder',
+			'cmdsearch'    : 'Zoek bestanden',
+			'cmdup'        : 'Ga een map hoger',
+			'cmdupload'    : 'Upload bestanden',
+			'cmdview'      : 'Bekijk',
+			'cmdresize'    : 'Formaat wijzigen',
+			'cmdsort'      : 'Sorteren',
+			'cmdnetmount'  : 'Mount netwerk volume', // added 18.04.2012
+			'cmdnetunmount': 'Unmount', // from v2.1 added 30.04.2012
+			'cmdplaces'    : 'Naar Plaatsen', // added 28.12.2014
+			'cmdchmod'     : 'Wijzig modus', // from v2.1 added 20.6.2015
+
+			/*********************************** buttons ***********************************/
+			'btnClose'  : 'Sluit',
+			'btnSave'   : 'Opslaan',
+			'btnRm'     : 'Verwijder',
+			'btnApply'  : 'Toepassen',
+			'btnCancel' : 'Annuleren',
+			'btnNo'     : 'Nee',
+			'btnYes'    : 'Ja',
+			'btnMount'  : 'Mount',  // added 18.04.2012
+			'btnApprove': 'Ga naar $1 & keur goed', // from v2.1 added 26.04.2012
+			'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012
+			'btnConv'   : 'Converteer', // from v2.1 added 08.04.2014
+			'btnCwd'    : 'Hier',      // from v2.1 added 22.5.2015
+			'btnVolume' : 'Volume',    // from v2.1 added 22.5.2015
+			'btnAll'    : 'Alles',       // from v2.1 added 22.5.2015
+			'btnMime'   : 'MIME Type', // from v2.1 added 22.5.2015
+			'btnFileName':'Bestandsnaam',  // from v2.1 added 22.5.2015
+			'btnSaveClose': 'Opslaan & Sluiten', // from v2.1 added 12.6.2015
+			'btnBackup' : 'Back-up', // fromv2.1 added 28.11.2015
+
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'Bezig met openen van map',
+			'ntffile'     : 'Bezig met openen bestand',
+			'ntfreload'   : 'Herladen map inhoud',
+			'ntfmkdir'    : 'Bezig met map maken',
+			'ntfmkfile'   : 'Bezig met Bestanden maken',
+			'ntfrm'       : 'Verwijderen bestanden',
+			'ntfcopy'     : 'Kopieer bestanden',
+			'ntfmove'     : 'Verplaats bestanden',
+			'ntfprepare'  : 'Voorbereiden kopiëren',
+			'ntfrename'   : 'Hernoem bestanden',
+			'ntfupload'   : 'Bestanden uploaden actief',
+			'ntfdownload' : 'Bestanden downloaden actief',
+			'ntfsave'     : 'Bestanden opslaan',
+			'ntfarchive'  : 'Archief aan het maken',
+			'ntfextract'  : 'Bestanden uitpakken actief',
+			'ntfsearch'   : 'Zoeken naar bestanden',
+			'ntfresize'   : 'Formaat wijzigen van afbeeldingen',
+			'ntfsmth'     : 'Iets aan het doen',
+			'ntfloadimg'  : 'Laden van plaatje',
+			'ntfnetmount' : 'Mounten van netwerk volume', // added 18.04.2012
+			'ntfnetunmount': 'Unmounten van netwerk volume', // from v2.1 added 30.04.2012
+			'ntfdim'      : 'Opvragen afbeeldingen dimensies', // added 20.05.2013
+			'ntfreaddir'  : 'Map informatie lezen', // from v2.1 added 01.07.2013
+			'ntfurl'      : 'URL van link ophalen', // from v2.1 added 11.03.2014
+			'ntfchmod'    : 'Bestandsmodus wijzigen', // from v2.1 added 20.6.2015
+			'ntfpreupload': 'Upload bestandsnaam verifiëren', // from v2.1 added 31.11.2015
+
+			/************************************ dates **********************************/
+			'dateUnknown' : 'onbekend',
+			'Today'       : 'Vandaag',
+			'Yesterday'   : 'Gisteren',
+			'msJan'       : 'Jan',
+			'msFeb'       : 'Feb',
+			'msMar'       : 'Mar',
+			'msApr'       : 'Apr',
+			'msMay'       : 'Mei',
+			'msJun'       : 'Jun',
+			'msJul'       : 'Jul',
+			'msAug'       : 'Aug',
+			'msSep'       : 'Sep',
+			'msOct'       : 'Okt',
+			'msNov'       : 'Nov',
+			'msDec'       : 'Dec',
+			'January'     : 'Januari',
+			'February'    : 'Februari',
+			'March'       : 'Maart',
+			'April'       : 'April',
+			'May'         : 'Mei',
+			'June'        : 'Juni',
+			'July'        : 'Juli',
+			'August'      : 'Augustus',
+			'September'   : 'September',
+			'October'     : 'Oktober',
+			'November'    : 'November',
+			'December'    : 'December',
+			'Sunday'      : 'Zondag',
+			'Monday'      : 'Maandag',
+			'Tuesday'     : 'Dinsdag',
+			'Wednesday'   : 'Woensdag',
+			'Thursday'    : 'Donderdag',
+			'Friday'      : 'Vrijdag',
+			'Saturday'    : 'Zaterdag',
+			'Sun'         : 'Zo',
+			'Mon'         : 'Ma',
+			'Tue'         : 'Di',
+			'Wed'         : 'Wo',
+			'Thu'         : 'Do',
+			'Fri'         : 'Vr',
+			'Sat'         : 'Za',
+
+			/******************************** sort variants ********************************/
+			'sortname'          : 'op naam',
+			'sortkind'          : 'op type',
+			'sortsize'          : 'op grootte',
+			'sortdate'          : 'op datum',
+			'sortFoldersFirst'  : 'Mappen eerst',
+
+			/********************************** new items **********************************/
+			'untitled file.txt' : 'NieuwBestand.txt', // added 10.11.2015
+			'untitled folder'   : 'NieuweMap',   // added 10.11.2015
+			'Archive'           : 'NieuwArchief',  // from v2.1 added 10.11.2015
+
+			/********************************** messages **********************************/
+			'confirmReq'      : 'Bevestiging nodig',
+			'confirmRm'       : 'Weet u zeker dat u deze bestanden wil verwijderen?<br/>Deze actie kan niet ongedaan gemaakt worden!',
+			'confirmRepl'     : 'Oud bestand vervangen door het nieuwe bestand?',
+			'confirmConvUTF8' : 'Niet in UTF-8<br/>Converteren naar UTF-8?<br/>De inhoud wordt UTF-8 door op te slaan na de conversie.', // from v2.1 added 08.04.2014
+			'confirmNotSave'  : 'Het is aangepast.<br/>Wijzigingen gaan verloren als je niet opslaat.', // from v2.1 added 15.7.2015
+			'apllyAll'        : 'Toepassen op alles',
+			'name'            : 'Naam',
+			'size'            : 'Grootte',
+			'perms'           : 'Rechten',
+			'modify'          : 'Aangepast',
+			'kind'            : 'Type',
+			'read'            : 'lees',
+			'write'           : 'schrijf',
+			'noaccess'        : 'geen toegang',
+			'and'             : 'en',
+			'unknown'         : 'onbekend',
+			'selectall'       : 'Selecteer alle bestanden',
+			'selectfiles'     : 'Selecteer bestand(en)',
+			'selectffile'     : 'Selecteer eerste bestand',
+			'selectlfile'     : 'Selecteer laatste bestand',
+			'viewlist'        : 'Lijst weergave',
+			'viewicons'       : 'Icoon weergave',
+			'places'          : 'Plaatsen',
+			'calc'            : 'Bereken',
+			'path'            : 'Pad',
+			'aliasfor'        : 'Alias voor',
+			'locked'          : 'Vergrendeld',
+			'dim'             : 'Dimensies',
+			'files'           : 'Bestanden',
+			'folders'         : 'Mappen',
+			'items'           : 'Items',
+			'yes'             : 'ja',
+			'no'              : 'nee',
+			'link'            : 'Link',
+			'searcresult'     : 'Zoek resultaten',
+			'selected'        : 'geselecteerde items',
+			'about'           : 'Over',
+			'shortcuts'       : 'Snelkoppelingen',
+			'help'            : 'Help',
+			'webfm'           : 'Web bestandsmanager',
+			'ver'             : 'Versie',
+			'protocolver'     : 'protocol versie',
+			'homepage'        : 'Project home',
+			'docs'            : 'Documentatie',
+			'github'          : 'Fork ons op Github',
+			'twitter'         : 'Volg ons op twitter',
+			'facebook'        : 'Wordt lid op facebook',
+			'team'            : 'Team',
+			'chiefdev'        : 'Hoofd ontwikkelaar',
+			'developer'       : 'ontwikkelaar',
+			'contributor'     : 'bijdrager',
+			'maintainer'      : 'onderhouder',
+			'translator'      : 'vertaler',
+			'icons'           : 'Iconen',
+			'dontforget'      : 'En vergeet je handdoek niet!',
+			'shortcutsof'     : 'Snelkoppelingen uitgeschakeld',
+			'dropFiles'       : 'Sleep hier uw bestanden heen',
+			'or'              : 'of',
+			'selectForUpload' : 'Selecteer bestanden om te uploaden',
+			'moveFiles'       : 'Verplaats bestanden',
+			'copyFiles'       : 'Kopieer bestanden',
+			'rmFromPlaces'    : 'Verwijder uit Plaatsen',
+			'aspectRatio'     : 'Aspect ratio',
+			'scale'           : 'Schaal',
+			'width'           : 'Breedte',
+			'height'          : 'Hoogte',
+			'resize'          : 'Verkleinen',
+			'crop'            : 'Bijsnijden',
+			'rotate'          : 'Draaien',
+			'rotate-cw'       : 'Draai 90 graden rechtsom',
+			'rotate-ccw'      : 'Draai 90 graden linksom',
+			'degree'          : '°',
+			'netMountDialogTitle' : 'Mount netwerk volume', // added 18.04.2012
+			'protocol'            : 'Protocol', // added 18.04.2012
+			'host'                : 'Host', // added 18.04.2012
+			'port'                : 'Poort', // added 18.04.2012
+			'user'                : 'Gebruikersnaams', // added 18.04.2012
+			'pass'                : 'Wachtwoord', // added 18.04.2012
+			'confirmUnmount'      : 'Weet u zeker dat u $1 wil unmounten?',  // from v2.1 added 30.04.2012
+			'dropFilesBrowser': 'Sleep of plak bestanden vanuit de browser', // from v2.1 added 30.05.2012
+			'dropPasteFiles'  : 'Sleep of plak bestanden hier', // from v2.1 added 07.04.2014
+			'encoding'        : 'Encodering', // from v2.1 added 19.12.2014
+			'locale'          : 'Locale',   // from v2.1 added 19.12.2014
+			'searchTarget'    : 'Doel: $1',                // from v2.1 added 22.5.2015
+			'searchMime'      : 'Zoek op invoer MIME Type', // from v2.1 added 22.5.2015
+			'owner'           : 'Eigenaar', // from v2.1 added 20.6.2015
+			'group'           : 'Groep', // from v2.1 added 20.6.2015
+			'other'           : 'Overig', // from v2.1 added 20.6.2015
+			'execute'         : 'Uitvoeren', // from v2.1 added 20.6.2015
+			'perm'            : 'Rechten', // from v2.1 added 20.6.2015
+			'mode'            : 'Modus', // from v2.1 added 20.6.2015
+
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : 'Onbekend',
+			'kindFolder'      : 'Map',
+			'kindAlias'       : 'Alias',
+			'kindAliasBroken' : 'Kapot alias',
+			// applications
+			'kindApp'         : 'Applicatie',
+			'kindPostscript'  : 'Postscript document',
+			'kindMsOffice'    : 'Microsoft Office document',
+			'kindMsWord'      : 'Microsoft Word document',
+			'kindMsExcel'     : 'Microsoft Excel document',
+			'kindMsPP'        : 'Microsoft Powerpoint presentation',
+			'kindOO'          : 'Open Office document',
+			'kindAppFlash'    : 'Flash applicatie',
+			'kindPDF'         : 'Portable Document Format (PDF)',
+			'kindTorrent'     : 'Bittorrent bestand',
+			'kind7z'          : '7z archief',
+			'kindTAR'         : 'TAR archief',
+			'kindGZIP'        : 'GZIP archief',
+			'kindBZIP'        : 'BZIP archief',
+			'kindXZ'          : 'XZ archief',
+			'kindZIP'         : 'ZIP archief',
+			'kindRAR'         : 'RAR archief',
+			'kindJAR'         : 'Java JAR bestand',
+			'kindTTF'         : 'True Type font',
+			'kindOTF'         : 'Open Type font',
+			'kindRPM'         : 'RPM package',
+			// texts
+			'kindText'        : 'Tekst bestand',
+			'kindTextPlain'   : 'Tekst',
+			'kindPHP'         : 'PHP bronbestand',
+			'kindCSS'         : 'Cascading style sheet',
+			'kindHTML'        : 'HTML document',
+			'kindJS'          : 'Javascript bronbestand',
+			'kindRTF'         : 'Rich Text Format',
+			'kindC'           : 'C bronbestand',
+			'kindCHeader'     : 'C header bronbestand',
+			'kindCPP'         : 'C++ bronbestand',
+			'kindCPPHeader'   : 'C++ header bronbestand',
+			'kindShell'       : 'Unix shell script',
+			'kindPython'      : 'Python bronbestand',
+			'kindJava'        : 'Java bronbestand',
+			'kindRuby'        : 'Ruby bronbestand',
+			'kindPerl'        : 'Perl bronbestand',
+			'kindSQL'         : 'SQL bronbestand',
+			'kindXML'         : 'XML document',
+			'kindAWK'         : 'AWK bronbestand',
+			'kindCSV'         : 'Komma gescheiden waardes',
+			'kindDOCBOOK'     : 'Docbook XML document',
+			'kindMarkdown'    : 'Markdown tekst', // added 20.7.2015
+			// images
+			'kindImage'       : 'Afbeelding',
+			'kindBMP'         : 'BMP afbeelding',
+			'kindJPEG'        : 'JPEG afbeelding',
+			'kindGIF'         : 'GIF afbeelding',
+			'kindPNG'         : 'PNG afbeelding',
+			'kindTIFF'        : 'TIFF afbeelding',
+			'kindTGA'         : 'TGA afbeelding',
+			'kindPSD'         : 'Adobe Photoshop afbeelding',
+			'kindXBITMAP'     : 'X bitmap afbeelding',
+			'kindPXM'         : 'Pixelmator afbeelding',
+			// media
+			'kindAudio'       : 'Audio media',
+			'kindAudioMPEG'   : 'MPEG audio',
+			'kindAudioMPEG4'  : 'MPEG-4 audio',
+			'kindAudioMIDI'   : 'MIDI audio',
+			'kindAudioOGG'    : 'Ogg Vorbis audio',
+			'kindAudioWAV'    : 'WAV audio',
+			'AudioPlaylist'   : 'MP3 playlist',
+			'kindVideo'       : 'Video media',
+			'kindVideoDV'     : 'DV video',
+			'kindVideoMPEG'   : 'MPEG video',
+			'kindVideoMPEG4'  : 'MPEG-4 video',
+			'kindVideoAVI'    : 'AVI video',
+			'kindVideoMOV'    : 'Quick Time video',
+			'kindVideoWM'     : 'Windows Media video',
+			'kindVideoFlash'  : 'Flash video',
+			'kindVideoMKV'    : 'Matroska video',
+			'kindVideoOGG'    : 'Ogg video'
+		}
+	};
+}));
+

+ 374 - 0
src/assets/js/i18n/elfinder.no.js

@@ -0,0 +1,374 @@
+/**
+ * Norwegian translation
+ * @author Stian Jacobsen <stian@promonorge.no>
+ * @version 2014-12-19
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.no = {
+		translator : 'Stian Jacobsen &lt;stian@promonorge.no&gt;',
+		language   : 'Norwegian Bokmål',
+		dateFormat : 'M d, Y h:i A', // Mar 13, 2012 05:27 PM
+		fancyDateFormat : '$1 h:i A', // will produce smth like: Today 12:25 PM
+		direction  : 'ltr',
+		messages   : {
+			
+			/********************************** errors **********************************/
+			'error'                : 'Feil',
+			'errUnknown'           : 'Ukjent feil.',
+			'errUnknownCmd'        : 'Ukjent kommando.',
+			'errJqui'              : 'Ugyldig jQuery UI konfigurasjon. Selectable, draggable og droppable komponentene må være inkludert.',
+			'errNode'              : 'elFinder påkrever at DOM Elementer kan opprettes.',
+			'errURL'               : 'Ugyldig elFinder konfigurasjon! URL-valget er ikke satt.',
+			'errAccess'            : 'Ingen adgang.',
+			'errConnect'           : 'Kunne ikke koble til.',
+			'errAbort'             : 'Tilkoblingen avbrutt.',
+			'errTimeout'           : 'Tilkoblingen tidsavbrudd.',
+			'errNotFound'          : 'Backend ble ikke funnet',
+			'errResponse'          : 'Ugyldig backend respons.',
+			'errConf'              : 'Ugyldig backend konfigurasjon.',
+			'errJSON'              : 'PHP JSON modul er ikke installert.',
+			'errNoVolumes'         : 'Lesbar volum er ikke tilgjennelig.',
+			'errCmdParams'         : 'Ugyldig parameter for kommando "$1".',
+			'errDataNotJSON'       : 'Innhold er ikke JSON.',
+			'errDataEmpty'         : 'Innholdet er tomt.',
+			'errCmdReq'            : 'Backend spørringen påkrever kommando.',
+			'errOpen'              : 'Kunne ikke åpne "$1".',
+			'errNotFolder'         : 'Objektet er ikke en mappe.',
+			'errNotFile'           : 'Objektet er ikke en fil.',
+			'errRead'              : 'Kunne ikke lese "$1".',
+			'errWrite'             : 'Kunne ikke skrive til "$1".',
+			'errPerm'              : 'Du har ikke rettigheter.',
+			'errLocked'            : '"$1" er låst og kan ikke flyttes, slettes eller endres',
+			'errExists'            : 'Filen "$1" finnes allerede.',
+			'errInvName'           : 'Ugyldig filnavn.',
+			'errFolderNotFound'    : 'Mappen finnes ikke.',
+			'errFileNotFound'      : 'Filen finnes ikke.',
+			'errTrgFolderNotFound' : 'Målmappen "$1" ble ikke funnet.',
+			'errPopup'             : 'Nettleseren din blokkerte et pop-up vindu. For å åpne filen må du aktivere pop-up i din nettlesers innstillinger.',
+			'errMkdir'             : 'Kunne ikke opprette mappen "$1".',
+			'errMkfile'            : 'Kunne ikke opprette filen "$1".',
+			'errRename'            : 'Kunne ikke gi nytt navn til "$1".',
+			'errCopyFrom'          : 'Kopiere filer fra "$1" er ikke tillatt.',
+			'errCopyTo'            : 'Kopiere filer til "$1" er ikke tillatt.',
+			'errUpload'            : 'Feil under opplasting.',
+			'errUploadFile'        : 'Kunne ikke laste opp "$1".',
+			'errUploadNoFiles'     : 'Ingen filer funnet til opplasting.',
+			'errUploadTotalSize'   : 'Innholdet overgår maksimum tillatt størrelse.',
+			'errUploadFileSize'    : 'Filen vergår maksimum tillatt størrelse.',
+			'errUploadMime'        : 'Filtypen ikke tillatt.',
+			'errUploadTransfer'    : '"$1" overførings feil.',
+			'errNotReplace'        : 'Object "$1" already exists at this location and can not be replaced by object with another type.',
+			'errReplace'           : 'Unable to replace "$1".',
+			'errSave'              : 'Kunne ikke lagre "$1".',
+			'errCopy'              : 'Kunne ikke kopiere "$1".',
+			'errMove'              : 'Kunne ikke flytte "$1".',
+			'errCopyInItself'      : 'Kunne ikke kopiere "$1" til seg selv.',
+			'errRm'                : 'Kunne ikke slette "$1".',
+			'errRmSrc'             : 'Unable remove source file(s).',
+			'errExtract'           : 'Kunne ikke pakke ut filer fra "$1".',
+			'errArchive'           : 'Kunne ikke opprette arkiv.',
+			'errArcType'           : 'akriv-typen er ikke støttet.',
+			'errNoArchive'         : 'Filen er ikke et arkiv eller et arkiv som ikke er støttet.',
+			'errCmdNoSupport'      : 'Backend støtter ikke denne kommandoen.',
+			'errReplByChild'       : 'The folder “$1” can’t be replaced by an item it contains.',
+			'errArcSymlinks'       : 'For security reason denied to unpack archives contains symlinks or files with not allowed names.', // edited 24.06.2012
+			'errArcMaxSize'        : 'Archive files exceeds maximum allowed size.',
+			'errResize'            : 'Unable to resize "$1".',
+			'errResizeDegree'      : 'Invalid rotate degree.',  // added 7.3.2013
+			'errResizeRotate'      : 'Unable to rotate image.',  // added 7.3.2013
+			'errResizeSize'        : 'Invalid image size.',  // added 7.3.2013
+			'errResizeNoChange'    : 'Image size not changed.',  // added 7.3.2013
+			'errUsupportType'      : 'Unsupported file type.',
+			'errNotUTF8Content'    : 'File "$1" is not in UTF-8 and cannot be edited.',  // added 9.11.2011
+			'errNetMount'          : 'Unable to mount "$1".', // added 17.04.2012
+			'errNetMountNoDriver'  : 'Unsupported protocol.',     // added 17.04.2012
+			'errNetMountFailed'    : 'Mount failed.',         // added 17.04.2012
+			'errNetMountHostReq'   : 'Host required.', // added 18.04.2012
+			'errSessionExpires'    : 'Your session has expired due to inactivity.',
+			'errCreatingTempDir'   : 'Unable to create temporary directory: "$1"',
+			'errFtpDownloadFile'   : 'Unable to download file from FTP: "$1"',
+			'errFtpUploadFile'     : 'Unable to upload file to FTP: "$1"',
+			'errFtpMkdir'          : 'Unable to create remote directory on FTP: "$1"',
+			'errArchiveExec'       : 'Error while archiving files: "$1"',
+			'errExtractExec'       : 'Error while extracting files: "$1"',
+			
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'Opprett arkiv',
+			'cmdback'      : 'Tilbake',
+			'cmdcopy'      : 'Kopier',
+			'cmdcut'       : 'Klipp ut',
+			'cmddownload'  : 'Last ned',
+			'cmdduplicate' : 'Dupliser',
+			'cmdedit'      : 'Rediger fil',
+			'cmdextract'   : 'Pakk ut filer fra arkiv',
+			'cmdforward'   : 'Frem',
+			'cmdgetfile'   : 'Velg filer',
+			'cmdhelp'      : 'Om',
+			'cmdhome'      : 'Hjem',
+			'cmdinfo'      : 'Vis info',
+			'cmdmkdir'     : 'Ny mappe',
+			'cmdmkfile'    : 'Ny tekst-fil',
+			'cmdopen'      : 'Åpne',
+			'cmdpaste'     : 'Lim inn',
+			'cmdquicklook' : 'Forhåndsvis',
+			'cmdreload'    : 'Last inn på nytt',
+			'cmdrename'    : 'Gi nytt navn',
+			'cmdrm'        : 'Slett',
+			'cmdsearch'    : 'Find filer',
+			'cmdup'        : 'Opp et nivå',
+			'cmdupload'    : 'Last opp filer',
+			'cmdview'      : 'Vis',
+			'cmdresize'    : 'Resize & Rotate',
+			'cmdsort'      : 'Sort',
+			'cmdnetmount'  : 'Mount network volume',
+			
+			/*********************************** buttons ***********************************/ 
+			'btnClose'  : 'Lukk',
+			'btnSave'   : 'Lagre',
+			'btnRm'     : 'Slett',
+			'btnApply'  : 'Apply',
+			'btnCancel' : 'Avbryt',
+			'btnNo'     : 'Nei',
+			'btnYes'    : 'Ja',
+			'btnMount'  : 'Mount',
+			
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'Åpne mappe',
+			'ntffile'     : 'Åpne fil',
+			'ntfreload'   : 'Last inn mappen på nytt',
+			'ntfmkdir'    : 'Oppretter mappe',
+			'ntfmkfile'   : 'Oppretter filer',
+			'ntfrm'       : 'Sletter filer',
+			'ntfcopy'     : 'Kopierer filer',
+			'ntfmove'     : 'Flytter filer',
+			'ntfprepare'  : 'Gjør klar til kopiering av filer',
+			'ntfrename'   : 'Gir nytt navn til filer',
+			'ntfupload'   : 'Laster opp filer',
+			'ntfdownload' : 'Laster ned filer',
+			'ntfsave'     : 'Lagrer filer',
+			'ntfarchive'  : 'Oppretter arkiv',
+			'ntfextract'  : 'Pakker ut filer fra arkiv',
+			'ntfsearch'   : 'Søker i filer',
+			'ntfresize'   : 'Resizing images',
+			'ntfsmth'     : 'Gjør noe... >_<',
+			'ntfloadimg'  : 'Loading image',
+			'ntfnetmount' : 'Mounting network volume', // added 18.04.2012
+			'ntfdim'      : 'Acquiring image dimension', // added 20.05.2013
+			
+			/************************************ dates **********************************/
+			'dateUnknown' : 'Ukjent',
+			'Today'       : 'I dag',
+			'Yesterday'   : 'I går',
+			'msJan'       : 'Jan',
+			'msFeb'       : 'Feb',
+			'msMar'       : 'Mar',
+			'msApr'       : 'Apr',
+			'msMay'       : 'Mai',
+			'msJun'       : 'Jun',
+			'msJul'       : 'Jul',
+			'msAug'       : 'Aug',
+			'msSep'       : 'Sep',
+			'msOct'       : 'Okt',
+			'msNov'       : 'Nov',
+			'msDec'       : 'Des',
+			'January'     : 'January',
+			'February'    : 'February',
+			'March'       : 'March',
+			'April'       : 'April',
+			'May'         : 'May',
+			'June'        : 'June',
+			'July'        : 'July',
+			'August'      : 'August',
+			'September'   : 'September',
+			'October'     : 'October',
+			'November'    : 'November',
+			'December'    : 'December',
+			'Sunday'      : 'Sunday',
+			'Monday'      : 'Monday',
+			'Tuesday'     : 'Tuesday',
+			'Wednesday'   : 'Wednesday',
+			'Thursday'    : 'Thursday',
+			'Friday'      : 'Friday',
+			'Saturday'    : 'Saturday',
+			'Sun'         : 'Sun', 
+			'Mon'         : 'Mon', 
+			'Tue'         : 'Tue', 
+			'Wed'         : 'Wed', 
+			'Thu'         : 'Thu', 
+			'Fri'         : 'Fri', 
+			'Sat'         : 'Sat',
+
+			/******************************** sort variants ********************************/
+			'sortname'          : 'by name', 
+			'sortkind'          : 'by kind', 
+			'sortsize'          : 'by size',
+			'sortdate'          : 'by date',
+			'sortFoldersFirst'  : 'Folders first',
+			
+			/********************************** messages **********************************/
+			'confirmReq'      : 'Bekreftelse nødvendig',
+			'confirmRm'       : 'Er du sikker på at du ønsker å slette filene?',
+			'confirmRepl'     : 'Erstatt fil?',
+			'apllyAll'        : 'Apply to all',
+			'name'            : 'Navn',
+			'size'            : 'Størrelse',
+			'perms'           : 'Rettigheter',
+			'modify'          : 'Endret',
+			'kind'            : 'Type',
+			'read'            : 'les',
+			'write'           : 'skriv',
+			'noaccess'        : 'ingen adgang',
+			'and'             : 'og',
+			'unknown'         : 'ukjent',
+			'selectall'       : 'Velg alle filene',
+			'selectfiles'     : 'Velg fil(er)',
+			'selectffile'     : 'Velg første fil',
+			'selectlfile'     : 'Velg siste fil',
+			'viewlist'        : 'Listevisning',
+			'viewicons'       : 'Ikoner',
+			'places'          : 'Områder',
+			'calc'            : 'Beregn', 
+			'path'            : 'Bane',
+			'aliasfor'        : 'Alias for',
+			'locked'          : 'Låst',
+			'dim'             : 'Størrelser',
+			'files'           : 'Filer',
+			'folders'         : 'Mapper',
+			'items'           : 'objekter',
+			'yes'             : 'ja',
+			'no'              : 'nei',
+			'link'            : 'Link',
+			'searcresult'     : 'Søkeresultater',  
+			'selected'        : 'valgte filer',
+			'about'           : 'Om',
+			'shortcuts'       : 'Snarveier',
+			'help'            : 'Hjelp',
+			'webfm'           : 'Web-filbehandler',
+			'ver'             : 'Versjon',
+			'protocolver'     : 'protokol versjon',
+			'homepage'        : 'Project home',
+			'docs'            : 'dokumentasjon',
+			'github'          : 'Fork us on Github',
+			'twitter'         : 'Follow us on twitter',
+			'facebook'        : 'Join us on facebook',
+			'team'            : 'Team',
+			'chiefdev'        : 'chief developer',
+			'developer'       : 'developer',
+			'contributor'     : 'contributor',
+			'maintainer'      : 'maintainer',
+			'translator'      : 'translator',
+			'icons'           : 'Ikoner',
+			'dontforget'      : 'and don\'t forget to bring a towel',
+			'shortcutsof'     : 'Snarveier avslått',
+			'dropFiles'       : 'Slipp filer her',
+			'or'              : 'eller',
+			'selectForUpload' : 'Velg filer til opplasting',
+			'moveFiles'       : 'Flytt filer',
+			'copyFiles'       : 'Kopier filer',
+			'rmFromPlaces'    : 'Remove from places',
+			'aspectRatio'     : 'Aspect ratio',
+			'scale'           : 'Scale',
+			'width'           : 'Width',
+			'height'          : 'Height',
+			'resize'          : 'Resize',
+			'crop'            : 'Crop',
+			'rotate'          : 'Rotate',
+			'rotate-cw'       : 'Rotate 90 degrees CW',
+			'rotate-ccw'      : 'Rotate 90 degrees CCW',
+			'degree'          : '°',
+			'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012
+			'protocol'            : 'Protocol', // added 18.04.2012
+			'host'                : 'Host', // added 18.04.2012
+			'port'                : 'Port', // added 18.04.2012
+			'user'                : 'User', // added 18.04.2012
+			'pass'                : 'Password', // added 18.04.2012
+			
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : 'Ukjent',
+			'kindFolder'      : 'Mappe',
+			'kindAlias'       : 'Snarvei',
+			'kindAliasBroken' : 'Ugyldig snarvei',
+			// applications
+			'kindApp'         : 'Programfil',
+			'kindPostscript'  : 'Postscript dokument',
+			'kindMsOffice'    : 'Microsoft Office dokument',
+			'kindMsWord'      : 'Microsoft Word dokument',
+			'kindMsExcel'     : 'Microsoft Excel dokument',
+			'kindMsPP'        : 'Microsoft Powerpoint presentation',
+			'kindOO'          : 'Open Office dokument',
+			'kindAppFlash'    : 'Flash',
+			'kindPDF'         : 'Portabelt dokument (PDF)',
+			'kindTorrent'     : 'Bittorrent file',
+			'kind7z'          : '7z arkiv',
+			'kindTAR'         : 'TAR arkiv',
+			'kindGZIP'        : 'GZIP arkiv',
+			'kindBZIP'        : 'BZIP arkiv',
+			'kindXZ'          : 'XZ arkiv',
+			'kindZIP'         : 'ZIP arkiv',
+			'kindRAR'         : 'RAR ar',
+			'kindJAR'         : 'Java JAR file',
+			'kindTTF'         : 'True Type font',
+			'kindOTF'         : 'Open Type font',
+			'kindRPM'         : 'RPM package',
+			// texts
+			'kindText'        : 'Tekst dokument',
+			'kindTextPlain'   : 'Plain text',
+			'kindPHP'         : 'PHP kilde',
+			'kindCSS'         : 'Cascading style sheet',
+			'kindHTML'        : 'HTML dokument',
+			'kindJS'          : 'Javascript',
+			'kindRTF'         : 'Rikt Tekst Format',
+			'kindC'           : 'C kilde',
+			'kindCHeader'     : 'C header kilde',
+			'kindCPP'         : 'C++ kilde',
+			'kindCPPHeader'   : 'C++ header kilde',
+			'kindShell'       : 'Unix shell script',
+			'kindPython'      : 'Python kilde',
+			'kindJava'        : 'Java kilde',
+			'kindRuby'        : 'Ruby kilde',
+			'kindPerl'        : 'Perl script',
+			'kindSQL'         : 'SQL skilde',
+			'kindXML'         : 'XML dokument',
+			'kindAWK'         : 'AWK kilde',
+			'kindCSV'         : 'Comma separated values',
+			'kindDOCBOOK'     : 'Docbook XML dokument',
+			// Images
+			'kindImage'       : 'Bilde',
+			'kindBMP'         : 'BMP bilde',
+			'kindJPEG'        : 'JPEG bilde',
+			'kindGIF'         : 'GIF bilde',
+			'kindPNG'         : 'PNG bilde',
+			'kindTIFF'        : 'TIFF bilde',
+			'kindTGA'         : 'TGA bilde',
+			'kindPSD'         : 'Adobe Photoshop bilde',
+			'kindXBITMAP'     : 'X bitmap bilde',
+			'kindPXM'         : 'Pixelmator bilde',
+			// media
+			'kindAudio'       : 'Audio media',
+			'kindAudioMPEG'   : 'MPEG audio',
+			'kindAudioMPEG4'  : 'MPEG-4 audio',
+			'kindAudioMIDI'   : 'MIDI audio',
+			'kindAudioOGG'    : 'Ogg Vorbis audio',
+			'kindAudioWAV'    : 'WAV audio',
+			'AudioPlaylist'   : 'MP3 spilleliste',
+			'kindVideo'       : 'Video media',
+			'kindVideoDV'     : 'DV film',
+			'kindVideoMPEG'   : 'MPEG film',
+			'kindVideoMPEG4'  : 'MPEG-4 film',
+			'kindVideoAVI'    : 'AVI film',
+			'kindVideoMOV'    : 'Quick Time film',
+			'kindVideoWM'     : 'Windows Media film',
+			'kindVideoFlash'  : 'Flash film',
+			'kindVideoMKV'    : 'Matroska film',
+			'kindVideoOGG'    : 'Ogg film'
+		}
+	};
+}));

+ 517 - 0
src/assets/js/i18n/elfinder.pl.js

@@ -0,0 +1,517 @@
+/**
+ * Polish translation
+ * @author Marcin Mikołajczyk <marcin@pjwstk.edu.pl>
+ * @author Wojciech Jabłoński <www.jablonski@gmail.com>
+ * @author Bogusław Zięba <bobi@poczta.fm>
+ * @version 2.1.28 2017-08-16
+*/
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.pl = {
+		translator : 'Marcin Mikołajczyk &lt;marcin@pjwstk.edu.pl&gt;, Wojciech Jabłoński &lt;www.jablonski@gmail.com&gt;, Bogusław Zięba &lt;bobi@poczta.fm&gt;',
+		language   : 'Polski',
+		direction  : 'ltr',
+		dateFormat : 'd.m.Y H:i', // Mar 13, 2012 05:27 PM
+		fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM
+		nonameDateFormat : 'ymd-His', // to apply if upload file is noname: 120513172700
+		messages   : {
+
+			/********************************** errors **********************************/
+			'error'                : 'Błąd',
+			'errUnknown'           : 'Nieznany błąd.',
+			'errUnknownCmd'        : 'Nieznane polecenie.',
+			'errJqui'              : 'Niepoprawna konfiguracja jQuery UI. Muszą być zawarte komponenty selectable, draggable i droppable.',
+			'errNode'              : 'elFinder wymaga utworzenia obiektu DOM.',
+			'errURL'               : 'Niepoprawna konfiguracja elFinder! Pole URL nie jest ustawione.',
+			'errAccess'            : 'Dostęp zabroniony.',
+			'errConnect'           : 'Błąd połączenia z zapleczem.',
+			'errAbort'             : 'Połączenie zostało przerwane.',
+			'errTimeout'           : 'Upłynął czas oczekiwania na połączenie.',
+			'errNotFound'          : 'Zaplecze nie zostało znalezione.',
+			'errResponse'          : 'Nieprawidłowa odpowiedź zaplecza.',
+			'errConf'              : 'Niepoprawna konfiguracja zaplecza.',
+			'errJSON'              : 'Moduł PHP JSON nie jest zainstalowany.',
+			'errNoVolumes'         : 'Brak możliwości odczytu katalogów.',
+			'errCmdParams'         : 'Nieprawidłowe parametry dla polecenia "$1".',
+			'errDataNotJSON'       : 'Dane nie są JSON.',
+			'errDataEmpty'         : 'Dane są puste.',
+			'errCmdReq'            : 'Zaplecze wymaga podania nazwy polecenia.',
+			'errOpen'              : 'Nie można otworzyć "$1".',
+			'errNotFolder'         : 'Obiekt nie jest katalogiem.',
+			'errNotFile'           : 'Obiekt nie jest plikiem.',
+			'errRead'              : 'Nie można odczytać "$1".',
+			'errWrite'             : 'Nie można zapisać do "$1".',
+			'errPerm'              : 'Brak uprawnień.',
+			'errLocked'            : '"$1" jest zablokowany i nie może zostać zmieniony, przeniesiony lub usunięty.',
+			'errExists'            : 'Plik "$1" już istnieje.',
+			'errInvName'           : 'Nieprawidłowa nazwa pliku.',
+			'errInvDirname'        : 'Nieprawidłowa nazwa folderu.',  // from v2.1.24 added 12.4.2017
+			'errFolderNotFound'    : 'Nie znaleziono folderu.',
+			'errFileNotFound'      : 'Plik nie został znaleziony.',
+			'errTrgFolderNotFound' : 'Katalog docelowy "$1" nie został znaleziony.',
+			'errPopup'             : 'Przeglądarka zablokowała otwarcie nowego okna. Aby otworzyć plik, zmień ustawienia przeglądarki.',
+			'errMkdir'             : 'Nie można utworzyć katalogu "$1".',
+			'errMkfile'            : 'Nie można utworzyć pliku "$1".',
+			'errRename'            : 'Nie można zmienić nazwy "$1".',
+			'errCopyFrom'          : 'Kopiowanie z katalogu "$1" nie jest możliwe.',
+			'errCopyTo'            : 'Kopiowanie do katalogu "$1" nie jest możliwe.',
+			'errMkOutLink'         : 'Nie można utworzyć link do zewnętrznego katalogu głównego.', // from v2.1 added 03.10.2015
+			'errUpload'            : 'Błąd wysyłania.',  // old name - errUploadCommon
+			'errUploadFile'        : 'Nie można wysłać "$1".', // old name - errUpload
+			'errUploadNoFiles'     : 'Nie znaleziono plików do wysłania.',
+			'errUploadTotalSize'   : 'Przekroczono dopuszczalny rozmiar wysyłanych plików.', // old name - errMaxSize
+			'errUploadFileSize'    : 'Plik przekracza dopuszczalny rozmiar.', //  old name - errFileMaxSize
+			'errUploadMime'        : 'Niedozwolony typ pliku.',
+			'errUploadTransfer'    : 'Błąd przesyłania "$1".',
+			'errUploadTemp'        : 'Nie można wykonać tymczasowego pliku do przesłania.', // from v2.1 added 26.09.2015
+			'errNotReplace'        : 'Obiekt "$1" istnieje już w tej lokalizacji i nie może być zastąpiony przez inny typ obiektu.', // new
+			'errReplace'           : 'Nie można zastąpić "$1".',
+			'errSave'              : 'Nie można zapisać "$1".',
+			'errCopy'              : 'Nie można skopiować "$1".',
+			'errMove'              : 'Nie można przenieść "$1".',
+			'errCopyInItself'      : 'Nie można skopiować "$1" w miejsce jego samego.',
+			'errRm'                : 'Nie można usunąć "$1".',
+			'errTrash'             : 'Nie można do kosza.', // from v2.1.24 added 30.4.2017
+			'errRmSrc'             : 'Nie należy usunąć pliku(s) źródłowy.',
+			'errExtract'           : 'Nie można wypakować plików z "$1".',
+			'errArchive'           : 'Nie można utworzyć archiwum.',
+			'errArcType'           : 'Nieobsługiwany typ archiwum.',
+			'errNoArchive'         : 'Plik nie jest prawidłowym typem archiwum.',
+			'errCmdNoSupport'      : 'Zaplecze nie obsługuje tego polecenia.',
+			'errReplByChild'       : 'Nie można zastąpić katalogu "$1" elementem w nim zawartym',
+			'errArcSymlinks'       : 'Ze względów bezpieczeństwa rozpakowywanie archiwów zawierających dowiązania symboliczne (symlinks) jest niedozwolone.', // edited 24.06.2012
+			'errArcMaxSize'        : 'Archiwum przekracza maksymalny dopuszczalny rozmiar.',
+			'errResize'            : 'Nie można zmienić rozmiaru "$1".',
+			'errResizeDegree'      : 'Nieprawidłowy stopień obracania.',  // added 7.3.2013
+			'errResizeRotate'      : 'Nie można obrócić obrazu.',  // added 7.3.2013
+			'errResizeSize'        : 'Nieprawidłowy rozmiar obrazu.',  // added 7.3.2013
+			'errResizeNoChange'    : 'Nie zmieniono rozmiaru obrazu.',  // added 7.3.2013
+			'errUsupportType'      : 'Nieobsługiwany typ pliku.',
+			'errNotUTF8Content'    : 'Plik "$1" nie jest UTF-8 i nie może być edytowany.',  // added 9.11.2011
+			'errNetMount'          : 'Nie można zamontować "$1".', // added 17.04.2012
+			'errNetMountNoDriver'  : 'Nieobsługiwany protokół.',     // added 17.04.2012
+			'errNetMountFailed'    : 'Montowanie nie powiodło się.',         // added 17.04.2012
+			'errNetMountHostReq'   : 'Host wymagany.', // added 18.04.2012
+			'errSessionExpires'    : 'Twoja sesja wygasła z powodu nieaktywności.',
+			'errCreatingTempDir'   : 'Nie można utworzyć katalogu tymczasowego: "$1"',
+			'errFtpDownloadFile'   : 'Nie można pobrać pliku z FTP: "$1"',
+			'errFtpUploadFile'     : 'Nie można przesłać pliku na serwer FTP: "$1"',
+			'errFtpMkdir'          : 'Nie można utworzyć zdalnego katalogu FTP: "$1"',
+			'errArchiveExec'       : 'Błąd podczas archiwizacji plików: "$1"',
+			'errExtractExec'       : 'Błąd podczas wyodrębniania plików: "$1"',
+			'errNetUnMount'        : 'Nie można odmontować', // from v2.1 added 30.04.2012
+			'errConvUTF8'          : 'Nie wymienialne na UTF-8', // from v2.1 added 08.04.2014
+			'errFolderUpload'      : 'Wypróbuj Google Chrome, jeśli chcesz przesłać katalog.', // from v2.1 added 26.6.2015
+			'errSearchTimeout'     : 'Upłynął limit czasu podczas wyszukiwania "$1". Wynik wyszukiwania jest częściowy.', // from v2.1 added 12.1.2016
+			'errReauthRequire'     : 'Wymagana jest ponowna autoryzacja.', // from v2.1.10 added 24.3.2016
+			'errMaxTargets'        : 'Maks. liczba elementów do wyboru to $1.', // from v2.1.17 added 17.10.2016
+			'errRestore'           : 'Nie można przywrócić z kosza. Nie można zidentyfikować przywrócić docelowego.', // from v2.1.24 added 3.5.2017
+			'errEditorNotFound'    : 'Nie znaleziono edytora tego typu pliku.', // from v2.1.25 added 23.5.2017
+			'errServerError'       : 'Wystąpił błąd po stronie serwera .', // from v2.1.25 added 16.6.2017
+			'errEmpty'             : 'Nie można do pustego folderu "$1".', // from v2.1.25 added 22.6.2017
+
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'Utwórz archiwum',
+			'cmdback'      : 'Wstecz',
+			'cmdcopy'      : 'Kopiuj',
+			'cmdcut'       : 'Wytnij',
+			'cmddownload'  : 'Pobierz',
+			'cmdduplicate' : 'Duplikuj',
+			'cmdedit'      : 'Edytuj plik',
+			'cmdextract'   : 'Wypakuj pliki z archiwum',
+			'cmdforward'   : 'Dalej',
+			'cmdgetfile'   : 'Wybierz pliki',
+			'cmdhelp'      : 'Informacje o programie',
+			'cmdhome'      : 'Główny',
+			'cmdinfo'      : 'Właściwości',
+			'cmdmkdir'     : 'Nowy katalog',
+			'cmdmkdirin'   : 'Do nowego katalogu', // from v2.1.7 added 19.2.2016
+			'cmdmkfile'    : 'Nowy plik tekstowy',
+			'cmdopen'      : 'Otwórz',
+			'cmdpaste'     : 'Wklej',
+			'cmdquicklook' : 'Podgląd',
+			'cmdreload'    : 'Odśwież',
+			'cmdrename'    : 'Zmień nazwę',
+			'cmdrm'        : 'Usuń',
+			'cmdtrash'     : 'Do kosza', //from v2.1.24 added 29.4.2017
+			'cmdrestore'   : 'Przywróć', //from v2.1.24 added 3.5.2017
+			'cmdsearch'    : 'Wyszukaj pliki',
+			'cmdup'        : 'Przejdź do katalogu nadrzędnego',
+			'cmdupload'    : 'Wyślij pliki',
+			'cmdview'      : 'Widok',
+			'cmdresize'    : 'Zmień rozmiar i Obróć',
+			'cmdsort'      : 'Sortuj',
+			'cmdnetmount'  : 'Zamontuj wolumin sieciowy', // added 18.04.2012
+			'cmdnetunmount': 'Odmontuj', // from v2.1 added 30.04.2012
+			'cmdplaces'    : 'Do Miejsc', // added 28.12.2014
+			'cmdchmod'     : 'Zmiana trybu', // from v2.1 added 20.6.2015
+			'cmdopendir'   : 'Otwórz katalog', // from v2.1 added 13.1.2016
+			'cmdcolwidth'  : 'Resetuj szerokość kolumny', // from v2.1.13 added 12.06.2016
+			'cmdfullscreen': 'Pełny ekran', // from v2.1.15 added 03.08.2016
+			'cmdmove'      : 'Przenieś', // from v2.1.15 added 21.08.2016
+			'cmdempty'     : 'Opróżnij folder', // from v2.1.25 added 22.06.2017
+			'cmdundo'      : 'Cofnij', // from v2.1.27 added 31.07.2017
+			'cmdredo'      : 'Ponów', // from v2.1.27 added 31.07.2017
+			'cmdpreference': 'Preferencje', // from v2.1.27 added 03.08.2017
+			'cmdselectall' : 'Zaznacz wszystko', // from v2.1.28 added 15.08.2017
+			'cmdselectnone': 'Odznacz wszystko', // from v2.1.28 added 15.08.2017
+			'cmdselectinvert': 'Odwróć wybór', // from v2.1.28 added 15.08.2017
+			/*********************************** buttons ***********************************/
+			'btnClose'  : 'Zamknij',
+			'btnSave'   : 'Zapisz',
+			'btnRm'     : 'Usuń',
+			'btnApply'  : 'Zastosuj',
+			'btnCancel' : 'Anuluj',
+			'btnNo'     : 'Nie',
+			'btnYes'    : 'Tak',
+			'btnMount'  : 'Montuj',  // added 18.04.2012
+			'btnApprove': 'Idź do $1 & zatwierdź', // from v2.1 added 26.04.2012
+			'btnUnmount': 'Odmontuj', // from v2.1 added 30.04.2012
+			'btnConv'   : 'Konwertuj', // from v2.1 added 08.04.2014
+			'btnCwd'    : 'Tutaj',      // from v2.1 added 22.5.2015
+			'btnVolume' : 'Wolumin',    // from v2.1 added 22.5.2015
+			'btnAll'    : 'Wszystko',       // from v2.1 added 22.5.2015
+			'btnMime'   : 'Typ MIME', // from v2.1 added 22.5.2015
+			'btnFileName':'Nazwa pliku',  // from v2.1 added 22.5.2015
+			'btnSaveClose': 'Zapisz & Zamknij', // from v2.1 added 12.6.2015
+			'btnBackup' : 'Kopia zapasowa', // fromv2.1 added 28.11.2015
+			'btnRename'    : 'Zmień nazwę',      // from v2.1.24 added 6.4.2017
+			'btnRenameAll' : 'Zmień nazwę(Wszystkie)', // from v2.1.24 added 6.4.2017
+			'btnPrevious' : 'Poprz ($1/$2)', // from v2.1.24 added 11.5.2017
+			'btnNext'     : 'Nast ($1/$2)', // from v2.1.24 added 11.5.2017
+			'btnSaveAs'   : 'Zapisz Jako', // from v2.1.25 added 24.5.2017
+
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'Otwieranie katalogu',
+			'ntffile'     : 'Otwórz plik',
+			'ntfreload'   : 'Odśwież zawartość katalogu',
+			'ntfmkdir'    : 'Tworzenie katalogu',
+			'ntfmkfile'   : 'Tworzenie plików',
+			'ntfrm'       : 'Usuwanie plików',
+			'ntfcopy'     : 'Kopiowanie plików',
+			'ntfmove'     : 'Przenoszenie plików',
+			'ntfprepare'  : 'Przygotowanie do kopiowania plików',
+			'ntfrename'   : 'Zmiana nazw plików',
+			'ntfupload'   : 'Wysyłanie plików',
+			'ntfdownload' : 'Pobieranie plików',
+			'ntfsave'     : 'Zapisywanie plików',
+			'ntfarchive'  : 'Tworzenie archiwum',
+			'ntfextract'  : 'Wypakowywanie plików z archiwum',
+			'ntfsearch'   : 'Wyszukiwanie plików',
+			'ntfresize'   : 'Zmiana rozmiaru obrazów',
+			'ntfsmth'     : 'Robienie czegoś >_<',
+			'ntfloadimg'  : 'Ładowanie obrazu',
+			'ntfnetmount' : 'Montaż woluminu sieciowego', // added 18.04.2012
+			'ntfnetunmount': 'Odłączanie woluminu sieciowego', // from v2.1 added 30.04.2012
+			'ntfdim'      : 'Pozyskiwanie wymiaru obrazu', // added 20.05.2013
+			'ntfreaddir'  : 'Odczytywanie informacji katalogu', // from v2.1 added 01.07.2013
+			'ntfurl'      : 'Pobieranie URL linku', // from v2.1 added 11.03.2014
+			'ntfchmod'    : 'Zmiana trybu pliku', // from v2.1 added 20.6.2015
+			'ntfpreupload': 'Weryfikacja nazwy przesłanego pliku', // from v2.1 added 31.11.2015
+			'ntfzipdl'    : 'Tworzenie pliku do pobrania', // from v2.1.7 added 23.1.2016
+			'ntfparents'  : 'Uzyskiwanie informacji o ścieżce', // from v2.1.17 added 2.11.2016
+			'ntfchunkmerge': 'Przetwarzanie przesłanego pliku', // from v2.1.17 added 2.11.2016
+			'ntftrash'    : 'Wykonuje wrzucanie do kosza', // from v2.1.24 added 2.5.2017
+			'ntfrestore'  : 'Wykonuje przywracanie z kosza', // from v2.1.24 added 3.5.2017
+			'ntfchkdir'   : 'Sprawdzanie folderu docelowego', // from v2.1.24 added 3.5.2017
+			'ntfundo'     : 'Cofanie poprzedniej operacji', // from v2.1.27 added 31.07.2017
+			'ntfredo'     : 'Ponownie poprzednio cofnięte', // from v2.1.27 added 31.07.2017
+
+			/*********************************** volumes *********************************/
+			'volume_Trash' : 'Śmieci', //from v2.1.24 added 29.4.2017
+
+			/************************************ dates **********************************/
+			'dateUnknown' : 'nieznana',
+			'Today'       : 'Dzisiaj',
+			'Yesterday'   : 'Wczoraj',
+			'msJan'       : 'Sty',
+			'msFeb'       : 'Lut',
+			'msMar'       : 'Mar',
+			'msApr'       : 'Kwi',
+			'msMay'       : 'Maj',
+			'msJun'       : 'Cze',
+			'msJul'       : 'Lip',
+			'msAug'       : 'Sie',
+			'msSep'       : 'Wrz',
+			'msOct'       : 'Paź',
+			'msNov'       : 'Lis',
+			'msDec'       : 'Gru',
+			'January'     : 'Styczeń',
+			'February'    : 'Luty',
+			'March'       : 'Marzec',
+			'April'       : 'Kwiecień',
+			'May'         : 'Maj',
+			'June'        : 'Czerwiec',
+			'July'        : 'Lipiec',
+			'August'      : 'Sierpień',
+			'September'   : 'Wrzesień',
+			'October'     : 'Październik',
+			'November'    : 'Listopad',
+			'December'    : 'Grudzień',
+			'Sunday'      : 'Niedziela',
+			'Monday'      : 'Poniedziałek',
+			'Tuesday'     : 'Wtorek',
+			'Wednesday'   : 'Środa',
+			'Thursday'    : 'Czwartek',
+			'Friday'      : 'Piątek',
+			'Saturday'    : 'Sobota',
+			'Sun'         : 'Nie',
+			'Mon'         : 'Pon',
+			'Tue'         : 'Wto',
+			'Wed'         : 'Śro',
+			'Thu'         : 'Czw',
+			'Fri'         : 'Pią',
+			'Sat'         : 'Sob',
+
+			/******************************** sort variants ********************************/
+			'sortname'          : 'w/g nazwy',
+			'sortkind'          : 'w/g typu',
+			'sortsize'          : 'w/g rozmiaru',
+			'sortdate'          : 'w/g daty',
+			'sortFoldersFirst'  : 'katalogi pierwsze',
+			'sortperm'          : 'wg/nazwy', // from v2.1.13 added 13.06.2016
+			'sortmode'          : 'wg/trybu',       // from v2.1.13 added 13.06.2016
+			'sortowner'         : 'wg/właściciela',      // from v2.1.13 added 13.06.2016
+			'sortgroup'         : 'wg/grup',      // from v2.1.13 added 13.06.2016
+			'sortAlsoTreeview'  : 'Również drzewa katalogów',  // from v2.1.15 added 01.08.2016
+
+			/********************************** new items **********************************/
+			'untitled file.txt' : 'NowyPlik.txt', // added 10.11.2015
+			'untitled folder'   : 'NowyFolder',   // added 10.11.2015
+			'Archive'           : 'NoweArchiwum',  // from v2.1 added 10.11.2015
+
+			/********************************** messages **********************************/
+			'confirmReq'      : 'Wymagane potwierdzenie',
+			'confirmRm'       : 'Czy na pewno chcesz usunąć pliki?<br/>Tej operacji nie można cofnąć!',
+			'confirmRepl'     : 'Zastąpić stary plik nowym?',
+			'confirmRest'     : 'Zamienić istniejący element na pozycję w koszu?', // fromv2.1.24 added 5.5.2017
+			'confirmConvUTF8' : 'Nie w UTF-8<br/>Konwertować na UTF-8?<br/>Zawartość stanie się  UTF-8 poprzez zapisanie po konwersji.', // from v2.1 added 08.04.2014
+			'confirmNonUTF8'  : 'Nie można wykryć kodowania tego pliku. Musi być tymczasowo przekształcony do UTF-8. <br/> Proszę wybrać kodowanie znaków tego pliku.', // from v2.1.19 added 28.11.2016
+			'confirmNotSave'  : 'Został zmodyfikowany.<br/>Utracisz pracę, jeśli nie zapiszesz zmian.', // from v2.1 added 15.7.2015
+			'confirmTrash'    : 'Czy na pewno chcesz przenieść elementy do kosza?', //from v2.1.24 added 29.4.2017
+			'apllyAll'        : 'Zastosuj do wszystkich',
+			'name'            : 'Nazwa',
+			'size'            : 'Rozmiar',
+			'perms'           : 'Uprawnienia',
+			'modify'          : 'Zmodyfikowany',
+			'kind'            : 'Typ',
+			'read'            : 'odczyt',
+			'write'           : 'zapis',
+			'noaccess'        : 'brak dostępu',
+			'and'             : 'i',
+			'unknown'         : 'nieznany',
+			'selectall'       : 'Zaznacz wszystkie pliki',
+			'selectfiles'     : 'Zaznacz plik(i)',
+			'selectffile'     : 'Zaznacz pierwszy plik',
+			'selectlfile'     : 'Zaznacz ostatni plik',
+			'viewlist'        : 'Widok listy',
+			'viewicons'       : 'Widok ikon',
+			'places'          : 'Ulubione',
+			'calc'            : 'Obliczanie',
+			'path'            : 'Ścieżka',
+			'aliasfor'        : 'Alias do',
+			'locked'          : 'Zablokowany',
+			'dim'             : 'Wymiary',
+			'files'           : 'Plik(ów)',
+			'folders'         : 'Katalogi',
+			'items'           : 'Element(ów)',
+			'yes'             : 'tak',
+			'no'              : 'nie',
+			'link'            : 'Odnośnik',
+			'searcresult'     : 'Wyniki wyszukiwania',
+			'selected'        : 'zaznaczonych obiektów',
+			'about'           : 'O programie',
+			'shortcuts'       : 'Skróty klawiaturowe',
+			'help'            : 'Pomoc',
+			'webfm'           : 'Menedżer plików sieciowych',
+			'ver'             : 'Wersja',
+			'protocolver'     : 'wersja protokołu',
+			'homepage'        : 'Strona projektu',
+			'docs'            : 'Dokumentacja',
+			'github'          : 'Obserwuj rozwój projektu na Github',
+			'twitter'         : 'Śledź nas na Twitterze',
+			'facebook'        : 'Dołącz do nas na Facebooku',
+			'team'            : 'Zespół',
+			'chiefdev'        : 'główny programista',
+			'developer'       : 'programista',
+			'contributor'     : 'współautor',
+			'maintainer'      : 'koordynator',
+			'translator'      : 'tłumacz',
+			'icons'           : 'Ikony',
+			'dontforget'      : 'i nie zapomnij zabrać ręcznika',
+			'shortcutsof'     : 'Skróty klawiaturowe są wyłączone',
+			'dropFiles'       : 'Upuść pliki tutaj',
+			'or'              : 'lub',
+			'selectForUpload' : 'Wybierz pliki',
+			'moveFiles'       : 'Przenieś pliki',
+			'copyFiles'       : 'Kopiuj pliki',
+			'restoreFiles'    : 'Przywróć elementy', // from v2.1.24 added 5.5.2017
+			'rmFromPlaces'    : 'Usuń z miejsc',
+			'aspectRatio'     : 'Zachowaj proporcje',
+			'scale'           : 'Skala',
+			'width'           : 'Szerokość',
+			'height'          : 'Wysokość',
+			'resize'          : 'Zmień rozmiar',
+			'crop'            : 'Przytnij',
+			'rotate'          : 'Obróć',
+			'rotate-cw'       : 'Obróć 90° w lewo',
+			'rotate-ccw'      : 'Obróć 90° w prawo',
+			'degree'          : '°',
+			'netMountDialogTitle' : 'Montaż woluminu sieciowego', // added 18.04.2012
+			'protocol'            : 'Protokół', // added 18.04.2012
+			'host'                : 'Host', // added 18.04.2012
+			'port'                : 'Port', // added 18.04.2012
+			'user'                : 'Użytkownik', // added 18.04.2012
+			'pass'                : 'Hasło', // added 18.04.2012
+			'confirmUnmount'      : 'Czy chcesz odmontować $1?',  // from v2.1 added 30.04.2012
+			'dropFilesBrowser': 'Upuść lub Wklej pliki z przeglądarki', // from v2.1 added 30.05.2012
+			'dropPasteFiles'  : 'Upuść lub Wklej tutaj pliki i adresy URL', // from v2.1 added 07.04.2014
+			'encoding'        : 'Kodowanie', // from v2.1 added 19.12.2014
+			'locale'          : 'Lokalne',   // from v2.1 added 19.12.2014
+			'searchTarget'    : 'Docelowo: $1',                // from v2.1 added 22.5.2015
+			'searchMime'      : 'Wyszukiwanie poprzez wpisanie typu MIME', // from v2.1 added 22.5.2015
+			'owner'           : 'Właściciel', // from v2.1 added 20.6.2015
+			'group'           : 'Grupa', // from v2.1 added 20.6.2015
+			'other'           : 'Inne', // from v2.1 added 20.6.2015
+			'execute'         : 'Wykonaj', // from v2.1 added 20.6.2015
+			'perm'            : 'Uprawnienia', // from v2.1 added 20.6.2015
+			'mode'            : 'Tryb', // from v2.1 added 20.6.2015
+			'emptyFolder'     : 'Katalog jest pusty', // from v2.1.6 added 30.12.2015
+			'emptyFolderDrop' : 'Katalog jest pusty\\Upuść aby dodać pozycje', // from v2.1.6 added 30.12.2015
+			'emptyFolderLTap' : 'Katalog jest pusty\\Dotknij dłużej aby dodać pozycje', // from v2.1.6 added 30.12.2015
+			'quality'         : 'Jakość', // from v2.1.6 added 5.1.2016
+			'autoSync'        : 'Auto synchronizacja',  // from v2.1.6 added 10.1.2016
+			'moveUp'          : 'Przenieś w górę',  // from v2.1.6 added 18.1.2016
+			'getLink'         : 'Pobierz URL linku', // from v2.1.7 added 9.2.2016
+			'selectedItems'   : 'Wybrane pozycje ($1)', // from v2.1.7 added 2.19.2016
+			'folderId'        : 'ID Katalogu', // from v2.1.10 added 3.25.2016
+			'offlineAccess'   : 'Zezwól na dostęp offline', // from v2.1.10 added 3.25.2016
+			'reAuth'          : 'Aby ponownie uwierzytelnić', // from v2.1.10 added 3.25.2016
+			'nowLoading'      : 'Teraz ładuję...', // from v2.1.12 added 4.26.2016
+			'openMulti'       : 'Otwieranie wielu plików', // from v2.1.12 added 5.14.2016
+			'openMultiConfirm': 'Próbujesz otworzyć $1 plików. Czy na pewno chcesz, aby otworzyć w przeglądarce?', // from v2.1.12 added 5.14.2016
+			'emptySearch'     : 'Wynik wyszukiwania jest pusty', // from v2.1.12 added 5.16.2016
+			'editingFile'     : 'Edytujesz plik.', // from v2.1.13 added 6.3.2016
+			'hasSelected'     : 'Masz wybranych $1 pozycji.', // from v2.1.13 added 6.3.2016
+			'hasClipboard'    : 'Masz $1 pozycji w schowku.', // from v2.1.13 added 6.3.2016
+			'incSearchOnly'   : 'Wyszukiwanie przyrostowe jest wyłącznie z bieżącego widoku.', // from v2.1.13 added 6.30.2016
+			'reinstate'       : 'Przywracanie', // from v2.1.15 added 3.8.2016
+			'complete'        : '$1 zakończone', // from v2.1.15 added 21.8.2016
+			'contextmenu'     : 'Menu kontekstowe', // from v2.1.15 added 9.9.2016
+			'pageTurning'     : 'Obracanie strony', // from v2.1.15 added 10.9.2016
+			'volumeRoots'     : 'Wolumin główny', // from v2.1.16 added 16.9.2016
+			'reset'           : 'Resetuj', // from v2.1.16 added 1.10.2016
+			'bgcolor'         : 'Kolor tła', // from v2.1.16 added 1.10.2016
+			'colorPicker'     : 'Wybierania kolorów', // from v2.1.16 added 1.10.2016
+			'8pxgrid'         : '8px Kratka', // from v2.1.16 added 4.10.2016
+			'enabled'         : 'Włączone', // from v2.1.16 added 4.10.2016
+			'disabled'        : 'Wyłączone', // from v2.1.16 added 4.10.2016
+			'emptyIncSearch'  : 'Wyniki wyszukiwania są puste w bieżącym widoku.\\AWciśnij [Enter] aby poszerzyć zakres wyszukiwania.', // from v2.1.16 added 5.10.2016
+			'emptyLetSearch'  : 'Wyszukiwanie pierwszej litery brak wyników w bieżącym widoku.', // from v2.1.23 added 24.3.2017
+			'textLabel'       : 'Etykieta tekstowa', // from v2.1.17 added 13.10.2016
+			'minsLeft'        : '$1 min pozostało', // from v2.1.17 added 13.11.2016
+			'openAsEncoding'  : 'Otwórz ponownie z wybranym kodowaniem', // from v2.1.19 added 2.12.2016
+			'saveAsEncoding'  : 'Zapisz z wybranym kodowaniem', // from v2.1.19 added 2.12.2016
+			'selectFolder'    : 'Wybierz katalog', // from v2.1.20 added 13.12.2016
+			'firstLetterSearch': 'Wyszukiwanie pierwszej litery', // from v2.1.23 added 24.3.2017
+			'presets'         : 'Wstępnie ustalone', // from v2.1.25 added 26.5.2017
+			'tooManyToTrash'  : 'To zbyt wiele rzeczy, więc nie mogą być w koszu.', // from v2.1.25 added 9.6.2017
+			'TextArea'        : 'TextArea', // from v2.1.25 added 14.6.2017
+			'folderToEmpty'   : 'Opróżnij folder "$1".', // from v2.1.25 added 22.6.2017
+			'filderIsEmpty'   : 'Brak elementów w folderze "$1".', // from v2.1.25 added 22.6.2017
+			'preference'      : 'Preferencje', // from v2.1.26 added 28.6.2017
+			'language'        : 'Ustawienie języka', // from v2.1.26 added 28.6.2017
+			'clearBrowserData': 'Zainicjuj ustawienia zapisane w tej przeglądarce', // from v2.1.26 added 28.6.2017
+			'toolbarPref'     : 'Ustawienia paska narzędzi', // from v2.1.27 added 2.8.2017
+
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : 'Nieznany',
+			'kindRoot'        : 'Główny Wolumin', // from v2.1.16 added 16.10.2016
+			'kindFolder'      : 'Katalog',
+			'kindAlias'       : 'Alias',
+			'kindAliasBroken' : 'Utracony alias',
+			// applications
+			'kindApp'         : 'Aplikacja',
+			'kindPostscript'  : 'Dokument Postscript',
+			'kindMsOffice'    : 'Dokument Office',
+			'kindMsWord'      : 'Dokument Word',
+			'kindMsExcel'     : 'Dokument Excel',
+			'kindMsPP'        : 'Prezentacja PowerPoint',
+			'kindOO'          : 'Dokument OpenOffice',
+			'kindAppFlash'    : 'Aplikacja Flash',
+			'kindPDF'         : 'Dokument przenośny PDF',
+			'kindTorrent'     : 'Plik BitTorrent',
+			'kind7z'          : 'Archiwum 7z',
+			'kindTAR'         : 'Archiwum TAR',
+			'kindGZIP'        : 'Archiwum GZIP',
+			'kindBZIP'        : 'Archiwum BZIP',
+			'kindXZ'          : 'Archiwum XZ',
+			'kindZIP'         : 'Archiwum ZIP',
+			'kindRAR'         : 'Archiwum RAR',
+			'kindJAR'         : 'Plik Java JAR',
+			'kindTTF'         : 'Czcionka TrueType',
+			'kindOTF'         : 'Czcionka OpenType',
+			'kindRPM'         : 'Pakiet RPM',
+			// texts
+			'kindText'        : 'Dokument tekstowy',
+			'kindTextPlain'   : 'Zwykły tekst',
+			'kindPHP'         : 'Kod źródłowy PHP',
+			'kindCSS'         : 'Kaskadowe arkusze stylów',
+			'kindHTML'        : 'Dokument HTML',
+			'kindJS'          : 'Kod źródłowy Javascript',
+			'kindRTF'         : 'Tekst sformatowany RTF',
+			'kindC'           : 'Kod źródłowy C',
+			'kindCHeader'     : 'Plik nagłówka C',
+			'kindCPP'         : 'Kod źródłowy C++',
+			'kindCPPHeader'   : 'Plik nagłówka C++',
+			'kindShell'       : 'Skrypt powłoki Unix',
+			'kindPython'      : 'Kod źródłowy Python',
+			'kindJava'        : 'Kod źródłowy Java',
+			'kindRuby'        : 'Kod źródłowy Ruby',
+			'kindPerl'        : 'Skrypt Perl',
+			'kindSQL'         : 'Kod źródłowy SQL',
+			'kindXML'         : 'Dokument XML',
+			'kindAWK'         : 'Kod źródłowy AWK',
+			'kindCSV'         : 'Tekst rozdzielany przecinkami CSV',
+			'kindDOCBOOK'     : 'Dokument Docbook XML',
+			'kindMarkdown'    : 'Tekst promocyjny', // added 20.7.2015
+			// images
+			'kindImage'       : 'Obraz',
+			'kindBMP'         : 'Obraz BMP',
+			'kindJPEG'        : 'Obraz JPEG',
+			'kindGIF'         : 'Obraz GIF',
+			'kindPNG'         : 'Obraz PNG',
+			'kindTIFF'        : 'Obraz TIFF',
+			'kindTGA'         : 'Obraz TGA',
+			'kindPSD'         : 'Obraz Adobe Photoshop',
+			'kindXBITMAP'     : 'Obraz X BitMap',
+			'kindPXM'         : 'Obraz Pixelmator',
+			// media
+			'kindAudio'       : 'Plik dźwiękowy',
+			'kindAudioMPEG'   : 'Plik dźwiękowy MPEG',
+			'kindAudioMPEG4'  : 'Plik dźwiękowy MPEG-4',
+			'kindAudioMIDI'   : 'Plik dźwiękowy MIDI',
+			'kindAudioOGG'    : 'Plik dźwiękowy Ogg Vorbis',
+			'kindAudioWAV'    : 'Plik dźwiękowy WAV',
+			'AudioPlaylist'   : 'Lista odtwarzania MP3',
+			'kindVideo'       : 'Plik wideo',
+			'kindVideoDV'     : 'Plik wideo DV',
+			'kindVideoMPEG'   : 'Plik wideo MPEG',
+			'kindVideoMPEG4'  : 'Plik wideo MPEG-4',
+			'kindVideoAVI'    : 'Plik wideo AVI',
+			'kindVideoMOV'    : 'Plik wideo Quick Time',
+			'kindVideoWM'     : 'Plik wideo Windows Media',
+			'kindVideoFlash'  : 'Plik wideo Flash',
+			'kindVideoMKV'    : 'Plik wideo Matroska',
+			'kindVideoOGG'    : 'Plik wideo Ogg'
+		}
+	};
+}));
+

+ 438 - 0
src/assets/js/i18n/elfinder.pt_BR.js

@@ -0,0 +1,438 @@
+/**
+ * Português translation
+ * @author Leandro Carvalho <contato@leandrowebdev.net>
+ * @author Wesley Osorio<wesleyfosorio@hotmail.com>
+ * @author Fernando H. Bandeira <fernando.bandeira94@gmail.com>
+ * @version 2016-04-28
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.pt_BR = {
+		translator : 'Leandro Carvalho &lt;contato@leandrowebdev.net&gt;, Wesley Osorio&lt;wesleyfosorio@hotmail.com&gt;, Fernando H. Bandeira &lt;fernando.bandeira94@gmail.com&gt;',
+		language   : 'Português',
+		direction  : 'ltr',
+		dateFormat : 'd M Y H:i', // Mar 13, 2012 05:27 PM
+		fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM
+		messages   : {
+
+			/********************************** errors **********************************/
+			'error'                : 'Erro',
+			'errUnknown'           : 'Erro desconhecido.',
+			'errUnknownCmd'        : 'Comando desconhecido.',
+			'errJqui'              : 'Configuração inválida do JQuery UI. Verifique se os componentes selectable, draggable e droppable estão incluídos.',
+			'errNode'              : 'elFinder requer um elemento DOM para ser criado.',
+			'errURL'               : 'Configuração inválida do elFinder! Você deve setar a opção da URL.',
+			'errAccess'            : 'Acesso negado.',
+			'errConnect'           : 'Incapaz de conectar ao backend.',
+			'errAbort'             : 'Conexão abortada.',
+			'errTimeout'           : 'Tempo de conexão excedido',
+			'errNotFound'          : 'Backend não encontrado.',
+			'errResponse'          : 'Resposta inválida do backend.',
+			'errConf'              : 'Configuração inválida do backend.',
+			'errJSON'              : 'Módulo PHP JSON não está instalado.',
+			'errNoVolumes'         : 'Não existe nenhum volume legível disponivel.',
+			'errCmdParams'         : 'Parâmetro inválido para o comando "$1".',
+			'errDataNotJSON'       : 'Dados não estão no formato JSON.',
+			'errDataEmpty'         : 'Dados vazios.',
+			'errCmdReq'            : 'Requisição do Backend requer nome de comando.',
+			'errOpen'              : 'Incapaz de abrir "$1".',
+			'errNotFolder'         : 'Objeto não é uma pasta.',
+			'errNotFile'           : 'Objeto não é um arquivo.',
+			'errRead'              : 'Incapaz de ler "$1".',
+			'errWrite'             : 'Incapaz de escrever em "$1".',
+			'errPerm'              : 'Permissão negada.',
+			'errLocked'            : '"$1" está bloqueado e não pode ser renomeado, movido ou removido.',
+			'errExists'            : 'O nome do arquivo "$1" já existe neste local.',
+			'errInvName'           : 'Nome do arquivo inválido.',
+			'errFolderNotFound'    : 'Pasta não encontrada.',
+			'errFileNotFound'      : 'Arquivo não encontrado.',
+			'errTrgFolderNotFound' : 'Pasta de destino "$1" não encontrada.',
+			'errPopup'             : 'O seu navegador está bloqueando popup\'s. Para abrir o arquivo, altere esta opção no seu Navegador.',
+			'errMkdir'             : 'Incapaz de criar a pasta "$1".',
+			'errMkfile'            : 'Incapaz de criar o arquivo "$1".',
+			'errRename'            : 'Incapaz de renomear "$1".',
+			'errCopyFrom'          : 'Copia dos arquivos do volume "$1" não permitida.',
+			'errCopyTo'            : 'Copia dos arquivos para o volume "$1" não permitida.',
+			'errMkOutLink'         : 'Incapaz de criar um link fora da unidade raiz.', // from v2.1 added 03.10.2015
+			'errUpload'            : 'Erro no upload.',  // old name - errUploadCommon
+			'errUploadFile'        : 'Não foi possível fazer o upload "$1".', // old name - errUpload
+			'errUploadNoFiles'     : 'Não foi encontrado nenhum arquivo para upload.',
+			'errUploadTotalSize'   : 'Os dados excedem o tamanho máximo permitido.', // old name - errMaxSize
+			'errUploadFileSize'    : 'Arquivo excede o tamanho máximo permitido.', //  old name - errFileMaxSize
+			'errUploadMime'        : 'Tipo de arquivo não permitido.',
+			'errUploadTransfer'    : '"$1" erro na transferência.',
+			'errUploadTemp'        : 'Incapaz de criar um arquivo temporário para upload.', // from v2.1 added 26.09.2015
+			'errNotReplace'        : 'Objeto "$1" já existe neste local e não pode ser substituído por um objeto com outro tipo.', // new
+			'errReplace'           : 'Incapaz de substituir "$1".',
+			'errSave'              : 'Incapaz de salvar "$1".',
+			'errCopy'              : 'Incapaz de copiar "$1".',
+			'errMove'              : 'Incapaz de mover "$1".',
+			'errCopyInItself'      : 'Incapaz de copiar "$1" nele mesmo.',
+			'errRm'                : 'Incapaz de remover "$1".',
+			'errRmSrc'             : 'Incapaz de remover o(s) arquivo(s) fonte.',
+			'errExtract'           : 'Incapaz de extrair os arquivos de "$1".',
+			'errArchive'           : 'Incapaz de criar o arquivo.',
+			'errArcType'           : 'Tipo de arquivo não suportado.',
+			'errNoArchive'         : 'Arquivo inválido ou é de um tipo não suportado.',
+			'errCmdNoSupport'      : 'Backend não suporta este comando.',
+			'errReplByChild'       : 'A pasta “$1” não pode ser substituída por um item que contém.',
+			'errArcSymlinks'       : 'Por razões de segurança, negada a permissão para descompactar arquivos que contenham links ou arquivos com nomes não permitidos.', // edited 24.06.2012
+			'errArcMaxSize'        : 'Arquivo excede o tamanho máximo permitido.',
+			'errResize'            : 'Incapaz de redimensionar "$1".',
+			'errResizeDegree'      : 'Grau de rotação inválido.',  // added 7.3.2013
+			'errResizeRotate'      : 'Incapaz de rotacionar a imagem.',  // added 7.3.2013
+			'errResizeSize'        : 'Tamanho inválido de imagem.',  // added 7.3.2013
+			'errResizeNoChange'    : 'Tamanho da imagem não alterado.',  // added 7.3.2013
+			'errUsupportType'      : 'Tipo de arquivo não suportado.',
+			'errNotUTF8Content'    : 'Arquivo "$1" não está em UTF-8 e não pode ser editado.',  // added 9.11.2011
+			'errNetMount'          : 'Incapaz de montar montagem "$1".', // added 17.04.2012
+			'errNetMountNoDriver'  : 'Protocolo não suportado.',     // added 17.04.2012
+			'errNetMountFailed'    : 'Montagem falhou.',         // added 17.04.2012
+			'errNetMountHostReq'   : 'Servidor requerido.', // added 18.04.2012
+			'errSessionExpires'    : 'Sua sessão expirou por inatividade.',
+			'errCreatingTempDir'   : 'Não foi possível criar um diretório temporário: "$1"',
+			'errFtpDownloadFile'   : 'Não foi possível fazer o download do arquivo do FTP: "$1"',
+			'errFtpUploadFile'     : 'Não foi possível fazer o upload do arquivo para o FTP: "$1"',
+			'errFtpMkdir'          : 'Não foi possível criar um diretório remoto no FTP: "$1"',
+			'errArchiveExec'       : 'Erro ao arquivar os arquivos: "$1"',
+			'errExtractExec'       : 'Erro na extração dos arquivos: "$1"',
+			'errNetUnMount'        : 'Incapaz de desmontar', // from v2.1 added 30.04.2012
+			'errConvUTF8'          : 'Não conversivel para UTF-8', // from v2.1 added 08.04.2014
+			'errFolderUpload'      : 'Tente utilizar o Google Chrome, se você deseja enviar uma pasta.', // from v2.1 added 26.6.2015
+			'errSearchTimeout'     : 'Tempo limite atingido para a busca "$1". O resultado da pesquisa é parcial.', // from v2.1 added 12.1.2016
+			'errReauthRequire'     : 'Re-autorização é necessária.', // from v2.1.10 added 3.24.2016
+
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'Criar arquivo',
+			'cmdback'      : 'Voltar',
+			'cmdcopy'      : 'Copiar',
+			'cmdcut'       : 'Cortar',
+			'cmddownload'  : 'Baixar',
+			'cmdduplicate' : 'Duplicar',
+			'cmdedit'      : 'Editar arquivo',
+			'cmdextract'   : 'Extrair arquivo de ficheiros',
+			'cmdforward'   : 'Avançar',
+			'cmdgetfile'   : 'Selecionar arquivos',
+			'cmdhelp'      : 'Sobre este software',
+			'cmdhome'      : 'Home',
+			'cmdinfo'      : 'Propriedades',
+			'cmdmkdir'     : 'Nova pasta',
+			'cmdmkdirin'   : 'Em uma nova pasta', // from v2.1.7 added 19.2.2016
+			'cmdmkfile'    : 'Novo arquivo de texto',
+			'cmdopen'      : 'Abrir',
+			'cmdpaste'     : 'Colar',
+			'cmdquicklook' : 'Pré-vizualização',
+			'cmdreload'    : 'Recarregar',
+			'cmdrename'    : 'Renomear',
+			'cmdrm'        : 'Deletar',
+			'cmdsearch'    : 'Achar arquivos',
+			'cmdup'        : 'Ir para o diretório pai',
+			'cmdupload'    : 'Fazer upload de arquivo',
+			'cmdview'      : 'Vizualizar',
+			'cmdresize'    : 'Redimencionar & Rotacionar',
+			'cmdsort'      : 'Ordenar',
+			'cmdnetmount'  : 'Montar unidade de rede', // added 18.04.2012
+			'cmdnetunmount': 'Desmontar', // from v2.1 added 30.04.2012
+			'cmdplaces'    : 'Para locais', // added 28.12.2014
+			'cmdchmod'     : 'Alterar permissão', // from v2.1 added 20.6.2015
+			'cmdopendir'   : 'Abrir pasta', // from v2.1 added 13.1.2016
+
+			/*********************************** buttons ***********************************/
+			'btnClose'  : 'Fechar',
+			'btnSave'   : 'Salvar',
+			'btnRm'     : 'Remover',
+			'btnApply'  : 'Aplicar',
+			'btnCancel' : 'Cancelar',
+			'btnNo'     : 'Não',
+			'btnYes'    : 'Sim',
+			'btnMount'  : 'Montar',  // added 18.04.2012
+			'btnApprove': 'Vá para $1 & aprove', // from v2.1 added 26.04.2012
+			'btnUnmount': 'Desmontar', // from v2.1 added 30.04.2012
+			'btnConv'   : 'Converter', // from v2.1 added 08.04.2014
+			'btnCwd'    : 'Aqui',      // from v2.1 added 22.5.2015
+			'btnVolume' : 'Volume',    // from v2.1 added 22.5.2015
+			'btnAll'    : 'Todos',       // from v2.1 added 22.5.2015
+			'btnMime'   : 'MIME Type', // from v2.1 added 22.5.2015
+			'btnFileName':'Nome do arquivo',  // from v2.1 added 22.5.2015
+			'btnSaveClose': 'Salvar & Fechar', // from v2.1 added 12.6.2015
+			'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015
+
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'Abrir pasta',
+			'ntffile'     : 'Abrir arquivo',
+			'ntfreload'   : 'Recarregar conteudo da pasta',
+			'ntfmkdir'    : 'Criar diretório',
+			'ntfmkfile'   : 'Criar arquivos',
+			'ntfrm'       : 'Deletar arquivos',
+			'ntfcopy'     : 'Copiar arquivos',
+			'ntfmove'     : 'Mover arquivos',
+			'ntfprepare'  : 'Preparando para copiar arquivos',
+			'ntfrename'   : 'Renomear arquivos',
+			'ntfupload'   : 'Subindo os arquivos',
+			'ntfdownload' : 'Baixando os arquivos',
+			'ntfsave'     : 'Salvando os arquivos',
+			'ntfarchive'  : 'Criando os arquivos',
+			'ntfextract'  : 'Extraindo arquivos compactados',
+			'ntfsearch'   : 'Procurando arquivos',
+			'ntfresize'   : 'Redimensionando imagens',
+			'ntfsmth'     : 'Fazendo alguma coisa',
+			'ntfloadimg'  : 'Carregando Imagem',
+			'ntfnetmount' : 'Montando unidade de rede', // added 18.04.2012
+			'ntfnetunmount': 'Desmontando unidade de rede', // from v2.1 added 30.04.2012
+			'ntfdim'      : 'Adquirindo dimensão da imagem', // added 20.05.2013
+			'ntfreaddir'  : 'Lendo informações da pasta', // from v2.1 added 01.07.2013
+			'ntfurl'      : 'Recebendo URL do link', // from v2.1 added 11.03.2014
+			'ntfchmod'    : 'Alterando permissões do arquivo', // from v2.1 added 20.6.2015
+			'ntfpreupload': 'Verificando o nome do arquivo de upload', // from v2.1 added 31.11.2015
+			'ntfzipdl'    : 'Criando um arquivo para download', // from v2.1.7 added 23.1.2016
+
+			/************************************ dates **********************************/
+			'dateUnknown' : 'Desconhecido',
+			'Today'       : 'Hoje',
+			'Yesterday'   : 'Ontem',
+			'msJan'       : 'Jan',
+			'msFeb'       : 'Fev',
+			'msMar'       : 'Mar',
+			'msApr'       : 'Abr',
+			'msMay'       : 'Mai',
+			'msJun'       : 'Jun',
+			'msJul'       : 'Jul',
+			'msAug'       : 'Ago',
+			'msSep'       : 'Set',
+			'msOct'       : 'Out',
+			'msNov'       : 'Nov',
+			'msDec'       : 'Dez',
+			'January'     : 'Janeiro',
+			'February'    : 'Fevereiro',
+			'March'       : 'Março',
+			'April'       : 'Abril',
+			'May'         : 'Maio',
+			'June'        : 'Junho',
+			'July'        : 'Julho',
+			'August'      : 'Agosto',
+			'September'   : 'Setembro',
+			'October'     : 'Outubro',
+			'November'    : 'Novembro',
+			'December'    : 'Dezembro',
+			'Sunday'      : 'Domingo',
+			'Monday'      : 'Segunda-feira',
+			'Tuesday'     : 'Terça-feira',
+			'Wednesday'   : 'Quarta-feira',
+			'Thursday'    : 'Quinta-feira',
+			'Friday'      : 'Sexta-feira',
+			'Saturday'    : 'Sábado',
+			'Sun'         : 'Dom',
+			'Mon'         : 'Seg',
+			'Tue'         : 'Ter',
+			'Wed'         : 'Qua',
+			'Thu'         : 'Qui',
+			'Fri'         : 'Sex',
+			'Sat'         : 'Sáb',
+
+			/******************************** sort variants ********************************/
+			'sortname'          : 'por nome',
+			'sortkind'          : 'por tipo',
+			'sortsize'          : 'por tam.',
+			'sortdate'          : 'por data',
+			'sortFoldersFirst'  : 'Pastas primeiro',
+
+			/********************************** new items **********************************/
+			'untitled file.txt' : 'NovoArquivo.txt', // added 10.11.2015
+			'untitled folder'   : 'NovaPasta',   // added 10.11.2015
+			'Archive'           : 'NovoArquivo',  // from v2.1 added 10.11.2015
+
+			/********************************** messages **********************************/
+			'confirmReq'      : 'Confirmação requerida',
+			'confirmRm'       : 'Você tem certeza que deseja remover os arquivos?<br />Isto não pode ser desfeito!',
+			'confirmRepl'     : 'Substituir arquivo velho com este novo?',
+			'confirmConvUTF8' : 'Não está em UTF-8<br/>Converter para UTF-8?<br/>Conteúdo se torna UTF-8 após salvar as conversões.', // from v2.1 added 08.04.2014
+			'confirmNotSave'  : 'Isto foi modificado.<br/>Você vai perder seu trabalho caso não salve as mudanças.', // from v2.1 added 15.7.2015
+			'apllyAll'        : 'Aplicar a todos',
+			'name'            : 'Nome',
+			'size'            : 'Tamanho',
+			'perms'           : 'Permissões',
+			'modify'          : 'Modificado',
+			'kind'            : 'Tipo',
+			'read'            : 'Ler',
+			'write'           : 'Escrever',
+			'noaccess'        : 'Inacessível',
+			'and'             : 'e',
+			'unknown'         : 'Desconhecido',
+			'selectall'       : 'Selecionar todos arquivos',
+			'selectfiles'     : 'Selecionar arquivo(s)',
+			'selectffile'     : 'Selecionar primeiro arquivo',
+			'selectlfile'     : 'Slecionar último arquivo',
+			'viewlist'        : 'Exibir como lista',
+			'viewicons'       : 'Exibir como ícones',
+			'places'          : 'Lugares',
+			'calc'            : 'Calcular',
+			'path'            : 'Caminho',
+			'aliasfor'        : 'Alias para',
+			'locked'          : 'Bloqueado',
+			'dim'             : 'Dimesões',
+			'files'           : 'Arquivos',
+			'folders'         : 'Pastas',
+			'items'           : 'Itens',
+			'yes'             : 'sim',
+			'no'              : 'não',
+			'link'            : 'Link',
+			'searcresult'     : 'Resultados da pesquisa',
+			'selected'        : 'itens selecionados',
+			'about'           : 'Sobre',
+			'shortcuts'       : 'Atalhos',
+			'help'            : 'Ajuda',
+			'webfm'           : 'Gerenciador de arquivos web',
+			'ver'             : 'Versão',
+			'protocolver'     : 'Versão do protocolo',
+			'homepage'        : 'Home do projeto',
+			'docs'            : 'Documentação',
+			'github'          : 'Fork us on Github',
+			'twitter'         : 'Siga-nos no twitter',
+			'facebook'        : 'Junte-se a nós no Facebook',
+			'team'            : 'Time',
+			'chiefdev'        : 'Desenvolvedor chefe',
+			'developer'       : 'Desenvolvedor',
+			'contributor'     : 'Contribuinte',
+			'maintainer'      : 'Mantenedor',
+			'translator'      : 'Tradutor',
+			'icons'           : 'Ícones',
+			'dontforget'      : 'e não se esqueça de levar a sua toalha',
+			'shortcutsof'     : 'Atalhos desabilitados',
+			'dropFiles'       : 'Solte os arquivos aqui',
+			'or'              : 'ou',
+			'selectForUpload' : 'Selecione arquivos para upload',
+			'moveFiles'       : 'Mover arquivos',
+			'copyFiles'       : 'Copiar arquivos',
+			'rmFromPlaces'    : 'Remover de Lugares',
+			'aspectRatio'     : 'Manter aspecto',
+			'scale'           : 'Tamanho',
+			'width'           : 'Largura',
+			'height'          : 'Altura',
+			'resize'          : 'Redimencionar',
+			'crop'            : 'Cortar',
+			'rotate'          : 'Rotacionar',
+			'rotate-cw'       : 'Girar 90 graus CW',
+			'rotate-ccw'      : 'Girar 90 graus CCW',
+			'degree'          : '°',
+			'netMountDialogTitle' : 'Montar Unidade de rede', // added 18.04.2012
+			'protocol'            : 'Protocolo', // added 18.04.2012
+			'host'                : 'Servidor', // added 18.04.2012
+			'port'                : 'Porta', // added 18.04.2012
+			'user'                : 'Usuário', // added 18.04.2012
+			'pass'                : 'Senha', // added 18.04.2012
+			'confirmUnmount'      : 'Deseja desmontar $1?',  // from v2.1 added 30.04.2012
+			'dropFilesBrowser': 'Soltar ou colar arquivos do navegador', // from v2.1 added 30.05.2012
+			'dropPasteFiles'  : 'Solte ou cole arquivos aqui', // from v2.1 added 07.04.2014
+			'encoding'        : 'Codificação', // from v2.1 added 19.12.2014
+			'locale'          : 'Local',   // from v2.1 added 19.12.2014
+			'searchTarget'    : 'Alvo: $1',                // from v2.1 added 22.5.2015
+			'searchMime'      : 'Perquisar por input MIME Type', // from v2.1 added 22.5.2015
+			'owner'           : 'Dono', // from v2.1 added 20.6.2015
+			'group'           : 'Grupo', // from v2.1 added 20.6.2015
+			'other'           : 'Outro', // from v2.1 added 20.6.2015
+			'execute'         : 'Executar', // from v2.1 added 20.6.2015
+			'perm'            : 'Permissão', // from v2.1 added 20.6.2015
+			'mode'            : 'Modo', // from v2.1 added 20.6.2015
+			'emptyFolder'     : 'Pasta vazia', // from v2.1.6 added 30.12.2015
+			'emptyFolderDrop' : 'Pasta vazia\\A Arraste itens para os adicionar', // from v2.1.6 added 30.12.2015
+			'emptyFolderLTap' : 'Pasta vazia\\A De um toque longo para adicionar itens', // from v2.1.6 added 30.12.2015
+			'quality'         : 'Qualidade', // from v2.1.6 added 5.1.2016
+			'autoSync'        : 'Auto sincronização',  // from v2.1.6 added 10.1.2016
+			'moveUp'          : 'Mover para cima',  // from v2.1.6 added 18.1.2016
+			'getLink'         : 'Obter link', // from v2.1.7 added 9.2.2016
+			'selectedItems'   : 'Itens selecionados ($1)', // from v2.1.7 added 2.19.2016
+			'folderId'        : 'ID da pasta', // from v2.1.10 added 3.25.2016
+			'offlineAccess'   : 'Permitir acesso offline', // from v2.1.10 added 3.25.2016
+			'reAuth'          : 'Se autenticar novamente', // from v2.1.10 added 3.25.2016
+			'nowLoading'      : 'Now loading...', // from v2.1.12 added 4.26.2016
+
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : 'Desconhecio',
+			'kindFolder'      : 'Pasta',
+			'kindAlias'       : 'Alias',
+			'kindAliasBroken' : 'Alias inválido',
+			// applications
+			'kindApp'         : 'Aplicação',
+			'kindPostscript'  : 'Documento Postscript',
+			'kindMsOffice'    : 'Documento Microsoft Office',
+			'kindMsWord'      : 'Documento Microsoft Word',
+			'kindMsExcel'     : 'Documento Microsoft Excel',
+			'kindMsPP'        : 'Apresentação Microsoft Powerpoint',
+			'kindOO'          : 'Documento Open Office',
+			'kindAppFlash'    : 'Aplicação Flash',
+			'kindPDF'         : 'Portable Document Format (PDF)',
+			'kindTorrent'     : 'Arquivo Bittorrent',
+			'kind7z'          : 'Arquivo 7z',
+			'kindTAR'         : 'Arquivo TAR',
+			'kindGZIP'        : 'Arquivo GZIP',
+			'kindBZIP'        : 'Arquivo BZIP',
+			'kindXZ'          : 'Arquivo XZ',
+			'kindZIP'         : 'Arquivo ZIP',
+			'kindRAR'         : 'Arquivo RAR',
+			'kindJAR'         : 'Arquivo JAR',
+			'kindTTF'         : 'True Type font',
+			'kindOTF'         : 'Open Type font',
+			'kindRPM'         : 'Pacote RPM',
+			// texts
+			'kindText'        : 'Arquivo de texto',
+			'kindTextPlain'   : 'Texto simples',
+			'kindPHP'         : 'PHP',
+			'kindCSS'         : 'CSS',
+			'kindHTML'        : 'Documento HTML',
+			'kindJS'          : 'Javascript',
+			'kindRTF'         : 'Formato Rich Text',
+			'kindC'           : 'C',
+			'kindCHeader'     : 'C cabeçalho',
+			'kindCPP'         : 'C++',
+			'kindCPPHeader'   : 'C++ cabeçalho',
+			'kindShell'       : 'Unix shell script',
+			'kindPython'      : 'Python',
+			'kindJava'        : 'Java',
+			'kindRuby'        : 'Ruby',
+			'kindPerl'        : 'Perl script',
+			'kindSQL'         : 'SQL',
+			'kindXML'         : 'Documento XML',
+			'kindAWK'         : 'AWK',
+			'kindCSV'         : 'Valores separados por vírgula',
+			'kindDOCBOOK'     : 'Documento Docbook XML',
+			'kindMarkdown'    : 'Markdown text', // added 20.7.2015
+			// images
+			'kindImage'       : 'Imagem',
+			'kindBMP'         : 'Imagem BMP',
+			'kindJPEG'        : 'Imagem JPEG',
+			'kindGIF'         : 'Imagem GIF',
+			'kindPNG'         : 'Imagem PNG',
+			'kindTIFF'        : 'Imagem TIFF',
+			'kindTGA'         : 'Imagem TGA',
+			'kindPSD'         : 'Imagem Adobe Photoshop',
+			'kindXBITMAP'     : 'Imagem X bitmap',
+			'kindPXM'         : 'Imagem Pixelmator',
+			// media
+			'kindAudio'       : 'Arquivo de audio',
+			'kindAudioMPEG'   : 'Audio MPEG',
+			'kindAudioMPEG4'  : 'Audio MPEG-4',
+			'kindAudioMIDI'   : 'Audio MIDI',
+			'kindAudioOGG'    : 'Audio Ogg Vorbis',
+			'kindAudioWAV'    : 'Audio WAV',
+			'AudioPlaylist'   : 'MP3 playlist',
+			'kindVideo'       : 'Arquivo de video',
+			'kindVideoDV'     : 'DV filme',
+			'kindVideoMPEG'   : 'Video MPEG',
+			'kindVideoMPEG4'  : 'Video MPEG-4',
+			'kindVideoAVI'    : 'Video AVI',
+			'kindVideoMOV'    : 'Quick Time movie',
+			'kindVideoWM'     : 'Video Windows Media',
+			'kindVideoFlash'  : 'Video Flash',
+			'kindVideoMKV'    : 'MKV',
+			'kindVideoOGG'    : 'Video Ogg'
+		}
+	};
+}));
+

+ 417 - 0
src/assets/js/i18n/elfinder.ro.js

@@ -0,0 +1,417 @@
+/**
+ * Română translation
+ * @author Cristian Tabacitu <hello@tabacitu.ro>
+ * @version 2015-11-13
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.ro = {
+		translator : 'Cristian Tabacitu &lt;hello@tabacitu.ro&gt;',
+		language   : 'Română',
+		direction  : 'ltr',
+		dateFormat : 'd M Y h:i', // Mar 13, 2012 05:27 PM
+		fancyDateFormat : '$1 h:i A', // will produce smth like: Today 12:25 PM
+		messages   : {
+
+			/********************************** errors **********************************/
+			'error'                : 'Eroare',
+			'errUnknown'           : 'Eroare necunoscută.',
+			'errUnknownCmd'        : 'Comandă necunoscuta.',
+			'errJqui'              : 'Configurație jQuery UI necunoscută. Componentele selectable, draggable și droppable trebuie să fie incluse.',
+			'errNode'              : 'elFinder necesită ca DOM Element să fie creat.',
+			'errURL'               : 'Configurație elFinder nevalidă! URL option nu este setat.',
+			'errAccess'            : 'Acces interzis.',
+			'errConnect'           : 'Nu ne-am putut conecta la backend.',
+			'errAbort'             : 'Conexiunea a fost oprită.',
+			'errTimeout'           : 'Conexiunea a fost întreruptă.',
+			'errNotFound'          : 'Nu am gasit backend-ul.',
+			'errResponse'          : 'Răspuns backend greșit.',
+			'errConf'              : 'Configurație backend greșită.',
+			'errJSON'              : 'Modulul PHP JSON nu este instalat.',
+			'errNoVolumes'         : 'Volumele citibile nu sunt disponibile.',
+			'errCmdParams'         : 'Parametri greșiți pentru comanda "$1".',
+			'errDataNotJSON'       : 'Datele nu sunt în format JSON.',
+			'errDataEmpty'         : 'Datele sunt goale.',
+			'errCmdReq'            : 'Cererea către backend necesită un nume de comandă.',
+			'errOpen'              : 'Nu am putut deschide "$1".',
+			'errNotFolder'         : 'Obiectul nu este un dosar.',
+			'errNotFile'           : 'Obiectul nu este un fișier.',
+			'errRead'              : 'Nu am putut citi "$1".',
+			'errWrite'             : 'Nu am putu scrie în "$1".',
+			'errPerm'              : 'Nu ai permisiunea necesară.',
+			'errLocked'            : '"$1" este blocat și nu poate fi redenumit, mutat sau șters.',
+			'errExists'            : 'Un fișier cu numele "$1" există deja.',
+			'errInvName'           : 'Numele pentru fișier este greșit.',
+			'errFolderNotFound'    : 'Nu am găsit dosarul.',
+			'errFileNotFound'      : 'Nu am găsit fișierul.',
+			'errTrgFolderNotFound' : 'Nu am găsit dosarul pentru destinație "$1".',
+			'errPopup'             : 'Browserul tău a prevenit deschiderea ferestrei popup. Pentru a deschide fișierul permite deschidere ferestrei.',
+			'errMkdir'             : 'Nu am putut crea dosarul "$1".',
+			'errMkfile'            : 'Nu am putut crea fișierul "$1".',
+			'errRename'            : 'Nu am putut redenumi "$1".',
+			'errCopyFrom'          : 'Copierea fișierelor de pe volumul "$1" este interzisă.',
+			'errCopyTo'            : 'Copierea fișierelor către volumul "$1" este interzisă.',
+			'errMkOutLink'         : 'Nu am putut crea linkul în afara volumului rădăcină.', // from v2.1 added 03.10.2015
+			'errUpload'            : 'Eroare de upload.',  // old name - errUploadCommon
+			'errUploadFile'        : 'Nu am putut urca "$1".', // old name - errUpload
+			'errUploadNoFiles'     : 'Nu am găsit fișiere pentru a le urca.',
+			'errUploadTotalSize'   : 'Datele depâșest limita maximă de mărime.', // old name - errMaxSize
+			'errUploadFileSize'    : 'Fișierul este prea mare.', //  old name - errFileMaxSize
+			'errUploadMime'        : 'Acest tip de fișier nu este permis.',
+			'errUploadTransfer'    : 'Eroare la transferarea "$1".',
+			'errUploadTemp'        : 'Nu am putut crea fișierul temporar pentru upload.', // from v2.1 added 26.09.2015
+			'errNotReplace'        : 'Obiectul "$1" există deja în acest loc și nu poate fi înlocuit de un obiect de alt tip.', // new
+			'errReplace'           : 'Nu am putut înlocui "$1".',
+			'errSave'              : 'Nu am putut salva "$1".',
+			'errCopy'              : 'Nu am putut copia "$1".',
+			'errMove'              : 'Nu am putut muta "$1".',
+			'errCopyInItself'      : 'Nu am putut copia "$1" în el însuși.',
+			'errRm'                : 'Nu am putut șterge "$1".',
+			'errRmSrc'             : 'Nu am putut șterge fișierul sursă.',
+			'errExtract'           : 'Nu am putut extrage fișierele din "$1".',
+			'errArchive'           : 'Nu am putut crea arhiva.',
+			'errArcType'           : 'Arhiva este de un tip nesuportat.',
+			'errNoArchive'         : 'Fișierul nu este o arhiva sau este o arhivă de un tip necunoscut.',
+			'errCmdNoSupport'      : 'Backend-ul nu suportă această comandă.',
+			'errReplByChild'       : 'Dosarul “$1” nu poate fi înlocuit de un element pe care el îl conține.',
+			'errArcSymlinks'       : 'Din motive de securitate, arhiva nu are voie să conțină symlinks sau fișiere cu nume interzise.', // edited 24.06.2012
+			'errArcMaxSize'        : 'Fișierul arhivei depășește mărimea maximă permisă.',
+			'errResize'            : 'Nu am putut redimensiona "$1".',
+			'errResizeDegree'      : 'Grad de rotație nevalid.',  // added 7.3.2013
+			'errResizeRotate'      : 'Imaginea nu a fost rotită.',  // added 7.3.2013
+			'errResizeSize'        : 'Mărimea imaginii este nevalidă.',  // added 7.3.2013
+			'errResizeNoChange'    : 'Mărimea imaginii nu a fost schimbată.',  // added 7.3.2013
+			'errUsupportType'      : 'Tipul acesta de fișier nu este suportat.',
+			'errNotUTF8Content'    : 'Fișierul "$1" nu folosește UTF-8 și nu poate fi editat.',  // added 9.11.2011
+			'errNetMount'          : 'Nu am putut încărca "$1".', // added 17.04.2012
+			'errNetMountNoDriver'  : 'Protocol nesuportat.',     // added 17.04.2012
+			'errNetMountFailed'    : 'Încărcare eșuată.',         // added 17.04.2012
+			'errNetMountHostReq'   : 'Gazda este necesară.', // added 18.04.2012
+			'errSessionExpires'    : 'Sesiunea a expirat datorită lipsei de activitate.',
+			'errCreatingTempDir'   : 'Nu am putut crea fișierul temporar: "$1"',
+			'errFtpDownloadFile'   : 'Nu am putut descarca fișierul de pe FTP: "$1"',
+			'errFtpUploadFile'     : 'Nu am putut încărca fișierul pe FTP: "$1"',
+			'errFtpMkdir'          : 'Nu am putut crea acest dosar pe FTP: "$1"',
+			'errArchiveExec'       : 'Eroare la arhivarea fișierelor: "$1"',
+			'errExtractExec'       : 'Eroare la dezarhivarea fișierelor: "$1"',
+			'errNetUnMount'        : 'Nu am putut elimina volumul', // from v2.1 added 30.04.2012
+			'errConvUTF8'          : 'Nu poate fi convertit la UTF-8', // from v2.1 added 08.04.2014
+			'errFolderUpload'      : 'Pentru a urca dosare încearcă Google Chrome.', // from v2.1 added 26.6.2015
+
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'Creeaza arhivă',
+			'cmdback'      : 'Înapoi',
+			'cmdcopy'      : 'Copiază',
+			'cmdcut'       : 'Taie',
+			'cmddownload'  : 'Descarcă',
+			'cmdduplicate' : 'Creează duplicat',
+			'cmdedit'      : 'Modifică fișier',
+			'cmdextract'   : 'Extrage fișierele din arhivă',
+			'cmdforward'   : 'Înainte',
+			'cmdgetfile'   : 'Alege fișiere',
+			'cmdhelp'      : 'Despre acest software',
+			'cmdhome'      : 'Acasă',
+			'cmdinfo'      : 'Informații',
+			'cmdmkdir'     : 'Dosar nou',
+			'cmdmkfile'    : 'Fișier text nou',
+			'cmdopen'      : 'Deschide',
+			'cmdpaste'     : 'Lipește',
+			'cmdquicklook' : 'Previzualizează',
+			'cmdreload'    : 'Reîncarcă',
+			'cmdrename'    : 'Redenumește',
+			'cmdrm'        : 'Șterge',
+			'cmdsearch'    : 'Găsește fișiere',
+			'cmdup'        : 'Mergi la dosarul părinte',
+			'cmdupload'    : 'Urcă fișiere',
+			'cmdview'      : 'Vezi',
+			'cmdresize'    : 'Redimensionează & rotește',
+			'cmdsort'      : 'Sortează',
+			'cmdnetmount'  : 'Încarcă volum din rețea', // added 18.04.2012
+			'cmdnetunmount': 'Elimină volum', // from v2.1 added 30.04.2012
+			'cmdplaces'    : 'La Locuri', // added 28.12.2014
+			'cmdchmod'     : 'Schimbă mod', // from v2.1 added 20.6.2015
+
+			/*********************************** buttons ***********************************/
+			'btnClose'  : 'Închide',
+			'btnSave'   : 'Salvează',
+			'btnRm'     : 'Șterge',
+			'btnApply'  : 'Aplică',
+			'btnCancel' : 'Anulează',
+			'btnNo'     : 'Nu',
+			'btnYes'    : 'Da',
+			'btnMount'  : 'Încarcă',  // added 18.04.2012
+			'btnApprove': 'Mergi la $1 și aprobă', // from v2.1 added 26.04.2012
+			'btnUnmount': 'Elimină volum', // from v2.1 added 30.04.2012
+			'btnConv'   : 'Convertește', // from v2.1 added 08.04.2014
+			'btnCwd'    : 'Aici',      // from v2.1 added 22.5.2015
+			'btnVolume' : 'Volum',    // from v2.1 added 22.5.2015
+			'btnAll'    : 'Toate',       // from v2.1 added 22.5.2015
+			'btnMime'   : 'Tipuri MIME', // from v2.1 added 22.5.2015
+			'btnFileName':'Nume fișier',  // from v2.1 added 22.5.2015
+			'btnSaveClose': 'Salvează și închide', // from v2.1 added 12.6.2015
+
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'Deschide dosar',
+			'ntffile'     : 'Deschide fișier',
+			'ntfreload'   : 'Actualizează conținutul dosarului',
+			'ntfmkdir'    : 'Se creează dosarul',
+			'ntfmkfile'   : 'Se creează fișierele',
+			'ntfrm'       : 'Șterge fișiere',
+			'ntfcopy'     : 'Copiază fișiere',
+			'ntfmove'     : 'Mută fișiere',
+			'ntfprepare'  : 'Pregătește copierea fișierelor',
+			'ntfrename'   : 'Redenumește fișiere',
+			'ntfupload'   : 'Se urcă fișierele',
+			'ntfdownload' : 'Se descarcă fișierele',
+			'ntfsave'     : 'Salvează fișiere',
+			'ntfarchive'  : 'Se creează arhiva',
+			'ntfextract'  : 'Se extrag fișierele din arhivă',
+			'ntfsearch'   : 'Se caută fișierele',
+			'ntfresize'   : 'Se redimnesionează imaginile',
+			'ntfsmth'     : 'Se întamplă ceva',
+			'ntfloadimg'  : 'Se încarcă imaginea',
+			'ntfnetmount' : 'Se încarcă volumul din rețea', // added 18.04.2012
+			'ntfnetunmount': 'Se elimină volumul din rețea', // from v2.1 added 30.04.2012
+			'ntfdim'      : 'Se preiau dimensiunile imaginii', // added 20.05.2013
+			'ntfreaddir'  : 'Se citesc informațiile dosarului', // from v2.1 added 01.07.2013
+			'ntfurl'      : 'Se preia URL-ul din link', // from v2.1 added 11.03.2014
+			'ntfchmod'    : 'Se schimba modul de fișier', // from v2.1 added 20.6.2015
+
+			/************************************ dates **********************************/
+			'dateUnknown' : 'necunoscută',
+			'Today'       : 'Astăzi',
+			'Yesterday'   : 'Ieri',
+			'msJan'       : 'Ian',
+			'msFeb'       : 'Feb',
+			'msMar'       : 'Mar',
+			'msApr'       : 'Apr',
+			'msMay'       : 'Mai',
+			'msJun'       : 'Iun',
+			'msJul'       : 'Iul',
+			'msAug'       : 'Aug',
+			'msSep'       : 'Sep',
+			'msOct'       : 'Oct',
+			'msNov'       : 'Nov',
+			'msDec'       : 'Dec',
+			'January'     : 'Ianuarie',
+			'February'    : 'Februarie',
+			'March'       : 'Martie',
+			'April'       : 'Aprilie',
+			'May'         : 'Mai',
+			'June'        : 'Iunie',
+			'July'        : 'Iulie',
+			'August'      : 'August',
+			'September'   : 'Septembrie',
+			'October'     : 'Octombrie',
+			'November'    : 'Noiembrie',
+			'December'    : 'Decembrie',
+			'Sunday'      : 'Duminică',
+			'Monday'      : 'Luni',
+			'Tuesday'     : 'Marți',
+			'Wednesday'   : 'Miercuri',
+			'Thursday'    : 'Joi',
+			'Friday'      : 'Vineri',
+			'Saturday'    : 'Sâmbătă',
+			'Sun'         : 'Du',
+			'Mon'         : 'Lu',
+			'Tue'         : 'Ma',
+			'Wed'         : 'Mi',
+			'Thu'         : 'Jo',
+			'Fri'         : 'Vi',
+			'Sat'         : 'Sâ',
+
+			/******************************** sort variants ********************************/
+			'sortname'          : 'după nume',
+			'sortkind'          : 'după tip',
+			'sortsize'          : 'după mărime',
+			'sortdate'          : 'după dată',
+			'sortFoldersFirst'  : 'Dosarele primele',
+
+			/********************************** new items **********************************/
+			'untitled file.txt' : 'FisierNou.txt', // added 10.11.2015
+			'untitled folder'   : 'DosarNou',   // added 10.11.2015
+			'Archive'           : 'ArhivaNoua',  // from v2.1 added 10.11.2015
+
+			/********************************** messages **********************************/
+			'confirmReq'      : 'Este necesară confirmare',
+			'confirmRm'       : 'Ești sigur că vrei să ștergi fișierele?<br/>Acțiunea este ireversibilă!',
+			'confirmRepl'     : 'Înlocuiește fișierul vechi cu cel nou?',
+			'confirmConvUTF8' : 'Nu este în UTF-8<br/>Convertim la UTF-8?<br/>Conținutul devine UTF-8 după salvarea conversiei.', // from v2.1 added 08.04.2014
+			'confirmNotSave'  : 'Au avut loc modificări.<br/>Dacă nu salvezi se vor pierde modificările.', // from v2.1 added 15.7.2015
+			'apllyAll'        : 'Aplică pentru toate',
+			'name'            : 'Nume',
+			'size'            : 'Mărime',
+			'perms'           : 'Permisiuni',
+			'modify'          : 'Modificat la',
+			'kind'            : 'Tip',
+			'read'            : 'citire',
+			'write'           : 'scriere',
+			'noaccess'        : 'acces interzis',
+			'and'             : 'și',
+			'unknown'         : 'necunoscut',
+			'selectall'       : 'Alege toate fișierele',
+			'selectfiles'     : 'Alege fișier(e)',
+			'selectffile'     : 'Alege primul fișier',
+			'selectlfile'     : 'Alege ultimul fișier',
+			'viewlist'        : 'Vezi ca listă',
+			'viewicons'       : 'Vezi ca icoane',
+			'places'          : 'Locuri',
+			'calc'            : 'Calculează',
+			'path'            : 'Cale',
+			'aliasfor'        : 'Alias pentru',
+			'locked'          : 'Securizat',
+			'dim'             : 'Dimensiuni',
+			'files'           : 'Fișiere',
+			'folders'         : 'Dosare',
+			'items'           : 'Elemente',
+			'yes'             : 'da',
+			'no'              : 'nu',
+			'link'            : 'Link',
+			'searcresult'     : 'Rezultatele căutării',
+			'selected'        : 'elemente alese',
+			'about'           : 'Despre',
+			'shortcuts'       : 'Scurtături',
+			'help'            : 'Ajutor',
+			'webfm'           : 'Manager web pentru fișiere',
+			'ver'             : 'Versiune',
+			'protocolver'     : 'versiune protocol',
+			'homepage'        : 'Pagina proiectului',
+			'docs'            : 'Documentație',
+			'github'          : 'Fork nou pe Github',
+			'twitter'         : 'Urmărește-ne pe twitter',
+			'facebook'        : 'Alătura-te pe facebook',
+			'team'            : 'Echipa',
+			'chiefdev'        : 'chief developer',
+			'developer'       : 'developer',
+			'contributor'     : 'contributor',
+			'maintainer'      : 'maintainer',
+			'translator'      : 'translator',
+			'icons'           : 'Icoane',
+			'dontforget'      : 'și nu uita să-ți iei prosopul',
+			'shortcutsof'     : 'Scurtăturile sunt dezactivate',
+			'dropFiles'       : 'Dă drumul fișierelor aici',
+			'or'              : 'sau',
+			'selectForUpload' : 'Alege fișiere pentru a le urca',
+			'moveFiles'       : 'Mută fișiere',
+			'copyFiles'       : 'Copiază fișiere',
+			'rmFromPlaces'    : 'Șterge din locuri',
+			'aspectRatio'     : 'Aspect ratio',
+			'scale'           : 'Scală',
+			'width'           : 'Lățime',
+			'height'          : 'Înălțime',
+			'resize'          : 'Redimensionează',
+			'crop'            : 'Decupează',
+			'rotate'          : 'Rotește',
+			'rotate-cw'       : 'Rotește cu 90° în sensul ceasului',
+			'rotate-ccw'      : 'Rotește cu 90° în sensul invers ceasului',
+			'degree'          : '°',
+			'netMountDialogTitle' : 'Încarcă volum din rețea', // added 18.04.2012
+			'protocol'            : 'Protocol', // added 18.04.2012
+			'host'                : 'Gazdă', // added 18.04.2012
+			'port'                : 'Port', // added 18.04.2012
+			'user'                : 'Utilizator', // added 18.04.2012
+			'pass'                : 'Parolă', // added 18.04.2012
+			'confirmUnmount'      : 'Vrei să elimini volumul $1?',  // from v2.1 added 30.04.2012
+			'dropFilesBrowser': 'Drag&drop sau lipește din browser', // from v2.1 added 30.05.2012
+			'dropPasteFiles'  : 'Drag&drop sau lipește fișiere aici', // from v2.1 added 07.04.2014
+			'encoding'        : 'Encodare', // from v2.1 added 19.12.2014
+			'locale'          : 'Locale',   // from v2.1 added 19.12.2014
+			'searchTarget'    : 'Țintă: $1',                // from v2.1 added 22.5.2015
+			'searchMime'      : 'Caută după tipul MIME', // from v2.1 added 22.5.2015
+			'owner'           : 'Owner', // from v2.1 added 20.6.2015
+			'group'           : 'Group', // from v2.1 added 20.6.2015
+			'other'           : 'Other', // from v2.1 added 20.6.2015
+			'execute'         : 'Execute', // from v2.1 added 20.6.2015
+			'perm'            : 'Permission', // from v2.1 added 20.6.2015
+			'mode'            : 'Mod', // from v2.1 added 20.6.2015
+
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : 'Necunoscut',
+			'kindFolder'      : 'Dosar',
+			'kindAlias'       : 'Alias',
+			'kindAliasBroken' : 'Alias stricat',
+			// applications
+			'kindApp'         : 'Aplicație',
+			'kindPostscript'  : 'Document Postscript',
+			'kindMsOffice'    : 'Document Microsoft Office',
+			'kindMsWord'      : 'Document Microsoft Word',
+			'kindMsExcel'     : 'Document Microsoft Excel',
+			'kindMsPP'        : 'Prezentare Microsoft Powerpoint',
+			'kindOO'          : 'Document Open Office',
+			'kindAppFlash'    : 'Aplicație Flash',
+			'kindPDF'         : 'Document Portabil (PDF)',
+			'kindTorrent'     : 'Fișier Bittorrent',
+			'kind7z'          : 'Arhivă 7z',
+			'kindTAR'         : 'Arhivă TAR',
+			'kindGZIP'        : 'Arhivă GZIP',
+			'kindBZIP'        : 'Arhivă BZIP',
+			'kindXZ'          : 'Arhivă XZ',
+			'kindZIP'         : 'Arhivă ZIP',
+			'kindRAR'         : 'Arhivă RAR',
+			'kindJAR'         : 'Fișier Java JAR',
+			'kindTTF'         : 'Font True Type',
+			'kindOTF'         : 'Font Open Type',
+			'kindRPM'         : 'Pachet RPM',
+			// texts
+			'kindText'        : 'Document text',
+			'kindTextPlain'   : 'Text simplu',
+			'kindPHP'         : 'Sursă PHP',
+			'kindCSS'         : 'Fișier de stil (CSS)',
+			'kindHTML'        : 'Document HTML',
+			'kindJS'          : 'Sursă Javascript',
+			'kindRTF'         : 'Text formatat (rich text)',
+			'kindC'           : 'Sursă C',
+			'kindCHeader'     : 'Sursă C header',
+			'kindCPP'         : 'Sursă C++',
+			'kindCPPHeader'   : 'Sursă C++ header',
+			'kindShell'       : 'Script terminal Unix',
+			'kindPython'      : 'Sursă Python',
+			'kindJava'        : 'Sursă Java',
+			'kindRuby'        : 'Sursă Ruby',
+			'kindPerl'        : 'Script Perl',
+			'kindSQL'         : 'Sursă SQL',
+			'kindXML'         : 'Document XML',
+			'kindAWK'         : 'Sursă AWK',
+			'kindCSV'         : 'Valori separate de virgulă (CSV)',
+			'kindDOCBOOK'     : 'Document Docbook XML',
+			'kindMarkdown'    : 'Text Markdown', // added 20.7.2015
+			// images
+			'kindImage'       : 'Imagine',
+			'kindBMP'         : 'Imagine BMP',
+			'kindJPEG'        : 'Imagine JPEG',
+			'kindGIF'         : 'Imagine GIF',
+			'kindPNG'         : 'Imagine PNG',
+			'kindTIFF'        : 'Imagine TIFF',
+			'kindTGA'         : 'Imagine TGA',
+			'kindPSD'         : 'Imagine Adobe Photoshop',
+			'kindXBITMAP'     : 'Imagine X bitmap',
+			'kindPXM'         : 'Imagine Pixelmator',
+			// media
+			'kindAudio'       : 'Audio',
+			'kindAudioMPEG'   : 'Audio MPEG',
+			'kindAudioMPEG4'  : 'Audio MPEG-4',
+			'kindAudioMIDI'   : 'Audio MIDI',
+			'kindAudioOGG'    : 'Audio Ogg Vorbis',
+			'kindAudioWAV'    : 'Audio WAV',
+			'AudioPlaylist'   : 'Playlist MP3',
+			'kindVideo'       : 'Video',
+			'kindVideoDV'     : 'Video DV',
+			'kindVideoMPEG'   : 'Video MPEG',
+			'kindVideoMPEG4'  : 'Video MPEG-4',
+			'kindVideoAVI'    : 'Video AVI',
+			'kindVideoMOV'    : 'Video Quick Time',
+			'kindVideoWM'     : 'Video Windows Media',
+			'kindVideoFlash'  : 'Video Flash',
+			'kindVideoMKV'    : 'Video Matroska',
+			'kindVideoOGG'    : 'Video Ogg'
+		}
+	};
+}));
+

+ 521 - 0
src/assets/js/i18n/elfinder.ru.js

@@ -0,0 +1,521 @@
+/**
+ * Русский язык translation
+ * @author Dmitry "dio" Levashov <dio@std42.ru>
+ * @author Andrew Berezovsky <andrew.berezovsky@gmail.com>
+ * @author Alex Yashkin <alex@yashkin.by>
+ * @version 2017-10-06
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.ru = {
+		translator : 'Dmitry "dio" Levashov &lt;dio@std42.ru&gt;, Andrew Berezovsky &lt;andrew.berezovsky@gmail.com&gt;, Alex Yashkin &lt;alex@yashkin.by&gt;',
+		language   : 'Русский язык',
+		direction  : 'ltr',
+		dateFormat : 'd M Y H:i', // Mar 13, 2012 05:27 PM
+		fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM
+		nonameDateFormat : 'ymd-His', // to apply if upload file is noname: 120513172700
+		messages   : {
+
+			/********************************** errors **********************************/
+			'error'                : 'Ошибка',
+			'errUnknown'           : 'Неизвестная ошибка.',
+			'errUnknownCmd'        : 'Неизвестная команда.',
+			'errJqui'              : 'Отсутствуют необходимые компоненты jQuery UI - selectable, draggable и droppable.',
+			'errNode'              : 'Отсутствует DOM элемент для инициализации elFinder.',
+			'errURL'               : 'Неверная конфигурация elFinder! Не указан URL.',
+			'errAccess'            : 'Доступ запрещен.',
+			'errConnect'           : 'Не удалось соединиться с сервером.',
+			'errAbort'             : 'Соединение прервано.',
+			'errTimeout'           : 'Таймаут соединения.',
+			'errNotFound'          : 'Сервер не найден.',
+			'errResponse'          : 'Некорректный ответ сервера.',
+			'errConf'              : 'Некорректная настройка сервера.',
+			'errJSON'              : 'Модуль PHP JSON не установлен.',
+			'errNoVolumes'         : 'Отсутствуют корневые директории достуные для чтения.',
+			'errCmdParams'         : 'Некорректные параметры команды "$1".',
+			'errDataNotJSON'       : 'Данные не в формате JSON.',
+			'errDataEmpty'         : 'Данные отсутствуют.',
+			'errCmdReq'            : 'Для запроса к серверу необходимо указать имя команды.',
+			'errOpen'              : 'Не удалось открыть "$1".',
+			'errNotFolder'         : 'Объект не является папкой.',
+			'errNotFile'           : 'Объект не является файлом.',
+			'errRead'              : 'Ошибка чтения "$1".',
+			'errWrite'             : 'Ошибка записи в "$1".',
+			'errPerm'              : 'Доступ запрещен.',
+			'errLocked'            : '"$1" защищен и не может быть переименован, перемещен или удален.',
+			'errExists'            : 'В папке уже существует файл с именем "$1".',
+			'errInvName'           : 'Недопустимое имя файла.',
+			'errInvDirname'        : 'Недопустимое имя папки.',  // from v2.1.24 added 12.4.2017
+			'errFolderNotFound'    : 'Папка не найдена.',
+			'errFileNotFound'      : 'Файл не найден.',
+			'errTrgFolderNotFound' : 'Целевая папка "$1" не найдена.',
+			'errPopup'             : 'Браузер заблокировал открытие нового окна. Чтобы открыть файл, измените настройки браузера.',
+			'errMkdir'             : 'Ошибка создания папки "$1".',
+			'errMkfile'            : 'Ошибка создания файла "$1".',
+			'errRename'            : 'Ошибка переименования "$1".',
+			'errCopyFrom'          : 'Копирование файлов из директории "$1" запрещено.',
+			'errCopyTo'            : 'Копирование файлов в директорию "$1" запрещено.',
+			'errMkOutLink'         : 'Невозможно создать ссылку вне корня раздела.', // from v2.1 added 03.10.2015
+			'errUpload'            : 'Ошибка загрузки.',  // old name - errUploadCommon
+			'errUploadFile'        : 'Невозможно загрузить "$1".', // old name - errUpload
+			'errUploadNoFiles'     : 'Нет файлов для загрузки.',
+			'errUploadTotalSize'   : 'Превышен допустимый размер загружаемых данных.', // old name - errMaxSize
+			'errUploadFileSize'    : 'Размер файла превышает допустимый.', //  old name - errFileMaxSize
+			'errUploadMime'        : 'Недопустимый тип файла.',
+			'errUploadTransfer'    : 'Ошибка передачи файла "$1".',
+			'errUploadTemp'        : 'Невозможно создать временный файл для загрузки.', // from v2.1 added 26.09.2015
+			'errNotReplace'        : 'Объект "$1" по этому адресу уже существует и не может быть заменен объектом другого типа.', // new
+			'errReplace'           : 'Невозможно заменить "$1".',
+			'errSave'              : 'Невозможно сохранить "$1".',
+			'errCopy'              : 'Невозможно скопировать "$1".',
+			'errMove'              : 'Невозможно переместить "$1".',
+			'errCopyInItself'      : 'Невозможно скопировать "$1" в самого себя.',
+			'errRm'                : 'Невозможно удалить "$1".',
+			'errTrash'             : 'Невозможно переместить в корзину.', // from v2.1.24 added 30.4.2017
+			'errRmSrc'             : 'Невозможно удалить файлы источника.',
+			'errExtract'           : 'Невозможно извлечь фалы из "$1".',
+			'errArchive'           : 'Невозможно создать архив.',
+			'errArcType'           : 'Неподдерживаемый тип архива.',
+			'errNoArchive'         : 'Файл не является архивом или неподдерживаемый тип архива.',
+			'errCmdNoSupport'      : 'Сервер не поддерживает эту команду.',
+			'errReplByChild'       : 'Невозможно заменить папку "$1" содержащимся в ней объектом.',
+			'errArcSymlinks'       : 'По соображениям безопасности запрещена распаковка архивов, содержащих ссылки (symlinks) или файлы с недопустимыми именами.', // edited 24.06.2012
+			'errArcMaxSize'        : 'Размер файлов в архиве превышает максимально разрешенный.',
+			'errResize'            : 'Не удалось изменить размер "$1".',
+			'errResizeDegree'      : 'Некорректный градус поворота.',  // added 7.3.2013
+			'errResizeRotate'      : 'Невозможно повернуть изображение.',  // added 7.3.2013
+			'errResizeSize'        : 'Некорректный размер изображения.',  // added 7.3.2013
+			'errResizeNoChange'    : 'Размер изображения не изменился.',  // added 7.3.2013
+			'errUsupportType'      : 'Неподдерживаемый тип файла.',
+			'errNotUTF8Content'    : 'Файл "$1" содержит текст в кодировке отличной от UTF-8 и не может быть отредактирован.',  // added 9.11.2011
+			'errNetMount'          : 'Невозможно подключить "$1".', // added 17.04.2012
+			'errNetMountNoDriver'  : 'Неподдерживаемый протокол.',     // added 17.04.2012
+			'errNetMountFailed'    : 'Ошибка монтирования.',         // added 17.04.2012
+			'errNetMountHostReq'   : 'Требуется указать хост.', // added 18.04.2012
+			'errSessionExpires'    : 'Сессия была завершена так как превышено время отсутствия активности.',
+			'errCreatingTempDir'   : 'Невозможно создать временную директорию: "$1"',
+			'errFtpDownloadFile'   : 'Невозможно скачать файл с FTP: "$1"',
+			'errFtpUploadFile'     : 'Невозможно загрузить файл на FTP: "$1"',
+			'errFtpMkdir'          : 'Невозможно создать директорию на FTP: "$1"',
+			'errArchiveExec'       : 'Ошибка при выполнении архивации: "$1"',
+			'errExtractExec'       : 'Ошибка при выполнении распаковки: "$1"',
+			'errNetUnMount'        : 'Невозможно отключить', // from v2.1 added 30.04.2012
+			'errConvUTF8'          : 'Не конвертируется в UTF-8', // from v2.1 added 08.04.2014
+			'errFolderUpload'      : 'Если вы хотите загружать папки, попробуйте Google Chrome.', // from v2.1 added 26.6.2015
+			'errSearchTimeout'     : 'Превышено время ожидания при поиске "$1". Результаты поиска частичные.', // from v2.1 added 12.1.2016
+			'errReauthRequire'     : 'Требуется повторная авторизация.', // from v2.1.10 added 24.3.2016
+			'errMaxTargets'        : 'Максимальное число выбираемых файлов: $1.', // from v2.1.17 added 17.10.2016
+			'errRestore'           : 'Невозможно восстановить из корзины. Не удалось определить путь для восстановления.', // from v2.1.24 added 3.5.2017
+			'errEditorNotFound'    : 'Не найден редактор для этого типа файлов.', // from v2.1.25 added 23.5.2017
+			'errServerError'       : 'Возникла ошибка на стороне сервера.', // from v2.1.25 added 16.6.2017
+			'errEmpty'             : 'Невозможно очистить папку "$1".', // from v2.1.25 added 22.6.2017
+
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'Создать архив',
+			'cmdback'      : 'Назад',
+			'cmdcopy'      : 'Копировать',
+			'cmdcut'       : 'Вырезать',
+			'cmddownload'  : 'Скачать',
+			'cmdduplicate' : 'Сделать копию',
+			'cmdedit'      : 'Редактировать файл',
+			'cmdextract'   : 'Распаковать архив',
+			'cmdforward'   : 'Вперед',
+			'cmdgetfile'   : 'Выбрать файлы',
+			'cmdhelp'      : 'О программе',
+			'cmdhome'      : 'Домой',
+			'cmdinfo'      : 'Свойства',
+			'cmdmkdir'     : 'Новая папка',
+			'cmdmkdirin'   : 'В новую папку', // from v2.1.7 added 19.2.2016
+			'cmdmkfile'    : 'Новый текстовый файл',
+			'cmdopen'      : 'Открыть',
+			'cmdpaste'     : 'Вставить',
+			'cmdquicklook' : 'Быстрый просмотр',
+			'cmdreload'    : 'Обновить',
+			'cmdrename'    : 'Переименовать',
+			'cmdrm'        : 'Удалить',
+			'cmdtrash'     : 'Переместить в корзину', //from v2.1.24 added 29.4.2017
+			'cmdrestore'   : 'Восстановить', //from v2.1.24 added 3.5.2017
+			'cmdsearch'    : 'Поиск файлов',
+			'cmdup'        : 'Наверх',
+			'cmdupload'    : 'Загрузить файлы',
+			'cmdview'      : 'Вид',
+			'cmdresize'    : 'Изменить размер и повернуть',
+			'cmdsort'      : 'Сортировать',
+			'cmdnetmount'  : 'Подключить сетевой раздел', // added 18.04.2012
+			'cmdnetunmount': 'Отключить', // from v2.1 added 30.04.2012
+			'cmdplaces'    : 'В избранное', // added 28.12.2014
+			'cmdchmod'     : 'Изменить права доступа', // from v2.1 added 20.6.2015
+			'cmdopendir'   : 'Открыть папку', // from v2.1 added 13.1.2016
+			'cmdcolwidth'  : 'Сбросить ширину колонок', // from v2.1.13 added 12.06.2016
+			'cmdfullscreen': 'Полный экран', // from v2.1.15 added 03.08.2016
+			'cmdmove'      : 'Переместить', // from v2.1.15 added 21.08.2016
+			'cmdempty'     : 'Очистить папку', // from v2.1.25 added 22.06.2017
+			'cmdundo'      : 'Отменить', // from v2.1.27 added 31.07.2017
+			'cmdredo'      : 'Вернуть', // from v2.1.27 added 31.07.2017
+			'cmdpreference': 'Предпочтения', // from v2.1.27 added 03.08.2017
+			'cmdselectall' : 'Выделить все', // from v2.1.28 added 15.08.2017
+			'cmdselectnone': 'Снять все выделение', // from v2.1.28 added 15.08.2017
+			'cmdselectinvert': 'Инвертировать выделение', // from v2.1.28 added 15.08.2017
+
+			/*********************************** buttons ***********************************/
+			'btnClose'  : 'Закрыть',
+			'btnSave'   : 'Сохранить',
+			'btnRm'     : 'Удалить',
+			'btnApply'  : 'Применить',
+			'btnCancel' : 'Отмена',
+			'btnNo'     : 'Нет',
+			'btnYes'    : 'Да',
+			'btnMount'  : 'Подключить',  // added 18.04.2012
+			'btnApprove': 'Перейти в $1 и применить', // from v2.1 added 26.04.2012
+			'btnUnmount': 'Отключить', // from v2.1 added 30.04.2012
+			'btnConv'   : 'Конвертировать', // from v2.1 added 08.04.2014
+			'btnCwd'    : 'Здесь',      // from v2.1 added 22.5.2015
+			'btnVolume' : 'Раздел',    // from v2.1 added 22.5.2015
+			'btnAll'    : 'Все',       // from v2.1 added 22.5.2015
+			'btnMime'   : 'MIME тип', // from v2.1 added 22.5.2015
+			'btnFileName':'Имя файла',  // from v2.1 added 22.5.2015
+			'btnSaveClose': 'Сохранить и закрыть', // from v2.1 added 12.6.2015
+			'btnBackup' : 'Резервная копия', // fromv2.1 added 28.11.2015
+			'btnRename'    : 'Переименовать',      // from v2.1.24 added 6.4.2017
+			'btnRenameAll' : 'Переименовать (все)', // from v2.1.24 added 6.4.2017
+			'btnPrevious' : 'Пред. ($1/$2)', // from v2.1.24 added 11.5.2017
+			'btnNext'     : 'След. ($1/$2)', // from v2.1.24 added 11.5.2017
+			'btnSaveAs'   : 'Сохранить как', // from v2.1.25 added 24.5.2017
+
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'Открыть папку',
+			'ntffile'     : 'Открыть файл',
+			'ntfreload'   : 'Обновить текущую папку',
+			'ntfmkdir'    : 'Создание папки',
+			'ntfmkfile'   : 'Создание файлов',
+			'ntfrm'       : 'Удалить файлы',
+			'ntfcopy'     : 'Скопировать файлы',
+			'ntfmove'     : 'Переместить файлы',
+			'ntfprepare'  : 'Подготовка к копированию файлов',
+			'ntfrename'   : 'Переименовать файлы',
+			'ntfupload'   : 'Загрузка файлов',
+			'ntfdownload' : 'Скачивание файлов',
+			'ntfsave'     : 'Сохранить файлы',
+			'ntfarchive'  : 'Создание архива',
+			'ntfextract'  : 'Распаковка архива',
+			'ntfsearch'   : 'Поиск файлов',
+			'ntfresize'   : 'Изменение размеров изображений',
+			'ntfsmth'     : 'Занят важным делом',
+			'ntfloadimg'  : 'Загрузка изображения',
+			'ntfnetmount' : 'Подключение сетевого диска', // added 18.04.2012
+			'ntfnetunmount': 'Отключение сетевого диска', // from v2.1 added 30.04.2012
+			'ntfdim'      : 'Получение размеров изображения', // added 20.05.2013
+			'ntfreaddir'  : 'Чтение информации о папке', // from v2.1 added 01.07.2013
+			'ntfurl'      : 'Получение URL ссылки', // from v2.1 added 11.03.2014
+			'ntfchmod'    : 'Изменение прав доступа к файлу', // from v2.1 added 20.6.2015
+			'ntfpreupload': 'Проверка измени загруженного файла', // from v2.1 added 31.11.2015
+			'ntfzipdl'    : 'Создание файла для скачки', // from v2.1.7 added 23.1.2016
+			'ntfparents'  : 'Получение информации о пути', // from v2.1.17 added 2.11.2016
+			'ntfchunkmerge': 'Обработка загруженного файла', // from v2.1.17 added 2.11.2016
+			'ntftrash'    : 'Перемещение в корзину', // from v2.1.24 added 2.5.2017
+			'ntfrestore'  : 'Восстановление из корзины', // from v2.1.24 added 3.5.2017
+			'ntfchkdir'   : 'Проверка папки назначения', // from v2.1.24 added 3.5.2017
+			'ntfundo'     : 'Отмена предыдущей операции', // from v2.1.27 added 31.07.2017
+			'ntfredo'     : 'Восстановление предыдущей операции', // from v2.1.27 added 31.07.2017
+
+			/*********************************** volumes *********************************/
+			'volume_Trash' : 'Корзина', //from v2.1.24 added 29.4.2017
+
+			/************************************ dates **********************************/
+			'dateUnknown' : 'неизвестно',
+			'Today'       : 'Сегодня',
+			'Yesterday'   : 'Вчера',
+			'msJan'       : 'Янв',
+			'msFeb'       : 'Фев',
+			'msMar'       : 'Мар',
+			'msApr'       : 'Апр',
+			'msMay'       : 'Май',
+			'msJun'       : 'Июн',
+			'msJul'       : 'Июл',
+			'msAug'       : 'Авг',
+			'msSep'       : 'Сен',
+			'msOct'       : 'Окт',
+			'msNov'       : 'Ноя',
+			'msDec'       : 'Дек',
+			'January'     : 'Январь',
+			'February'    : 'Февраль',
+			'March'       : 'Март',
+			'April'       : 'Апрель',
+			'May'         : 'Май',
+			'June'        : 'Июнь',
+			'July'        : 'Июль',
+			'August'      : 'Август',
+			'September'   : 'Сентябрь',
+			'October'     : 'Октябрь',
+			'November'    : 'Ноябрь',
+			'December'    : 'Декабрь',
+			'Sunday'      : 'Воскресенье',
+			'Monday'      : 'Понедельник',
+			'Tuesday'     : 'Вторник',
+			'Wednesday'   : 'Среда',
+			'Thursday'    : 'Четверг',
+			'Friday'      : 'Пятница',
+			'Saturday'    : 'Суббота',
+			'Sun'         : 'Вск',
+			'Mon'         : 'Пнд',
+			'Tue'         : 'Втр',
+			'Wed'         : 'Срд',
+			'Thu'         : 'Чтв',
+			'Fri'         : 'Птн',
+			'Sat'         : 'Сбт',
+
+			/******************************** sort variants ********************************/
+			'sortname'          : 'по имени',
+			'sortkind'          : 'по типу',
+			'sortsize'          : 'по размеру',
+			'sortdate'          : 'по дате',
+			'sortFoldersFirst'  : 'Папки в начале',
+			'sortperm'          : 'по разрешениям', // from v2.1.13 added 13.06.2016
+			'sortmode'          : 'по режиму',       // from v2.1.13 added 13.06.2016
+			'sortowner'         : 'по владельцу',      // from v2.1.13 added 13.06.2016
+			'sortgroup'         : 'по группе',      // from v2.1.13 added 13.06.2016
+			'sortAlsoTreeview'  : 'Также и дерево каталогов',  // from v2.1.15 added 01.08.2016
+
+			/********************************** new items **********************************/
+			'untitled file.txt' : 'НовыйФайл.txt', // added 10.11.2015
+			'untitled folder'   : 'НоваяПапка',   // added 10.11.2015
+			'Archive'           : 'НовыйАрхив',  // from v2.1 added 10.11.2015
+
+			/********************************** messages **********************************/
+			'confirmReq'      : 'Необходимо подтверждение',
+			'confirmRm'       : 'Вы уверены, что хотите удалить файлы?<br>Действие необратимо!',
+			'confirmRepl'     : 'Заменить старый файл новым?',
+			'confirmRest'     : 'Заменить существующий файл файлом из корзины?', // fromv2.1.24 added 5.5.2017
+			'confirmConvUTF8' : 'Не UTF-8<br/>Сконвертировать в UTF-8?<br/>Данные станут UTF-8 при сохранении после конвертации.', // from v2.1 added 08.04.2014
+			'confirmNonUTF8'  : 'Невозможно определить кодировку файла. Необходима предварительная конвертация файла в UTF-8 для дальнейшего редактирования.<br/>Выберите кодировку файла.', // from v2.1.19 added 28.11.2016
+			'confirmNotSave'  : 'Произошли изменения.<br/>Если не сохраните изменения, то потеряете их.', // from v2.1 added 15.7.2015
+			'confirmTrash'    : 'Вы уверены, что хотите переместить файлы в корзину?', //from v2.1.24 added 29.4.2017
+			'apllyAll'        : 'Применить для всех',
+			'name'            : 'Имя',
+			'size'            : 'Размер',
+			'perms'           : 'Доступ',
+			'modify'          : 'Изменен',
+			'kind'            : 'Тип',
+			'read'            : 'чтение',
+			'write'           : 'запись',
+			'noaccess'        : 'нет доступа',
+			'and'             : 'и',
+			'unknown'         : 'неизвестно',
+			'selectall'       : 'Выбрать все файлы',
+			'selectfiles'     : 'Выбрать файл(ы)',
+			'selectffile'     : 'Выбрать первый файл',
+			'selectlfile'     : 'Выбрать последний файл',
+			'viewlist'        : 'В виде списка',
+			'viewicons'       : 'В виде иконок',
+			'places'          : 'Избранное',
+			'calc'            : 'Вычислить',
+			'path'            : 'Путь',
+			'aliasfor'        : 'Указывает на',
+			'locked'          : 'Защита',
+			'dim'             : 'Размеры',
+			'files'           : 'Файлы',
+			'folders'         : 'Папки',
+			'items'           : 'Объекты',
+			'yes'             : 'да',
+			'no'              : 'нет',
+			'link'            : 'Ссылка',
+			'searcresult'     : 'Результаты поиска',
+			'selected'        : 'выбрано',
+			'about'           : 'О программе',
+			'shortcuts'       : 'Горячие клавиши',
+			'help'            : 'Помощь',
+			'webfm'           : 'Файловый менеджер для Web',
+			'ver'             : 'Версия',
+			'protocolver'     : 'версия протокола',
+			'homepage'        : 'Сайт проекта',
+			'docs'            : 'Документация',
+			'github'          : 'Форкните на Github',
+			'twitter'         : 'Следите в twitter',
+			'facebook'        : 'Присоединяйтесь на facebook',
+			'team'            : 'Команда',
+			'chiefdev'        : 'ведущий разработчик',
+			'developer'       : 'разработчик',
+			'contributor'     : 'участник',
+			'maintainer'      : 'сопровождение проекта',
+			'translator'      : 'переводчик',
+			'icons'           : 'Иконки',
+			'dontforget'      : 'и не забудьте взять своё полотенце',
+			'shortcutsof'     : 'Горячие клавиши отключены',
+			'dropFiles'       : 'Перетащите файлы сюда',
+			'or'              : 'или',
+			'selectForUpload' : 'Выбрать файлы для загрузки',
+			'moveFiles'       : 'Переместить файлы',
+			'copyFiles'       : 'Скопировать файлы',
+			'restoreFiles'    : 'Восстановить файлы', // from v2.1.24 added 5.5.2017
+			'rmFromPlaces'    : 'Удалить из избранного',
+			'aspectRatio'     : 'Соотношение сторон',
+			'scale'           : 'Масштаб',
+			'width'           : 'Ширина',
+			'height'          : 'Высота',
+			'resize'          : 'Изменить размер',
+			'crop'            : 'Обрезать',
+			'rotate'          : 'Повернуть',
+			'rotate-cw'       : 'Повернуть на 90 градусов по часовой стрелке',
+			'rotate-ccw'      : 'Повернуть на 90 градусов против часовой стрелке',
+			'degree'          : '°',
+			'netMountDialogTitle' : 'Подключить сетевой диск', // added 18.04.2012
+			'protocol'            : 'Протокол', // added 18.04.2012
+			'host'                : 'Хост', // added 18.04.2012
+			'port'                : 'Порт', // added 18.04.2012
+			'user'                : 'Пользователь', // added 18.04.2012
+			'pass'                : 'Пароль', // added 18.04.2012
+			'confirmUnmount'      : 'Вы хотите отключить $1?',  // from v2.1 added 30.04.2012
+			'dropFilesBrowser': 'Перетащите или вставьте файлы из браузера', // from v2.1 added 30.05.2012
+			'dropPasteFiles'  : 'Перетащите или вставьте файлы и ссылки сюда', // from v2.1 added 07.04.2014
+			'encoding'        : 'Кодировка', // from v2.1 added 19.12.2014
+			'locale'          : 'Локаль',   // from v2.1 added 19.12.2014
+			'searchTarget'    : 'Цель: $1',                // from v2.1 added 22.5.2015
+			'searchMime'      : 'Поиск по введенному MIME типу', // from v2.1 added 22.5.2015
+			'owner'           : 'Владелец', // from v2.1 added 20.6.2015
+			'group'           : 'Группа', // from v2.1 added 20.6.2015
+			'other'           : 'Остальные', // from v2.1 added 20.6.2015
+			'execute'         : 'Исполнить', // from v2.1 added 20.6.2015
+			'perm'            : 'Разрешение', // from v2.1 added 20.6.2015
+			'mode'            : 'Режим', // from v2.1 added 20.6.2015
+			'emptyFolder'     : 'Папка пуста', // from v2.1.6 added 30.12.2015
+			'emptyFolderDrop' : 'Папка пуста\\A Перетащите чтобы добавить', // from v2.1.6 added 30.12.2015
+			'emptyFolderLTap' : 'Папка пуста\\A Долгое нажатие чтобы добавить', // from v2.1.6 added 30.12.2015
+			'quality'         : 'Качество', // from v2.1.6 added 5.1.2016
+			'autoSync'        : 'Авто синхронизация',  // from v2.1.6 added 10.1.2016
+			'moveUp'          : 'Передвинуть вверх',  // from v2.1.6 added 18.1.2016
+			'getLink'         : 'Получить URL ссылку', // from v2.1.7 added 9.2.2016
+			'selectedItems'   : 'Выбранные объекты ($1)', // from v2.1.7 added 2.19.2016
+			'folderId'        : 'ID папки', // from v2.1.10 added 3.25.2016
+			'offlineAccess'   : 'Позволить автономный доступ', // from v2.1.10 added 3.25.2016
+			'reAuth'          : 'Авторизоваться повторно', // from v2.1.10 added 3.25.2016
+			'nowLoading'      : 'Загружается...', // from v2.1.12 added 4.26.2016
+			'openMulti'       : 'Открыть несколько файлов', // from v2.1.12 added 5.14.2016
+			'openMultiConfirm': 'Вы пытаетесь открыть $1 файл(а/ов). Вы уверены, что хотите открыть их в браузере?', // from v2.1.12 added 5.14.2016
+			'emptySearch'     : 'Ничего не найдено', // from v2.1.12 added 5.16.2016
+			'editingFile'     : 'Это редактируемый файл.', // from v2.1.13 added 6.3.2016
+			'hasSelected'     : 'Вы выбрали $1 файл(-ов).', // from v2.1.13 added 6.3.2016
+			'hasClipboard'    : 'У вас $1 файл(-ов) в буфере обмена.', // from v2.1.13 added 6.3.2016
+			'incSearchOnly'   : 'Инкрементный поиск возможен только из текущего вида.', // from v2.1.13 added 6.30.2016
+			'reinstate'       : 'Восстановить', // from v2.1.15 added 3.8.2016
+			'complete'        : '$1 завершен', // from v2.1.15 added 21.8.2016
+			'contextmenu'     : 'Контекстное меню', // from v2.1.15 added 9.9.2016
+			'pageTurning'     : 'Переключение страницы', // from v2.1.15 added 10.9.2016
+			'volumeRoots'     : 'Корни томов', // from v2.1.16 added 16.9.2016
+			'reset'           : 'Сбросить', // from v2.1.16 added 1.10.2016
+			'bgcolor'         : 'Фоновый цвет', // from v2.1.16 added 1.10.2016
+			'colorPicker'     : 'Выбор цвета', // from v2.1.16 added 1.10.2016
+			'8pxgrid'         : '8px сетка', // from v2.1.16 added 4.10.2016
+			'enabled'         : 'Включено', // from v2.1.16 added 4.10.2016
+			'disabled'        : 'Отключено', // from v2.1.16 added 4.10.2016
+			'emptyIncSearch'  : 'Ничего не найдено в текущем виде.\\AНажмите [Enter] для развертывания цели поиска.', // from v2.1.16 added 5.10.2016
+			'emptyLetSearch'  : 'Поиск по первому символу не дал результатов в текущем виде.', // from v2.1.23 added 24.3.2017
+			'textLabel'       : 'Текстовая метка', // from v2.1.17 added 13.10.2016
+			'minsLeft'        : '$1 минут осталось', // from v2.1.17 added 13.11.2016
+			'openAsEncoding'  : 'Переоткрыть с выбранной кодировкой', // from v2.1.19 added 2.12.2016
+			'saveAsEncoding'  : 'Сохранить с выбранной кодировкой', // from v2.1.19 added 2.12.2016
+			'selectFolder'    : 'Выбрать папку', // from v2.1.20 added 13.12.2016
+			'firstLetterSearch': 'Поиск по первому символу', // from v2.1.23 added 24.3.2017
+			'presets'         : 'Пресеты', // from v2.1.25 added 26.5.2017
+			'tooManyToTrash'  : 'Слишком много файлов для перемещения в корзину.', // from v2.1.25 added 9.6.2017
+			'TextArea'        : 'Текстовая область', // from v2.1.25 added 14.6.2017
+			'folderToEmpty'   : 'Очистить папку "$1".', // from v2.1.25 added 22.6.2017
+			'filderIsEmpty'   : 'Нет файлов в паке "$1".', // from v2.1.25 added 22.6.2017
+			'preference'      : 'Настройки', // from v2.1.26 added 28.6.2017
+			'language'        : 'Язык', // from v2.1.26 added 28.6.2017
+			'clearBrowserData': 'Сбросить настройки для этого браузера', // from v2.1.26 added 28.6.2017
+			'toolbarPref'     : 'Настройки панели', // from v2.1.27 added 2.8.2017
+			'charsLeft'       : '... еще символов: $1.',  // from v2.1.29 added 30.8.2017
+			'sum'             : 'Общий размер', // from v2.1.29 added 28.9.2017
+
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : 'Неизвестный',
+			'kindRoot'        : 'Корень тома', // from v2.1.16 added 16.10.2016
+			'kindFolder'      : 'Папка',
+			'kindSelects'     : 'Выбор', // from v2.1.29 added 29.8.2017
+			'kindAlias'       : 'Ссылка',
+			'kindAliasBroken' : 'Битая ссылка',
+			// applications
+			'kindApp'         : 'Приложение',
+			'kindPostscript'  : 'Документ Postscript',
+			'kindMsOffice'    : 'Документ Microsoft Office',
+			'kindMsWord'      : 'Документ Microsoft Word',
+			'kindMsExcel'     : 'Документ Microsoft Excel',
+			'kindMsPP'        : 'Презентация Microsoft Powerpoint',
+			'kindOO'          : 'Документ Open Office',
+			'kindAppFlash'    : 'Приложение Flash',
+			'kindPDF'         : 'Документ PDF',
+			'kindTorrent'     : 'Файл Bittorrent',
+			'kind7z'          : 'Архив 7z',
+			'kindTAR'         : 'Архив TAR',
+			'kindGZIP'        : 'Архив GZIP',
+			'kindBZIP'        : 'Архив BZIP',
+			'kindXZ'          : 'Архив XZ',
+			'kindZIP'         : 'Архив ZIP',
+			'kindRAR'         : 'Архив RAR',
+			'kindJAR'         : 'Файл Java JAR',
+			'kindTTF'         : 'Шрифт True Type',
+			'kindOTF'         : 'Шрифт Open Type',
+			'kindRPM'         : 'Пакет RPM',
+			// texts
+			'kindText'        : 'Текстовый документ',
+			'kindTextPlain'   : 'Простой текст',
+			'kindPHP'         : 'Исходник PHP',
+			'kindCSS'         : 'Таблицы стилей CSS',
+			'kindHTML'        : 'Документ HTML',
+			'kindJS'          : 'Исходник Javascript',
+			'kindRTF'         : 'Rich Text Format',
+			'kindC'           : 'Исходник C',
+			'kindCHeader'     : 'Заголовочный файл C',
+			'kindCPP'         : 'Исходник C++',
+			'kindCPPHeader'   : 'Заголовочный файл C++',
+			'kindShell'       : 'Скрипт Unix shell',
+			'kindPython'      : 'Исходник Python',
+			'kindJava'        : 'Исходник Java',
+			'kindRuby'        : 'Исходник Ruby',
+			'kindPerl'        : 'Исходник Perl',
+			'kindSQL'         : 'Исходник SQL',
+			'kindXML'         : 'Документ XML',
+			'kindAWK'         : 'Исходник AWK',
+			'kindCSV'         : 'Текст с разделителями',
+			'kindDOCBOOK'     : 'Документ Docbook XML',
+			'kindMarkdown'    : 'Текст Markdown', // added 20.7.2015
+			// images
+			'kindImage'       : 'Изображение',
+			'kindBMP'         : 'Изображение BMP',
+			'kindJPEG'        : 'Изображение JPEG',
+			'kindGIF'         : 'Изображение GIF',
+			'kindPNG'         : 'Изображение PNG',
+			'kindTIFF'        : 'Изображение TIFF',
+			'kindTGA'         : 'Изображение TGA',
+			'kindPSD'         : 'Изображение Adobe Photoshop',
+			'kindXBITMAP'     : 'Изображение X bitmap',
+			'kindPXM'         : 'Изображение Pixelmator',
+			// media
+			'kindAudio'       : 'Аудио файл',
+			'kindAudioMPEG'   : 'Аудио MPEG',
+			'kindAudioMPEG4'  : 'Аудио MPEG-4',
+			'kindAudioMIDI'   : 'Аудио MIDI',
+			'kindAudioOGG'    : 'Аудио Ogg Vorbis',
+			'kindAudioWAV'    : 'Аудио WAV',
+			'AudioPlaylist'   : 'Плейлист MP3',
+			'kindVideo'       : 'Видео файл',
+			'kindVideoDV'     : 'Видео DV',
+			'kindVideoMPEG'   : 'Видео MPEG',
+			'kindVideoMPEG4'  : 'Видео MPEG-4',
+			'kindVideoAVI'    : 'Видео AVI',
+			'kindVideoMOV'    : 'Видео Quick Time',
+			'kindVideoWM'     : 'Видео Windows Media',
+			'kindVideoFlash'  : 'Видео Flash',
+			'kindVideoMKV'    : 'Видео Matroska',
+			'kindVideoOGG'    : 'Видео Ogg'
+		}
+	};
+}));
+

+ 518 - 0
src/assets/js/i18n/elfinder.si.js

@@ -0,0 +1,518 @@
+/**
+ * Sinhala translation
+ * @author CodeLyokoXtEAM <XcodeLyokoTEAM@gmail.com>
+ * @version 2017-09-05
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.si = {
+		translator : 'CodeLyokoXtEAM &lt;XcodeLyokoTEAM@gmail.com&gt;',
+		language   : 'Sinhala',
+		direction  : 'ltr',
+		dateFormat : 'Y.m.d h:i A', // Mar 13, 2012 05:27 PM
+		fancyDateFormat : '$1 h:i A', // will produce smth like: Today 12:25 PM
+		nonameDateFormat : 'Ymd-His', // to apply if upload file is noname: 120513172700
+		messages   : {
+
+			/********************************** errors **********************************/
+			'error'                : 'දෝෂයකි.',
+			'errUnknown'           : 'නොදන්නා දෝෂයකි.',
+			'errUnknownCmd'        : 'නොදන්නා විධානයකි.',
+			'errJqui'              : 'වලංගු නොවන jQuery UI සැකැස්මකි. තේරිය හැකි, ඇදගෙන යාම සහ ඇද දැමිය හැකි කොටස් ඇතුළත් කළ යුතුය.',
+			'errNode'              : 'ElFinder විසින් DOM Element නිර්මාණය කිරීමට අවශ්‍යව අැත.',
+			'errURL'               : 'වලංගු නොවන elFinder සැකැස්මකි! URL විකල්පය සැකසා නැත.',
+			'errAccess'            : 'භාවිතය අත්හිටුවා ඇත.',
+			'errConnect'           : 'පසුබිම(Backend) වෙත සම්බන්ධ වීමට නොහැකිය.',
+			'errAbort'             : 'සම්බන්ධතාවය වසාදමා ඇත.',
+			'errTimeout'           : 'සම්බන්ධතා කල් ඉකුත්වී ඇත.',
+			'errNotFound'          : 'පසුබිම(Backend) සොයාගත නොහැකි විය.',
+			'errResponse'          : 'වලංගු නොවන පසුබිම(Backend) ප්‍රතිචාරය.',
+			'errConf'              : 'වලංගු නොවන Backend සැකැස්මකි.',
+			'errJSON'              : 'PHP JSON මොඩියුලය ස්ථාපනය කර නැත.',
+			'errNoVolumes'         : 'කියවිය හැකි එ්කක(volumes) නොමැත.',
+			'errCmdParams'         : '"$1" නම් විධානය වලංගු නොවන පරාමිතියකි.',
+			'errDataNotJSON'       : 'JSON දත්ත නොවේ.',
+			'errDataEmpty'         : 'හිස් දත්තයකි.',
+			'errCmdReq'            : 'Backend සඳහා ඉල්ලන ලද විධානයේ නම අවශ්‍ය වේ.',
+			'errOpen'              : '"$1" විවෘත කළ නොහැක.',
+			'errNotFolder'         : 'අායිත්තම(object) ෆොල්ඩරයක් නොවේ.',
+			'errNotFile'           : 'අායිත්තම(object) ගොනුවක් නොවේ.',
+			'errRead'              : '"$1" කියවීමට නොහැක.',
+			'errWrite'             : '"$1" තුල ලිවීමට නොහැකිය.',
+			'errPerm'              : 'අවසරය නොමැත.',
+			'errLocked'            : '"$1" අගුළු දමා ඇති අතර එය නැවත නම් කිරීම, සම්පූර්ණයෙන් විස්ථාපනය කිරීම හෝ ඉවත් කිරීම කළ නොහැක.',
+			'errExists'            : '"$1" නම් ගොනුව දැනටමත් පවතී.',
+			'errInvName'           : 'ගොනු නම වලංගු නොවේ.',
+			'errInvDirname'        : 'ෆෝල්ඩර් නම වලංගු නොවේ.',  // from v2.1.24 added 12.4.2017
+			'errFolderNotFound'    : 'ෆෝල්ඩරය හමු නොවිණි.',
+			'errFileNotFound'      : 'ගොනුව හමු නොවිණි.',
+			'errTrgFolderNotFound' : 'ඉලක්කගත ෆෝල්ඩරය "$1" හමු නොවිනි.',
+			'errPopup'             : 'බ්‍රවුසරය උත්පතන කවුළුව විවෘත කිරීම වළක්වයි. ගොනු විවෘත කිරීම සඳහා බ්‍රවුසරයේ විකල්ප තුළ එය සක්රිය කරන්න.',
+			'errMkdir'             : '"$1" ෆෝල්ඩරය සෑදීමට නොහැකිය.',
+			'errMkfile'            : '"$1" ගොනුව සෑදිය නොහැක.',
+			'errRename'            : '"$1" නැවත නම් කිරීමට නොහැකි විය.',
+			'errCopyFrom'          : '"$1" volume යෙන් ගොනු පිටපත් කිරීම තහනම්ය.',
+			'errCopyTo'            : '"$1" volume යට ගොනු පිටපත් කිරීම තහනම්ය.',
+			'errMkOutLink'         : 'volume root යෙන් පිටතට සබැඳිය(link) නිර්මාණය කිරීමට නොහැකි විය.', // from v2.1 added 03.10.2015
+			'errUpload'            : 'උඩුගත(upload) කිරීමේ දෝෂයකි.',  // old name - errUploadCommon
+			'errUploadFile'        : '"$1" උඩුගත(upload) කිරීමට නොහැකි විය.', // old name - errUpload
+			'errUploadNoFiles'     : 'උඩුගත(upload) කිරීම සඳහා ගොනු කිසිවක් සොයාගත නොහැකි විය.',
+			'errUploadTotalSize'   : 'දත්ත අවසර දී අැති උපරිම ප්‍රමාණය ඉක්මවා ඇත.', // old name - errMaxSize
+			'errUploadFileSize'    : 'ගොනු අවසර දී අැති උපරිම ප්‍රමාණය ඉක්මවා ඇත.', //  old name - errFileMaxSize
+			'errUploadMime'        : 'ගොනු වර්ගයට අවසර නැත.',
+			'errUploadTransfer'    : '"$1" ව මාරු කිරීමේ දෝෂයකි.',
+			'errUploadTemp'        : 'upload කිරීම සඳහා තාවකාලික ගොනුව සෑදිය නොහැක.', // from v2.1 added 26.09.2015
+			'errNotReplace'        : '"$1" අායිත්තම(object) දැනටමත් මෙම ස්ථානයේ පවතී, වෙනත් වර්ගයකිනි ප්‍රතිස්ථාපනය කළ නොහැක.', // new
+			'errReplace'           : '"$1" ප්‍රතිස්ථාපනය කළ නොහැක.',
+			'errSave'              : '"$1" සුරැකීමට නොහැක.',
+			'errCopy'              : '"$1" පිටපත් කිරීමට නොහැක.',
+			'errMove'              : '"$1" සම්පූර්ණයෙන් විස්ථාපනය කිරීමට නොහැක.',
+			'errCopyInItself'      : '"$1" තුලට පිටපත් කිරීමට නොහැක.',
+			'errRm'                : '"$1" ඉවත් කිරීමට නොහැකි විය.',
+			'errTrash'             : 'කුණු-කූඩය තුලට දැමීමට නොහැක.', // from v2.1.24 added 30.4.2017
+			'errRmSrc'             : 'මූලාශ්‍රය ගොනු(ව) ඉවත් කළ නොහැක.',
+			'errExtract'           : '"$1" වෙතින් ගොනු දිග හැරීමට නොහැක.',
+			'errArchive'           : 'සංරක්ෂිතය සෑදීමට නොහැකි විය.',
+			'errArcType'           : 'නොගැලපෙන සංරක්ෂණ වර්ගයකි.',
+			'errNoArchive'         : 'ගොනුව නොගැලපෙන සංරක්ෂණ වර්ගයක් හෝ සංරක්ෂිතයක් නොවේ.',
+			'errCmdNoSupport'      : 'පසුබිම(Backend) මෙම විධානය නොදනී.',
+			'errReplByChild'       : '"$1" ෆෝල්ඩරය එහිම අඩංගු අයිතමයක් මගින් ප්‍රතිස්ථාපනය කළ නොහැක.',
+			'errArcSymlinks'       : 'ආරක්ෂිත හේතුව නිසා අනුමත නොකෙරෙන සබැඳි සම්බන්දතා හෝ ලිපිගොනු නම් අඩංගු බැවින් සංරක්ෂිතය දිග හැරීම කිරීමට ඉඩ නොදෙන.', // edited 24.06.2012
+			'errArcMaxSize'        : 'සංරක්ෂිතය ලිපිගොනු උපරිම ප්‍රමාණය ඉක්මවා ඇත.',
+			'errResize'            : 'ප්‍රතිප්‍රමාණය කිරීමට නොහැකි විය.',
+			'errResizeDegree'      : 'වලංගු නොවන භ්‍රමණ කෝණයකි.',  // added 7.3.2013
+			'errResizeRotate'      : 'රූපය භ්‍රමණය කිරීමට නොහැකි විය.',  // added 7.3.2013
+			'errResizeSize'        : 'රූපයේ ප්‍රමාණය වලංගු නොවේ.',  // added 7.3.2013
+			'errResizeNoChange'    : 'රූපයේ ප්‍රමාණය වෙනස් නොවුණි.',  // added 7.3.2013
+			'errUsupportType'      : 'නොගැලපෙන ගොනු වර්ගයකි.',
+			'errNotUTF8Content'    : '"$1" ගොනුව UTF-8 හි නොමැති අතර සංස්කරණය කළ නොහැක.',  // added 9.11.2011
+			'errNetMount'          : '"$1" සවි(mount) කිරීමට නොහැක.', // added 17.04.2012
+			'errNetMountNoDriver'  : 'ප්‍රොටොකෝලය(protocol) නොගැලපේ.',     // added 17.04.2012
+			'errNetMountFailed'    : 'සවි කිරීම(mount කිරීම) අසාර්ථක විය.',         // added 17.04.2012
+			'errNetMountHostReq'   : 'ධාරකය(Host) අවශ්‍ය වේ.', // added 18.04.2012
+			'errSessionExpires'    : 'ඔබේ අක්‍රියතාව හේතුවෙන් සැසිය(session) කල් ඉකුත් වී ඇත.',
+			'errCreatingTempDir'   : 'තාවකාලික ඩිරෙක්ටරයක්(directory) ​​සෑදිය නොහැක: "$1"',
+			'errFtpDownloadFile'   : 'FTP වලින් ගොනුව බාගත(download) කිරීමට නොහැකි විය: "$1"',
+			'errFtpUploadFile'     : 'ගොනුව FTP වෙත උඩුගත(upload) කිරීමට නොහැකි විය: "$1"',
+			'errFtpMkdir'          : 'FTP මත දුරස්ථ නාමාවලියක්(remote directory) නිර්මාණය කිරීමට නොහැකි විය: "$1"',
+			'errArchiveExec'       : 'ගොනු සංරක්ෂණය(archiving) කිරීමේදී දෝෂයක් ඇතිවිය: "$1"',
+			'errExtractExec'       : 'ගොනු දිගහැරීමේදී(extracting) දෝෂයක් ඇතිවිය: "$1"',
+			'errNetUnMount'        : 'විසන්ධි කිරීමට(unmount) නොහැක.', // from v2.1 added 30.04.2012
+			'errConvUTF8'          : 'UTF-8 වෙත පරිවර්තනය කළ නොහැක.', // from v2.1 added 08.04.2014
+			'errFolderUpload'      : 'ඔබ ෆෝල්ඩරය උඩුගත(upload) කිරීමට කැමති නම් නවීන බ්‍රවුසරයකින් උත්සාහ කරන්න.', // from v2.1 added 26.6.2015
+			'errSearchTimeout'     : '"$1" සෙවීම කල් ඉකුත්වී ඇත. සෙවුම් ප්‍රතිඵල අර්ධ වශයෙන් දිස්වේ.', // from v2.1 added 12.1.2016
+			'errReauthRequire'     : 'නැවත බලය(Re-authorization) ලබා දීම අවශ්‍ය වේ.', // from v2.1.10 added 24.3.2016
+			'errMaxTargets'        : 'තෝරා ගත හැකි උපරිම අයිතම සංඛ්‍යාව $1 ක් වේ.', // from v2.1.17 added 17.10.2016
+			'errRestore'           : 'කුණු කූඩයෙන් නැවත ලබා ගත නොහැක. යළි පිහිටුවීමේ ගමනාන්තය(restore destination) හඳුනාගත නොහැක.', // from v2.1.24 added 3.5.2017
+			'errEditorNotFound'    : 'මෙම ගොනු වර්ගයේ සංස්කාරකය හමු නොවිණි.', // from v2.1.25 added 23.5.2017
+			'errServerError'       : 'සේවාදායකයේ පැත්තෙන්(server side) දෝශයක් ඇතිවිය.', // from v2.1.25 added 16.6.2017
+			'errEmpty'             : '"$1" ෆෝල්ඩරය හිස් කිරීමට නොහැක.', // from v2.1.25 added 22.6.2017
+
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'සංරක්ෂිතය(archive) නිර්මාණය කරන්න',
+			'cmdback'      : 'ආපසු',
+			'cmdcopy'      : 'පිටපත් කරන්න',
+			'cmdcut'       : 'මුළුමනින්ම පිටපත් කරන්න(Cut)',
+			'cmddownload'  : 'බාගත කරන්න(Download)',
+			'cmdduplicate' : 'අනුපිටපත් කරන්න(Duplicate)',
+			'cmdedit'      : 'ගොනුව සංස්කරණය කරන්න',
+			'cmdextract'   : 'සංරක්ෂිතයේ ගොනු දිගහරින්න(Extract)',
+			'cmdforward'   : 'ඉදිරියට',
+			'cmdgetfile'   : 'ගොනු තෝරන්න',
+			'cmdhelp'      : 'මෙම මෘදුකාංගය පිළිබඳව',
+			'cmdhome'      : 'නිවහන(Home)',
+			'cmdinfo'      : 'තොරතුරු ලබාගන්න',
+			'cmdmkdir'     : 'අළුත් ෆෝල්ඩරයක්',
+			'cmdmkdirin'   : 'අළුත් ෆෝල්ඩරයක් තුළට', // from v2.1.7 added 19.2.2016
+			'cmdmkfile'    : 'අළුත් ලිඛිත(text) ගොනුවක්',
+			'cmdopen'      : 'විවෘත කරන්න',
+			'cmdpaste'     : 'දමන්න(Paste)',
+			'cmdquicklook' : 'පූර්ව දර්ශනයක්(Preview)',
+			'cmdreload'    : 'නැවත අළුත් කරන්න(Reload)',
+			'cmdrename'    : 'නම වෙනස් කරන්න',
+			'cmdrm'        : 'මකන්න',
+			'cmdtrash'     : 'කුණු කූඩයට දමන්න', //from v2.1.24 added 29.4.2017
+			'cmdrestore'   : 'යළි පිහිටුවන්න(Restore)', //from v2.1.24 added 3.5.2017
+			'cmdsearch'    : 'ගොනු සොයන්න',
+			'cmdup'        : 'ප්‍ර්‍රධාන නාමාවලිය(parent directory) වෙත යන්න',
+			'cmdupload'    : 'ගොනු උඩුගත(Upload) කරන්න',
+			'cmdview'      : 'දර්ශනය(View)',
+			'cmdresize'    : 'ප්‍රථිප්‍රමාණය සහ භ්‍රමණය',
+			'cmdsort'      : 'වර්ගීකරණය කරන්න',
+			'cmdnetmount'  : 'ජාල එ්කකයක් සවි කරන්න(Mount network volume)', // added 18.04.2012
+			'cmdnetunmount': 'ගලවන්න(Unmount)', // from v2.1 added 30.04.2012
+			'cmdplaces'    : 'පහසු ස්ථානයට(To Places)', // added 28.12.2014
+			'cmdchmod'     : 'ක්‍රමය වෙනස් කරන්න', // from v2.1 added 20.6.2015
+			'cmdopendir'   : 'ෆෝල්ඩරය විවෘත කරන්න', // from v2.1 added 13.1.2016
+			'cmdcolwidth'  : 'නැවත තීරු පළල පිහිටුවන්න', // from v2.1.13 added 12.06.2016
+			'cmdfullscreen': 'පුළුල් තිරය', // from v2.1.15 added 03.08.2016
+			'cmdmove'      : 'මාරු කරන්න(Move)', // from v2.1.15 added 21.08.2016
+			'cmdempty'     : 'ෆෝල්ඩරය හිස් කරන්න', // from v2.1.25 added 22.06.2017
+			'cmdundo'      : 'නිෂ්ප්‍රභ කරන්න', // from v2.1.27 added 31.07.2017
+			'cmdredo'      : 'නැවත කරන්න', // from v2.1.27 added 31.07.2017
+			'cmdpreference': 'අභිමතයන් (Preferences)', // from v2.1.27 added 03.08.2017
+			'cmdselectall' : 'සියල්ල තෝරන්න', // from v2.1.28 added 15.08.2017
+			'cmdselectnone': 'කිසිවක් තෝරන්න එපා', // from v2.1.28 added 15.08.2017
+			'cmdselectinvert': 'විරුද්ධ අාකාරයට තෝරන්න', // from v2.1.28 added 15.08.2017
+
+			/*********************************** buttons ***********************************/
+			'btnClose'  : 'වසන්න',
+			'btnSave'   : 'සුරකින්න',
+			'btnRm'     : 'ඉවත් කරන්න',
+			'btnApply'  : 'යොදන්න(Apply)',
+			'btnCancel' : 'අවලංගු කරන්න',
+			'btnNo'     : 'නැත',
+			'btnYes'    : 'ඔව්',
+			'btnMount'  : 'සවිකිරීම(Mount)',  // added 18.04.2012
+			'btnApprove': 'කරුණාකර $1 අනුමත කරන්න', // from v2.1 added 26.04.2012
+			'btnUnmount': 'ගලවන්න(Unmount)', // from v2.1 added 30.04.2012
+			'btnConv'   : 'පරිවර්තනය කරන්න', // from v2.1 added 08.04.2014
+			'btnCwd'    : 'මෙතන',      // from v2.1 added 22.5.2015
+			'btnVolume' : 'එ්කකය(Volume)',    // from v2.1 added 22.5.2015
+			'btnAll'    : 'සියල්ල',       // from v2.1 added 22.5.2015
+			'btnMime'   : 'MIME වර්ගය', // from v2.1 added 22.5.2015
+			'btnFileName':'ගොනුවේ නම',  // from v2.1 added 22.5.2015
+			'btnSaveClose': 'සුරකින්න සහ වසන්න', // from v2.1 added 12.6.2015
+			'btnBackup' : 'උපස්ථ(Backup) කරන්න', // fromv2.1 added 28.11.2015
+			'btnRename'    : 'නම වෙනස් කරන්න',      // from v2.1.24 added 6.4.2017
+			'btnRenameAll' : 'නම වෙනස් කරන්න(සියල්ල)', // from v2.1.24 added 6.4.2017
+			'btnPrevious' : 'පෙර ($1/$2)', // from v2.1.24 added 11.5.2017
+			'btnNext'     : 'ඊළඟ ($1/$2)', // from v2.1.24 added 11.5.2017
+			'btnSaveAs'   : 'වෙනත් නමකින් සුරකිමින්(Save As)', // from v2.1.25 added 24.5.2017
+
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'ෆෝල්ඩරය විවෘත කරමින්',
+			'ntffile'     : 'ගොනුව විවෘත කරමින්',
+			'ntfreload'   : 'ෆෝල්ඩර් අන්තර්ගතය නැවත අළුත් කරමින්(Reloading)',
+			'ntfmkdir'    : 'ෆෝල්ඩරයක් නිර්මාණය කරමින්',
+			'ntfmkfile'   : 'ගොනුව නිර්මාණය කරමින්',
+			'ntfrm'       : 'ගොනු මකමින්',
+			'ntfcopy'     : 'ගොනු පිටපත් කරමින්',
+			'ntfmove'     : 'ගොනු මාරු කරමින්',
+			'ntfprepare'  : 'පවතින අයිතම පිරික්සමින්',
+			'ntfrename'   : 'ගොනු නැවත නම් කරමින්',
+			'ntfupload'   : 'ගොනු උඩුගත(uploading) කරමින්',
+			'ntfdownload' : 'ගොනු බාගත(downloading) කරමින්',
+			'ntfsave'     : 'ගොනු සුරකිමින්',
+			'ntfarchive'  : 'සංරක්ෂණය(archive) සාදමින්',
+			'ntfextract'  : 'සංරක්ෂණයෙන්(archive) ගොනු දිගහරිමින්(Extracting)',
+			'ntfsearch'   : 'ගොනු සොයමින්',
+			'ntfresize'   : 'රූප ප්‍රමාණය වෙනස් කරමින්',
+			'ntfsmth'     : 'දෙයක් කරමින්',
+			'ntfloadimg'  : 'පින්තූරය පූරණය කරමින්(Loading)',
+			'ntfnetmount' : 'ජාල එ්කකයක් සවිකරමින්(Mounting network volume)', // added 18.04.2012
+			'ntfnetunmount': 'ජාල එ්කකයක් ගලවමින්(Unmounting network volume)', // from v2.1 added 30.04.2012
+			'ntfdim'      : 'පිංතූරයේ මානය(dimension) ලබාගනිමින්', // added 20.05.2013
+			'ntfreaddir'  : 'ෆෝල්ඩරයේ තොරතුරු කියවමින්', // from v2.1 added 01.07.2013
+			'ntfurl'      : 'Getting URL of link', // from v2.1 added 11.03.2014
+			'ntfchmod'    : 'ගොනු ආකරය වෙනස් කරමින්', // from v2.1 added 20.6.2015
+			'ntfpreupload': 'උඩුගත(upload) කරන ලද ගොනු නාමය සත්‍යාපනය කරමින්(Verifying)', // from v2.1 added 31.11.2015
+			'ntfzipdl'    : 'බාගත කරගැනීම(download) සඳහා ගොනුවක් නිර්මාණය කරමින්', // from v2.1.7 added 23.1.2016
+			'ntfparents'  : 'මාර්ග(path) තොරතුරු ලබා ගනිමින්', // from v2.1.17 added 2.11.2016
+			'ntfchunkmerge': 'උඩුගත කරන ලද(uploaded) ගොනුව සකසමින්', // from v2.1.17 added 2.11.2016
+			'ntftrash'    : 'කුණු කූඩයට දමමින්', // from v2.1.24 added 2.5.2017
+			'ntfrestore'  : 'කුණු කූඩයට දැමීම යළි පිහිටුවමින්(Doing restore)', // from v2.1.24 added 3.5.2017
+			'ntfchkdir'   : 'ගමනාන්ත(destination) ෆෝල්ඩරය පරීක්ෂා කරමින්', // from v2.1.24 added 3.5.2017
+			'ntfundo'     : 'පෙර මෙහෙයුම(operation) ඉවත් කරමින්', // from v2.1.27 added 31.07.2017
+			'ntfredo'     : 'පෙර ආපසු හැරවීම යළි සැකසමින්', // from v2.1.27 added 31.07.2017
+
+			/*********************************** volumes *********************************/
+			'volume_Trash' : 'කුණු කූඩය', //from v2.1.24 added 29.4.2017
+
+			/************************************ dates **********************************/
+			'dateUnknown' : 'නොදනී',
+			'Today'       : 'අද',
+			'Yesterday'   : 'ඊයේ',
+			'msJan'       : 'ජනවා.',
+			'msFeb'       : 'පෙබ.',
+			'msMar'       : 'මාර්.',
+			'msApr'       : 'අප්‍රේ.',
+			'msMay'       : 'මැයි',
+			'msJun'       : 'ජූනි',
+			'msJul'       : 'ජුලි',
+			'msAug'       : 'අගෝ.',
+			'msSep'       : 'සැප්.',
+			'msOct'       : 'ඔක්තෝ.',
+			'msNov'       : 'නොවැ.',
+			'msDec'       : 'දෙසැ.',
+			'January'     : 'ජනවාරි',
+			'February'    : 'පෙබරවාරි',
+			'March'       : 'මාර්තු',
+			'April'       : 'අප්‍රේල්',
+			'May'         : 'මැයි',
+			'June'        : 'ජූනි',
+			'July'        : 'ජුලි',
+			'August'      : 'අගෝස්තු',
+			'September'   : 'සැප්තැම්බර්',
+			'October'     : 'ඔක්තෝම්බර්',
+			'November'    : 'නොවැම්බර්',
+			'December'    : 'දෙසැම්බර්',
+			'Sunday'      : 'ඉරිදා',
+			'Monday'      : 'සඳුදා',
+			'Tuesday'     : 'අඟහරුවාදා',
+			'Wednesday'   : 'බදාදා',
+			'Thursday'    : 'බ්‍රහස්පතින්දා',
+			'Friday'      : 'සිකුරාදා',
+			'Saturday'    : 'සෙනසුරාදා',
+			'Sun'         : 'ඉරිදා',
+			'Mon'         : 'සඳු.',
+			'Tue'         : 'අඟහ.',
+			'Wed'         : 'බදාදා',
+			'Thu'         : 'බ්‍රහස්.',
+			'Fri'         : 'සිකු.',
+			'Sat'         : 'සෙන.',
+
+			/******************************** sort variants ********************************/
+			'sortname'          : 'නම අනුව',
+			'sortkind'          : 'වර්ගය අනුව',
+			'sortsize'          : 'ප්‍රමාණය අනුව',
+			'sortdate'          : 'දිනය අනුව',
+			'sortFoldersFirst'  : 'ෆෝල්ඩර වලට පළමු තැන',
+			'sortperm'          : 'අවසරය අනුව', // from v2.1.13 added 13.06.2016
+			'sortmode'          : 'අාකාරය අනුව',       // from v2.1.13 added 13.06.2016
+			'sortowner'         : 'හිමිකරු අනුව',      // from v2.1.13 added 13.06.2016
+			'sortgroup'         : 'කණ්ඩායම අනුව',      // from v2.1.13 added 13.06.2016
+			'sortAlsoTreeview'  : 'Also Treeview',  // from v2.1.15 added 01.08.2016
+
+			/********************************** new items **********************************/
+			'untitled file.txt' : 'NewFile.txt', // added 10.11.2015
+			'untitled folder'   : 'NewFolder',   // added 10.11.2015
+			'Archive'           : 'NewArchive',  // from v2.1 added 10.11.2015
+
+			/********************************** messages **********************************/
+			'confirmReq'      : 'තහවුරු කිරීම අවශ්‍යයි',
+			'confirmRm'       : 'අයිතමයන් සදහටම ඉවත් කිරීමට අවශ්‍ය බව ඔබට විශ්වාසද?<br/>මෙය අාපසු හැරවිය නොහැකිය!',
+			'confirmRepl'     : 'පැරණි අයිතමය(item) නව එකක මගින් ප්‍රතිස්ථාපනය කරන්නද?',
+			'confirmRest'     : 'දැනට පවතින අයිතමය(item) කුණු කූඩය තුළ පවතින අයිතමය(item) මගින් ප්‍රතිස්ථාපනය කරන්නද?', // fromv2.1.24 added 5.5.2017
+			'confirmConvUTF8' : 'UTF-8 හි නොවේ<br/> UTF-8 වෙත පරිවර්තනය කරන්න ද?<br/>සුරැකීමෙන් පසු අන්තර්ගතය UTF-8 බවට පරිවර්තනය වේ.', // from v2.1 added 08.04.2014
+			'confirmNonUTF8'  : 'මෙම ගොනුවෙහි කේතන කේත(Character encoding) හඳුනාගත නොහැකි විය. සංස්කරණ කිරීමට එය තාවකාලිකව UTF-8 වෙත පරිවර්තනය කිරීම අවශ්‍ය වේ.<br/>කරුණාකර මෙම ගොනුවෙහි අක්ෂර කේතන කේත(character encoding) තෝරන්න.', // from v2.1.19 added 28.11.2016
+			'confirmNotSave'  : 'මෙය වෙනස් කර ඇත.<br/>ඔබට වෙනස්කම් සුරැකීමට නොහැකි නම් සිදු කරනු ලැබූ වෙනස්කම් අහිමි වේ.', // from v2.1 added 15.7.2015
+			'confirmTrash'    : 'කුණු කූඩය තුලට අයිතමය(item) යැවීමට ඔබට අවශ්‍ය ද?', //from v2.1.24 added 29.4.2017
+			'apllyAll'        : 'සියල්ලටම යොදන්න',
+			'name'            : 'නම',
+			'size'            : 'ප්‍රමාණය',
+			'perms'           : 'අවසරය',
+			'modify'          : 'නවීකරණය කෙරුණ ලද්දේ',
+			'kind'            : 'ජාතිය',
+			'read'            : 'කියවන්න',
+			'write'           : 'ලියන්න',
+			'noaccess'        : 'ප්‍රවේශයක් නොමැත',
+			'and'             : 'සහ',
+			'unknown'         : 'නොහඳුනයි',
+			'selectall'       : 'සියලු ගොනු තෝරන්න',
+			'selectfiles'     : 'ගොනු(ව) තෝරන්න',
+			'selectffile'     : 'පළමු ගොනුව තෝරන්න',
+			'selectlfile'     : 'අවසාන ගොනුව තෝරන්න',
+			'viewlist'        : 'ලැයිස්තු අාකාරය',
+			'viewicons'       : 'අයිකන අාකාරය',
+			'places'          : 'Places',
+			'calc'            : 'ගණනය කරන්න',
+			'path'            : 'මාර්ගය',
+			'aliasfor'        : 'Alias for',
+			'locked'          : 'අගුළු දමා ඇත',
+			'dim'             : 'මාන(Dimensions)',
+			'files'           : 'ගොනු',
+			'folders'         : 'ෆෝල්ඩර',
+			'items'           : 'අයිතම(Items)',
+			'yes'             : 'ඔව්',
+			'no'              : 'නැත',
+			'link'            : 'Link',
+			'searcresult'     : 'සෙවුම් ප්‍රතිඵල',
+			'selected'        : 'තෝරාගත් අයිතම(items)',
+			'about'           : 'මේ ගැන',
+			'shortcuts'       : 'කෙටිමං',
+			'help'            : 'උදව්',
+			'webfm'           : 'වෙබ් ගොනු කළමනාකරු',
+			'ver'             : 'අනුවාදය(version)',
+			'protocolver'     : 'ප්‍රොටොකෝලය අනුවාදය(protocol version)',
+			'homepage'        : 'Project home',
+			'docs'            : 'ලේඛනගත කිරීම',
+			'github'          : 'Fork us on Github',
+			'twitter'         : 'Follow us on twitter',
+			'facebook'        : 'Join us on facebook',
+			'team'            : 'කණ්ඩායම',
+			'chiefdev'        : 'ප්‍රධාන සංස්කරු(chief developer)',
+			'developer'       : 'සංස්කරු(developer)',
+			'contributor'     : 'දායකයා(contributor)',
+			'maintainer'      : 'නඩත්තු කරන්නා(maintainer)',
+			'translator'      : 'පරිවර්තකයා',
+			'icons'           : 'අයිකන',
+			'dontforget'      : 'and don\'t forget to take your towel',
+			'shortcutsof'     : 'කෙටිමං අක්‍රීය කර ඇත',
+			'dropFiles'       : 'ගොනු මෙතැනට ඇද දමන්න',
+			'or'              : 'හෝ',
+			'selectForUpload' : 'ගොනු තෝරන්න',
+			'moveFiles'       : 'Move items',
+			'copyFiles'       : 'Copy items',
+			'restoreFiles'    : 'Restore items', // from v2.1.24 added 5.5.2017
+			'rmFromPlaces'    : 'Remove from places',
+			'aspectRatio'     : 'දර්ශන අනුපාතය(Aspect ratio)',
+			'scale'           : 'පරිමාණය',
+			'width'           : 'පළල',
+			'height'          : 'උස',
+			'resize'          : 'ප්‍රතිප්‍රමානණය',
+			'crop'            : 'Crop',
+			'rotate'          : 'කැරකැවීම',
+			'rotate-cw'       : 'Rotate 90 degrees CW',
+			'rotate-ccw'      : 'Rotate 90 degrees CCW',
+			'degree'          : '°',
+			'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012
+			'protocol'            : 'Protocol', // added 18.04.2012
+			'host'                : 'Host', // added 18.04.2012
+			'port'                : 'Port', // added 18.04.2012
+			'user'                : 'පරිශීලක', // added 18.04.2012
+			'pass'                : 'මුරපදය', // added 18.04.2012
+			'confirmUnmount'      : 'Are you unmount $1?',  // from v2.1 added 30.04.2012
+			'dropFilesBrowser': 'Drop or Paste files from browser', // from v2.1 added 30.05.2012
+			'dropPasteFiles'  : 'Drop files, Paste URLs or images(clipboard) here', // from v2.1 added 07.04.2014
+			'encoding'        : 'Encoding', // from v2.1 added 19.12.2014
+			'locale'          : 'Locale',   // from v2.1 added 19.12.2014
+			'searchTarget'    : 'ඉලක්කය: $1',                // from v2.1 added 22.5.2015
+			'searchMime'      : 'Search by input MIME Type', // from v2.1 added 22.5.2015
+			'owner'           : 'හිමිකරු', // from v2.1 added 20.6.2015
+			'group'           : 'සමූහය', // from v2.1 added 20.6.2015
+			'other'           : 'වෙනත්', // from v2.1 added 20.6.2015
+			'execute'         : 'ක්‍රයාත්මක කරන්න', // from v2.1 added 20.6.2015
+			'perm'            : 'අවසරය', // from v2.1 added 20.6.2015
+			'mode'            : 'Mode', // from v2.1 added 20.6.2015
+			'emptyFolder'     : 'ෆෝල්ඩරය හිස්', // from v2.1.6 added 30.12.2015
+			'emptyFolderDrop' : 'Folder is empty\\A Drop to add items', // from v2.1.6 added 30.12.2015
+			'emptyFolderLTap' : 'Folder is empty\\A Long tap to add items', // from v2.1.6 added 30.12.2015
+			'quality'         : 'ගුණාත්මකභාවය', // from v2.1.6 added 5.1.2016
+			'autoSync'        : 'Auto sync',  // from v2.1.6 added 10.1.2016
+			'moveUp'          : 'Move up',  // from v2.1.6 added 18.1.2016
+			'getLink'         : 'Get URL link', // from v2.1.7 added 9.2.2016
+			'selectedItems'   : 'Selected items ($1)', // from v2.1.7 added 2.19.2016
+			'folderId'        : 'Folder ID', // from v2.1.10 added 3.25.2016
+			'offlineAccess'   : 'Allow offline access', // from v2.1.10 added 3.25.2016
+			'reAuth'          : 'To re-authenticate', // from v2.1.10 added 3.25.2016
+			'nowLoading'      : 'Now loading...', // from v2.1.12 added 4.26.2016
+			'openMulti'       : 'Open multiple files', // from v2.1.12 added 5.14.2016
+			'openMultiConfirm': 'ඔබ $1 ගොනු විවෘත කිරීමට උත්සාහ කරයි. බ්‍රව්සරයෙන් ඔබට විවෘත කිරීමට අවශ්‍ය බව ඔබට විශ්වාසද?', // from v2.1.12 added 5.14.2016
+			'emptySearch'     : 'සෙවුම් ඉලක්කයේ ගවේෂණ ප්‍රතිඵල නොමැත.', // from v2.1.12 added 5.16.2016
+			'editingFile'     : 'එය ගොනුව සංස්කරණය කිරීමකි.', // from v2.1.13 added 6.3.2016
+			'hasSelected'     : 'ඔබ අයිතම $1 ප්‍රමාණයක් තෝරාගෙන ඇත.', // from v2.1.13 added 6.3.2016
+			'hasClipboard'    : 'You have $1 items in the clipboard.', // from v2.1.13 added 6.3.2016
+			'incSearchOnly'   : 'Incremental search is only from the current view.', // from v2.1.13 added 6.30.2016
+			'reinstate'       : 'යථා තත්ත්වයට පත් කරන්න', // from v2.1.15 added 3.8.2016
+			'complete'        : '$1 සම්පූර්ණයි', // from v2.1.15 added 21.8.2016
+			'contextmenu'     : 'Context menu', // from v2.1.15 added 9.9.2016
+			'pageTurning'     : 'Page turning', // from v2.1.15 added 10.9.2016
+			'volumeRoots'     : 'Volume roots', // from v2.1.16 added 16.9.2016
+			'reset'           : 'යළි පිහිටුවන්න(Reset)', // from v2.1.16 added 1.10.2016
+			'bgcolor'         : 'පසුබිම් වර්ණය', // from v2.1.16 added 1.10.2016
+			'colorPicker'     : 'Color picker', // from v2.1.16 added 1.10.2016
+			'8pxgrid'         : '8px Grid', // from v2.1.16 added 4.10.2016
+			'enabled'         : 'සක්‍රීයයි', // from v2.1.16 added 4.10.2016
+			'disabled'        : 'අක්‍රීයයි', // from v2.1.16 added 4.10.2016
+			'emptyIncSearch'  : 'Search results is empty in current view.\\APress [Enter] to expand search target.', // from v2.1.16 added 5.10.2016
+			'emptyLetSearch'  : 'First letter search results is empty in current view.', // from v2.1.23 added 24.3.2017
+			'textLabel'       : 'Text label', // from v2.1.17 added 13.10.2016
+			'minsLeft'        : '$1 mins left', // from v2.1.17 added 13.11.2016
+			'openAsEncoding'  : 'Reopen with selected encoding', // from v2.1.19 added 2.12.2016
+			'saveAsEncoding'  : 'Save with the selected encoding', // from v2.1.19 added 2.12.2016
+			'selectFolder'    : 'ෆෝල්ඩරය තෝරන්න', // from v2.1.20 added 13.12.2016
+			'firstLetterSearch': 'පළමු අකුරෙන් සෙවීම', // from v2.1.23 added 24.3.2017
+			'presets'         : 'Presets', // from v2.1.25 added 26.5.2017
+			'tooManyToTrash'  : 'It\'s too many items so it can\'t into trash.', // from v2.1.25 added 9.6.2017
+			'TextArea'        : 'TextArea', // from v2.1.25 added 14.6.2017
+			'folderToEmpty'   : 'Empty the folder "$1".', // from v2.1.25 added 22.6.2017
+			'filderIsEmpty'   : 'There are no items in a folder "$1".', // from v2.1.25 added 22.6.2017
+			'preference'      : 'Preference', // from v2.1.26 added 28.6.2017
+			'language'        : 'Language setting', // from v2.1.26 added 28.6.2017
+			'clearBrowserData': 'Initialize the settings saved in this browser', // from v2.1.26 added 28.6.2017
+			'toolbarPref'     : 'Toolbar setting', // from v2.1.27 added 2.8.2017
+			'charsLeft'       : '... $1 chars left.',  // from v2.1.29 added 30.8.2017
+
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : 'Unknown',
+			'kindRoot'        : 'Volume Root', // from v2.1.16 added 16.10.2016
+			'kindFolder'      : 'ෆෝල්ඩරය',
+			'kindSelects'     : 'Selections', // from v2.1.29 added 29.8.2017
+			'kindAlias'       : 'Alias',
+			'kindAliasBroken' : 'Broken alias',
+			// applications
+			'kindApp'         : 'Application',
+			'kindPostscript'  : 'Postscript ලේඛනය',
+			'kindMsOffice'    : 'Microsoft Office ලේඛනය',
+			'kindMsWord'      : 'Microsoft Word ලේඛනය',
+			'kindMsExcel'     : 'Microsoft Excel ලේඛනය',
+			'kindMsPP'        : 'Microsoft Powerpoint presentation',
+			'kindOO'          : 'Open Office ලේඛනය',
+			'kindAppFlash'    : 'Flash application',
+			'kindPDF'         : 'Portable Document Format (PDF)',
+			'kindTorrent'     : 'Bittorrent file',
+			'kind7z'          : '7z archive',
+			'kindTAR'         : 'TAR archive',
+			'kindGZIP'        : 'GZIP archive',
+			'kindBZIP'        : 'BZIP archive',
+			'kindXZ'          : 'XZ archive',
+			'kindZIP'         : 'ZIP archive',
+			'kindRAR'         : 'RAR archive',
+			'kindJAR'         : 'Java JAR file',
+			'kindTTF'         : 'True Type font',
+			'kindOTF'         : 'Open Type font',
+			'kindRPM'         : 'RPM package',
+			// texts
+			'kindText'        : 'Text ලේඛනය',
+			'kindTextPlain'   : 'Plain text',
+			'kindPHP'         : 'PHP මූලාශ්‍රය',
+			'kindCSS'         : 'Cascading style sheet',
+			'kindHTML'        : 'HTML ලේඛනය',
+			'kindJS'          : 'Javascript මූලාශ්‍රය',
+			'kindRTF'         : 'Rich Text Format',
+			'kindC'           : 'C මූලාශ්‍රය',
+			'kindCHeader'     : 'C header මූලාශ්‍රය',
+			'kindCPP'         : 'C++ මූලාශ්‍රය',
+			'kindCPPHeader'   : 'C++ header මූලාශ්‍රය',
+			'kindShell'       : 'Unix shell රචනයකි',
+			'kindPython'      : 'Python මූලාශ්‍රය',
+			'kindJava'        : 'Java මූලාශ්‍රය',
+			'kindRuby'        : 'Ruby මූලාශ්‍රය',
+			'kindPerl'        : 'Perl රචනයකි',
+			'kindSQL'         : 'SQL මූලාශ්‍රය',
+			'kindXML'         : 'XML ලේඛනය',
+			'kindAWK'         : 'AWK මූලාශ්‍රය',
+			'kindCSV'         : 'කොමාවන් වෙන් කළ අගයන්',
+			'kindDOCBOOK'     : 'Docbook XML ලේඛනය',
+			'kindMarkdown'    : 'Markdown text', // added 20.7.2015
+			// images
+			'kindImage'       : 'පින්තූරය',
+			'kindBMP'         : 'BMP පින්තූරය',
+			'kindJPEG'        : 'JPEG පින්තූරය',
+			'kindGIF'         : 'GIF පින්තූරය',
+			'kindPNG'         : 'PNG පින්තූරය',
+			'kindTIFF'        : 'TIFF පින්තූරය',
+			'kindTGA'         : 'TGA පින්තූරය',
+			'kindPSD'         : 'Adobe Photoshop පින්තූරය',
+			'kindXBITMAP'     : 'X bitmap පින්තූරය',
+			'kindPXM'         : 'Pixelmator පින්තූරය',
+			// media
+			'kindAudio'       : 'ශබ්ධ මාධ්‍ය',
+			'kindAudioMPEG'   : 'MPEG ශබ්ධපටය',
+			'kindAudioMPEG4'  : 'MPEG-4 ශබ්ධපටය',
+			'kindAudioMIDI'   : 'MIDI ශබ්ධපටය',
+			'kindAudioOGG'    : 'Ogg Vorbis ශබ්ධපටය',
+			'kindAudioWAV'    : 'WAV ශබ්ධපටය',
+			'AudioPlaylist'   : 'MP3 playlist',
+			'kindVideo'       : 'Video මාධ්‍ය',
+			'kindVideoDV'     : 'DV චිත්‍රපටය',
+			'kindVideoMPEG'   : 'MPEG චිත්‍රපටය',
+			'kindVideoMPEG4'  : 'MPEG-4 චිත්‍රපටය',
+			'kindVideoAVI'    : 'AVI චිත්‍රපටය',
+			'kindVideoMOV'    : 'Quick Time චිත්‍රපටය',
+			'kindVideoWM'     : 'Windows Media චිත්‍රපටය',
+			'kindVideoFlash'  : 'Flash චිත්‍රපටය',
+			'kindVideoMKV'    : 'Matroska චිත්‍රපටය',
+			'kindVideoOGG'    : 'Ogg චිත්‍රපටය'
+		}
+	};
+}));
+

+ 519 - 0
src/assets/js/i18n/elfinder.sk.js

@@ -0,0 +1,519 @@
+/**
+ * Slovak translation
+ * @author Jakub Ďuraš <jkblmr@gmail.com>
+ * @author RobiNN <kelcakrobo@gmail.com>
+ * @version 2017-09-15
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.sk = {
+		translator : 'Jakub Ďuraš &lt;jkblmr@gmail.com&gt;, RobiNN &lt;kelcakrobo@gmail.com&gt;',
+		language   : 'slovenčina',
+		direction  : 'ltr',
+		dateFormat : 'd.m.Y H:i', // Mar 13, 2012 05:27 PM
+		fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM
+		nonameDateFormat : 'ymd-His', // to apply if upload file is noname: 120513172700
+		messages   : {
+
+			/********************************** errors **********************************/
+			'error'                : 'Chyba',
+			'errUnknown'           : 'Neznáma chyba.',
+			'errUnknownCmd'        : 'Neznámy príkaz.',
+			'errJqui'              : 'Nesprávna jQuery UI konfigurácia. Selectable, draggable a droppable musia byť načítané.',
+			'errNode'              : 'elFinder vyžaduje vytvorenie DOM elementu.',
+			'errURL'               : 'Nesprávna elFinder konfigurácia! URL nie je definovaná.',
+			'errAccess'            : 'Prístup zamietnutý.',
+			'errConnect'           : 'Nepodarilo sa pripojiť do backendu.',
+			'errAbort'             : 'Spojenie bolo prerušené.',
+			'errTimeout'           : 'Časový limit vypršal.',
+			'errNotFound'          : 'Backend nenájdený.',
+			'errResponse'          : 'Nesprávna backend odpoveď.',
+			'errConf'              : 'Nesprávna backend konfigurácia.',
+			'errJSON'              : 'Požadovaný PHP JSON modul nie je nainštalovaný.',
+			'errNoVolumes'         : 'Nie sú dostupné žiadne čitateľné média.',
+			'errCmdParams'         : 'Nesprávne parametre pre príkaz "$1".',
+			'errDataNotJSON'       : 'Dáta nie sú formátu JSON.',
+			'errDataEmpty'         : 'Prázdne dáta.',
+			'errCmdReq'            : 'Backend požiadavka požaduje názov príkazu.',
+			'errOpen'              : 'Nie je možné otvoriť "$1".',
+			'errNotFolder'         : 'Objekt nie je priečinok.',
+			'errNotFile'           : 'Objekt nie je súbor.',
+			'errRead'              : 'Nie je možné prečítať "$1".',
+			'errWrite'             : 'Nie je možné písať do "$1".',
+			'errPerm'              : 'Prístup zamietnutý.',
+			'errLocked'            : '"$1" je uzamknutý a nemôže byť premenovaný, presunutý alebo odstránený.',
+			'errExists'            : 'Súbor s názvom "$1" už existuje.',
+			'errInvName'           : 'Neplatný názov súboru.',
+			'errInvDirname'        : 'Neplatný názov priečinka.',  // from v2.1.24 added 12.4.2017
+			'errFolderNotFound'    : 'Priečinok nebol nájdený.',
+			'errFileNotFound'      : 'Súbor nenájdený.',
+			'errTrgFolderNotFound' : 'Cieľový priečinok "$1" sa nenašiel.',
+			'errPopup'             : 'Prehliadač zabránil otvoreniu vyskakovacieho okna. Pre otvorenie súboru povoľte vyskakovacie okná.',
+			'errMkdir'             : 'Nie je možné vytvoriť priečinok "$1".',
+			'errMkfile'            : 'Nie je možné vytvoriť súbor "$1".',
+			'errRename'            : 'Nie je možné premenovať "$1".',
+			'errCopyFrom'          : 'Kopírovanie súborov z média "$1" nie je povolené.',
+			'errCopyTo'            : 'Kopírovanie súborov na médium "$1" nie je povolené.',
+			'errMkOutLink'         : 'Nie je možné vytvoriť odkaz mimo koreňového zväzku.', // from v2.1 added 03.10.2015
+			'errUpload'            : 'Chyba pri nahrávaní.',  // old name - errUploadCommon
+			'errUploadFile'        : 'Nie je možné nahrať "$1".', // old name - errUpload
+			'errUploadNoFiles'     : 'Neboli nájdené žiadne súbory na nahranie.',
+			'errUploadTotalSize'   : 'Dáta prekračujú maximálnu povolenú veľkosť.', // old name - errMaxSize
+			'errUploadFileSize'    : 'Súbor prekračuje maximálnu povolenú veľkosť.', //  old name - errFileMaxSize
+			'errUploadMime'        : 'Nepovolený typ súboru.',
+			'errUploadTransfer'    : 'Problém s nahrávaním "$1".',
+			'errUploadTemp'        : 'Nie je možné vytvoriť dočasný súbor pre nahranie.', // from v2.1 added 26.09.2015
+			'errNotReplace'        : 'Objekt "$1" na tomto mieste už existuje a nemôže byť nahradený objektom iného typu.', // new
+			'errReplace'           : 'Nie je možné nahradiť "$1".',
+			'errSave'              : 'Nie je možné uložiť "$1".',
+			'errCopy'              : 'Nie je možné kopíropvať "$1".',
+			'errMove'              : 'Nie je možné preniesť "$1".',
+			'errCopyInItself'      : 'Nie je možné kopírovať "$1" do seba.',
+			'errRm'                : 'Nie je možné vymazať "$1".',
+			'errTrash'             : 'Nie je možné presunúť do koša.', // from v2.1.24 added 30.4.2017
+			'errRmSrc'             : 'Nie je možné odstrániť zdrojový/é súbor/y.',
+			'errExtract'           : 'Nie je možné extrahovať súbory z "$1".',
+			'errArchive'           : 'Nie je možné vytvoriť archív.',
+			'errArcType'           : 'Nepodporovaný typ archívu.',
+			'errNoArchive'         : 'Súbor nie je archív alebo má nepodporovaný typ archívu.',
+			'errCmdNoSupport'      : 'Backend nepodporuje tento príkaz.',
+			'errReplByChild'       : 'Priečinok "$1" nemôže byť nahradený položkou, ktorú už obsahuje.',
+			'errArcSymlinks'       : 'Z bezpečnostných dôvodov bolo zakázané extrahovanie archívov obsahujúcich symlinky, alebo súborov s nepovolenými názvami.', // edited 24.06.2012
+			'errArcMaxSize'        : 'Súbory archívu prekračujú maximálnu povolenú veľkosť.',
+			'errResize'            : 'Nie je možné zmeniť veľkosť "$1".',
+			'errResizeDegree'      : 'Neplatný stupeň otočenia.',  // added 7.3.2013
+			'errResizeRotate'      : 'Nie je možné otočiť obrázok.',  // added 7.3.2013
+			'errResizeSize'        : 'Neplatná veľkosť obrázka.',  // added 7.3.2013
+			'errResizeNoChange'    : 'Veľkosť obrázku sa nezmenila.',  // added 7.3.2013
+			'errUsupportType'      : 'Nepodporovaný typ súboru.',
+			'errNotUTF8Content'    : 'Súbor "$1" nie je v UTF-8 a nemôže byť upravený.',  // added 9.11.2011
+			'errNetMount'          : 'Nie je možné pripojiť "$1".', // added 17.04.2012
+			'errNetMountNoDriver'  : 'Nepodporovaný protokol.',     // added 17.04.2012
+			'errNetMountFailed'    : 'Pripájanie zlyhalo.',         // added 17.04.2012
+			'errNetMountHostReq'   : 'Hosť je požadovaný.', // added 18.04.2012
+			'errSessionExpires'    : 'Vaša relácia vypršala kvôli nečinnosti.',
+			'errCreatingTempDir'   : 'Nepodarilo sa vytvoriť dočasný adresár: "$1"',
+			'errFtpDownloadFile'   : 'Nie je možné stiahnuť súbor z FTP: "$1"',
+			'errFtpUploadFile'     : 'Nie je možné nahrať súbor na FTP: "$1"',
+			'errFtpMkdir'          : 'Nedá sa vytvoriť vzdialený adresár na FTP: "$1"',
+			'errArchiveExec'       : 'Chyba pri archivácii súborov: "$1"',
+			'errExtractExec'       : 'Chyba pri extrahovaní súborov: "$1"',
+			'errNetUnMount'        : 'Nepodarilo sa odpojiť', // from v2.1 added 30.04.2012
+			'errConvUTF8'          : 'Nie je prevoditeľný na UTF-8', // from v2.1 added 08.04.2014
+			'errFolderUpload'      : 'Vyskúšajte moderný prehliadač, ak chcete nahrať priečinok.', // from v2.1 added 26.6.2015
+			'errSearchTimeout'     : 'Vypršal časový limit pri hľadaní "$1". Výsledok vyhľadávania je čiastočný.', // from v2.1 added 12.1.2016
+			'errReauthRequire'     : 'Opätovné povolenie je potrebné.', // from v2.1.10 added 24.3.2016
+			'errMaxTargets'        : 'Maximálny počet voliteľných položiek je $1.', // from v2.1.17 added 17.10.2016
+			'errRestore'           : 'Nepodarilo sa obnoviť z koša. Cieľ obnovenia nie je možné identifikovať.', // from v2.1.24 added 3.5.2017
+			'errEditorNotFound'    : 'Editor tohto typu súboru nebol nájdený.', // from v2.1.25 added 23.5.2017
+			'errServerError'       : 'Vyskytla sa chyba na strane servera.', // from v2.1.25 added 16.6.2017
+			'errEmpty'             : 'Nepodarilo sa vyprázdniť priečinok "$1".', // from v2.1.25 added 22.6.2017
+
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'Vytvoriť archív',
+			'cmdback'      : 'Späť',
+			'cmdcopy'      : 'Kopírovať',
+			'cmdcut'       : 'Vystrihnúť',
+			'cmddownload'  : 'Stiahnuť',
+			'cmdduplicate' : 'Duplikovať',
+			'cmdedit'      : 'Upraviť súbor',
+			'cmdextract'   : 'Extrahovať súbory z archívu',
+			'cmdforward'   : 'Ďalej',
+			'cmdgetfile'   : 'Vybrať súbory',
+			'cmdhelp'      : 'O tomto softvéri',
+			'cmdhome'      : 'Domov',
+			'cmdinfo'      : 'Info',
+			'cmdmkdir'     : 'Nový priečinok',
+			'cmdmkdirin'   : 'Do novej zložky', // from v2.1.7 added 19.2.2016
+			'cmdmkfile'    : 'Nový textový súbor',
+			'cmdopen'      : 'Otvoriť',
+			'cmdpaste'     : 'Vložiť',
+			'cmdquicklook' : 'Náhľad',
+			'cmdreload'    : 'Obnoviť',
+			'cmdrename'    : 'Premenovať',
+			'cmdrm'        : 'Vymazať',
+			'cmdtrash'     : 'Do koša', //from v2.1.24 added 29.4.2017
+			'cmdrestore'   : 'Obnoviť', //from v2.1.24 added 3.5.2017
+			'cmdsearch'    : 'Nájsť súbory',
+			'cmdup'        : 'Prejsť do nadradeného priečinka',
+			'cmdupload'    : 'Nahrať súbory',
+			'cmdview'      : 'Pozrieť',
+			'cmdresize'    : 'Zmeniť veľkosť obrázku',
+			'cmdsort'      : 'Zoradiť',
+			'cmdnetmount'  : 'Pripojiť sieťové médium', // added 18.04.2012
+			'cmdnetunmount': 'Odpojiť', // from v2.1 added 30.04.2012
+			'cmdplaces'    : 'Do umiestnení', // added 28.12.2014
+			'cmdchmod'     : 'Zmeniť režim', // from v2.1 added 20.6.2015
+			'cmdopendir'   : 'Otvoriť priečinok', // from v2.1 added 13.1.2016
+			'cmdcolwidth'  : 'Resetovať šírku stĺpca', // from v2.1.13 added 12.06.2016
+			'cmdfullscreen': 'Celá obrazovka', // from v2.1.15 added 03.08.2016
+			'cmdmove'      : 'Posúvať', // from v2.1.15 added 21.08.2016
+			'cmdempty'     : 'Vyprázdniť priečinok', // from v2.1.25 added 22.06.2017
+			'cmdundo'      : 'Krok späť', // from v2.1.27 added 31.07.2017
+			'cmdredo'      : 'Vykonať znova', // from v2.1.27 added 31.07.2017
+			'cmdpreference': 'Preferencie', // from v2.1.27 added 03.08.2017
+			'cmdselectall' : 'Vybrať všetko', // from v2.1.28 added 15.08.2017
+			'cmdselectnone': 'Nič nevyberať', // from v2.1.28 added 15.08.2017
+			'cmdselectinvert': 'Invertovať výber', // from v2.1.28 added 15.08.2017
+
+			/*********************************** buttons ***********************************/
+			'btnClose'  : 'Zavrieť',
+			'btnSave'   : 'Uložiť',
+			'btnRm'     : 'Vymazať',
+			'btnApply'  : 'Použiť',
+			'btnCancel' : 'Zrušiť',
+			'btnNo'     : 'Nie',
+			'btnYes'    : 'Áno',
+			'btnMount'  : 'Pripojiť',  // added 18.04.2012
+			'btnApprove': 'Ísť na $1 & schváliť', // from v2.1 added 26.04.2012
+			'btnUnmount': 'Odpojiť', // from v2.1 added 30.04.2012
+			'btnConv'   : 'Previesť', // from v2.1 added 08.04.2014
+			'btnCwd'    : 'Tu',      // from v2.1 added 22.5.2015
+			'btnVolume' : 'Médium',    // from v2.1 added 22.5.2015
+			'btnAll'    : 'Všetko',       // from v2.1 added 22.5.2015
+			'btnMime'   : 'MIME typ', // from v2.1 added 22.5.2015
+			'btnFileName':'Názov súboru',  // from v2.1 added 22.5.2015
+			'btnSaveClose': 'Uložiť & zavrieť', // from v2.1 added 12.6.2015
+			'btnBackup' : 'Zálohovať', // fromv2.1 added 28.11.2015
+			'btnRename'    : 'Premenovať',      // from v2.1.24 added 6.4.2017
+			'btnRenameAll' : 'Premenovať všetko', // from v2.1.24 added 6.4.2017
+			'btnPrevious' : 'Predchádzajúce ($1/$2)', // from v2.1.24 added 11.5.2017
+			'btnNext'     : 'Ďalšie ($1/$2)', // from v2.1.24 added 11.5.2017
+			'btnSaveAs'   : 'Uložiť ako', // from v2.1.25 added 24.5.2017
+
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'Otváranie priečinka',
+			'ntffile'     : 'Otváranie súboru',
+			'ntfreload'   : 'Znovu-načítanie obsahu priečinka',
+			'ntfmkdir'    : 'Vytváranie priečinka',
+			'ntfmkfile'   : 'Vytváranie súborov',
+			'ntfrm'       : 'Vymazanie súborov',
+			'ntfcopy'     : 'Kopírovanie súborov',
+			'ntfmove'     : 'Premiestnenie súborov',
+			'ntfprepare'  : 'Príprava na kopírovanie súborov',
+			'ntfrename'   : 'Premenovanie súborov',
+			'ntfupload'   : 'Nahrávanie súborov',
+			'ntfdownload' : 'Sťahovanie súborov',
+			'ntfsave'     : 'Uloženie súborov',
+			'ntfarchive'  : 'Vytváranie archívu',
+			'ntfextract'  : 'Extrahovanie súborov z archívu',
+			'ntfsearch'   : 'Vyhľadávanie súborov',
+			'ntfresize'   : 'Zmena veľkosti obrázkov',
+			'ntfsmth'     : 'Počkajte prosím...',
+			'ntfloadimg'  : 'Načítavanie obrázka',
+			'ntfnetmount' : 'Pripájanie sieťového média', // added 18.04.2012
+			'ntfnetunmount': 'Odpájanie sieťového média', // from v2.1 added 30.04.2012
+			'ntfdim'      : 'Získanie rozmeru obrázka', // added 20.05.2013
+			'ntfreaddir'  : 'Čítajú sa informácie o priečinku', // from v2.1 added 01.07.2013
+			'ntfurl'      : 'Získanie adresy URL odkazu', // from v2.1 added 11.03.2014
+			'ntfchmod'    : 'Zmena súboru', // from v2.1 added 20.6.2015
+			'ntfpreupload': 'Overenie názvu nahravaného súboru', // from v2.1 added 31.11.2015
+			'ntfzipdl'    : 'Vytvorenie súboru na stiahnutie', // from v2.1.7 added 23.1.2016
+			'ntfparents'  : 'Získanie informácií o ceste', // from v2.1.17 added 2.11.2016
+			'ntfchunkmerge': 'Spracovanie nahraného súboru', // from v2.1.17 added 2.11.2016
+			'ntftrash'    : 'Vhadzovanie do koša', // from v2.1.24 added 2.5.2017
+			'ntfrestore'  : 'Vykonávanie obnovy z koša', // from v2.1.24 added 3.5.2017
+			'ntfchkdir'   : 'Kontrola cieľového priečinka', // from v2.1.24 added 3.5.2017
+			'ntfundo'     : 'Zrušiť predchádzajúcu operáciu', // from v2.1.27 added 31.07.2017
+			'ntfredo'     : 'Obnovenie predchádzajúceho zrušenia', // from v2.1.27 added 31.07.2017
+
+			/*********************************** volumes *********************************/
+			'volume_Trash' : 'Kôš', //from v2.1.24 added 29.4.2017
+
+			/************************************ dates **********************************/
+			'dateUnknown' : 'neznámy',
+			'Today'       : 'Dnes',
+			'Yesterday'   : 'Včera',
+			'msJan'       : 'Jan',
+			'msFeb'       : 'Feb',
+			'msMar'       : 'Mar',
+			'msApr'       : 'Apr',
+			'msMay'       : 'Maj',
+			'msJun'       : 'Jun',
+			'msJul'       : 'Júl',
+			'msAug'       : 'Aug',
+			'msSep'       : 'Sep',
+			'msOct'       : 'Okt',
+			'msNov'       : 'Nov',
+			'msDec'       : 'Dec',
+			'January'     : 'Január',
+			'February'    : 'Február',
+			'March'       : 'Marec',
+			'April'       : 'Apríl',
+			'May'         : 'Máj',
+			'June'        : 'Jún',
+			'July'        : 'Júl',
+			'August'      : 'August',
+			'September'   : 'September',
+			'October'     : 'Október',
+			'November'    : 'November',
+			'December'    : 'December',
+			'Sunday'      : 'Nedeľa',
+			'Monday'      : 'Pondelok',
+			'Tuesday'     : 'Utorok',
+			'Wednesday'   : 'Streda',
+			'Thursday'    : 'Štvrtok',
+			'Friday'      : 'Piatok',
+			'Saturday'    : 'Sobota',
+			'Sun'         : 'Ned',
+			'Mon'         : 'Pon',
+			'Tue'         : 'Ut',
+			'Wed'         : 'Str',
+			'Thu'         : 'Štv',
+			'Fri'         : 'Pia',
+			'Sat'         : 'Sob',
+
+			/******************************** sort variants ********************************/
+			'sortname'          : 'podľa názvu',
+			'sortkind'          : 'podľa druhu',
+			'sortsize'          : 'podľa veľkosti',
+			'sortdate'          : 'podľa dátumu',
+			'sortFoldersFirst'  : 'Najskôr priečinky',
+			'sortperm'          : 'podľa povolenia', // from v2.1.13 added 13.06.2016
+			'sortmode'          : 'podľa módu',       // from v2.1.13 added 13.06.2016
+			'sortowner'         : 'podľa majiteľa',      // from v2.1.13 added 13.06.2016
+			'sortgroup'         : 'podľa skupiny',      // from v2.1.13 added 13.06.2016
+			'sortAlsoTreeview'  : 'Tiež stromove zobrazenie',  // from v2.1.15 added 01.08.2016
+
+			/********************************** new items **********************************/
+			'untitled file.txt' : 'Nový textový súbor.txt', // added 10.11.2015
+			'untitled folder'   : 'Nový priečinok',   // added 10.11.2015
+			'Archive'           : 'Nový archív',  // from v2.1 added 10.11.2015
+
+			/********************************** messages **********************************/
+			'confirmReq'      : 'Potrebné potvrdenie',
+			'confirmRm'       : 'Určite chcete vymazať súbory?<br/>Nebude sa to dať vrátiť späť!',
+			'confirmRepl'     : 'Nahradiť starý súbor novým?',
+			'confirmRest'     : 'Nahradiť existujúcu položku s položkou v koši?', // fromv2.1.24 added 5.5.2017
+			'confirmConvUTF8' : 'Nie je v UTF-8<br/>Previesť na UTF-8?<br/>Obsah sa stane UTF-8 po uložení konverzie.', // from v2.1 added 08.04.2014
+			'confirmNonUTF8'  : 'Kódovanie tohto súboru nemoholo byť detekované. Pre editáciu dočasne potrebujete previesť na UTF-8 .<br/>Prosím, vyberte kódovanie znakov tohto súboru.', // from v2.1.19 added 28.11.2016
+			'confirmNotSave'  : 'Bol upravený.<br/>Ak zmeny neuložíte, stratíte vykonanú prácu.', // from v2.1 added 15.7.2015
+			'confirmTrash'    : 'Naozaj chcete presunúť položky do koša?', //from v2.1.24 added 29.4.2017
+			'apllyAll'        : 'Použiť na všetky',
+			'name'            : 'Názov',
+			'size'            : 'Veľkosť',
+			'perms'           : 'Povolenia',
+			'modify'          : 'Zmenené',
+			'kind'            : 'Druh',
+			'read'            : 'čítať',
+			'write'           : 'zapisovať',
+			'noaccess'        : 'bez prístupu',
+			'and'             : 'a',
+			'unknown'         : 'neznámy',
+			'selectall'       : 'Vybrať všetky súbory',
+			'selectfiles'     : 'Vybrať súbor(y)',
+			'selectffile'     : 'Vybrať prvý súbor',
+			'selectlfile'     : 'Vybrať posledný súbor',
+			'viewlist'        : 'Zoznam',
+			'viewicons'       : 'Ikony',
+			'places'          : 'Miesta',
+			'calc'            : 'Prepočítavanie',
+			'path'            : 'Cesta',
+			'aliasfor'        : 'Alias pre',
+			'locked'          : 'Uzamknuté',
+			'dim'             : 'Rozmery',
+			'files'           : 'Súbory',
+			'folders'         : 'Priečinky',
+			'items'           : 'Položiek',
+			'yes'             : 'áno',
+			'no'              : 'nie',
+			'link'            : 'Odkaz',
+			'searcresult'     : 'Výsledky hľadania',
+			'selected'        : 'zvolené položky',
+			'about'           : 'O aplikácii',
+			'shortcuts'       : 'Skratky',
+			'help'            : 'Pomoc',
+			'webfm'           : 'Webový správca súborov',
+			'ver'             : 'Verzia',
+			'protocolver'     : 'verzia protokolu',
+			'homepage'        : 'Domovská stránka',
+			'docs'            : 'Dokumentácia',
+			'github'          : 'Pozri nás na Githube',
+			'twitter'         : 'Nasleduj nás na Twitteri',
+			'facebook'        : 'Pripoj sa k nám na Facebooku',
+			'team'            : 'Tím',
+			'chiefdev'        : 'hlavný vývojár',
+			'developer'       : 'vývojár',
+			'contributor'     : 'prispievateľ',
+			'maintainer'      : 'správca',
+			'translator'      : 'prekladateľ',
+			'icons'           : 'Ikony',
+			'dontforget'      : 'a nezabudnite si plavky',
+			'shortcutsof'     : 'Skratky nie sú povolené',
+			'dropFiles'       : 'Sem pretiahnite súbory',
+			'or'              : 'alebo',
+			'selectForUpload' : 'Vyberte súbory',
+			'moveFiles'       : 'Premiestniť súbory',
+			'copyFiles'       : 'Kopírovať súbory',
+			'restoreFiles'    : 'Obnoviť položky', // from v2.1.24 added 5.5.2017
+			'rmFromPlaces'    : 'Odstrániť z umiestnení',
+			'aspectRatio'     : 'Pomer zobrazenia',
+			'scale'           : 'Mierka',
+			'width'           : 'Šírka',
+			'height'          : 'Výška',
+			'resize'          : 'Zmeniť veľkosť',
+			'crop'            : 'Orezať',
+			'rotate'          : 'Otočiť',
+			'rotate-cw'       : 'Otočiť o 90 stupňov (v smere h.r.)',
+			'rotate-ccw'      : 'Otočiť o 90 stupňov (proti smeru)',
+			'degree'          : '°',
+			'netMountDialogTitle' : 'Pripojiť sieťové médium', // added 18.04.2012
+			'protocol'            : 'Protokol', // added 18.04.2012
+			'host'                : 'Hosť', // added 18.04.2012
+			'port'                : 'Port', // added 18.04.2012
+			'user'                : 'Užívateľ', // added 18.04.2012
+			'pass'                : 'Heslo', // added 18.04.2012
+			'confirmUnmount'      : 'Chcete odpojiť $1?',  // from v2.1 added 30.04.2012
+			'dropFilesBrowser': 'Premiestnite alebo presunte súbory z prehliadača', // from v2.1 added 30.05.2012
+			'dropPasteFiles'  : 'Tu premiestnite alebo presunte súbory a adresy URL', // from v2.1 added 07.04.2014
+			'encoding'        : 'Kódovanie', // from v2.1 added 19.12.2014
+			'locale'          : 'Lokalizácia',   // from v2.1 added 19.12.2014
+			'searchTarget'    : 'Cieľ: $1',                // from v2.1 added 22.5.2015
+			'searchMime'      : 'Vyhľadávanie podľa vstupného MIME typu', // from v2.1 added 22.5.2015
+			'owner'           : 'Majiteľ', // from v2.1 added 20.6.2015
+			'group'           : 'Skupina', // from v2.1 added 20.6.2015
+			'other'           : 'Ostatné', // from v2.1 added 20.6.2015
+			'execute'         : 'Spustiť', // from v2.1 added 20.6.2015
+			'perm'            : 'Povolenie', // from v2.1 added 20.6.2015
+			'mode'            : 'Režim', // from v2.1 added 20.6.2015
+			'emptyFolder'     : 'Priečinok je prázdny', // from v2.1.6 added 30.12.2015
+			'emptyFolderDrop' : 'Priečinok je prázdny, premiestnite alebo presunte položky', // from v2.1.6 added 30.12.2015
+			'emptyFolderLTap' : 'Priečinok je prázdny, dlhým kliknutím pridáte položky', // from v2.1.6 added 30.12.2015
+			'quality'         : 'Kvalita', // from v2.1.6 added 5.1.2016
+			'autoSync'        : 'Automatická synchronizácia',  // from v2.1.6 added 10.1.2016
+			'moveUp'          : 'Posunúť nahor',  // from v2.1.6 added 18.1.2016
+			'getLink'         : 'Získať URL odkaz', // from v2.1.7 added 9.2.2016
+			'selectedItems'   : 'Vybraté položky ($1)', // from v2.1.7 added 2.19.2016
+			'folderId'        : 'ID priečinka', // from v2.1.10 added 3.25.2016
+			'offlineAccess'   : 'Povoliť prístup v offline režime', // from v2.1.10 added 3.25.2016
+			'reAuth'          : 'Znova overiť', // from v2.1.10 added 3.25.2016
+			'nowLoading'      : 'Práve načítava...', // from v2.1.12 added 4.26.2016
+			'openMulti'       : 'Otvorenie viacerých súborov', // from v2.1.12 added 5.14.2016
+			'openMultiConfirm': 'Pokúšate sa otvoriť súbor $1. Naozaj ho chcete otvoriť v prehliadači?', // from v2.1.12 added 5.14.2016
+			'emptySearch'     : 'Výsledky vyhľadávania su prázdne v hľadanom cieli.', // from v2.1.12 added 5.16.2016
+			'editingFile'     : 'Upravujete súbor.', // from v2.1.13 added 6.3.2016
+			'hasSelected'     : 'Vybrali ste $1 položky.', // from v2.1.13 added 6.3.2016
+			'hasClipboard'    : 'Máte $1 položky v schránke.', // from v2.1.13 added 6.3.2016
+			'incSearchOnly'   : 'Prírastkové hľadanie je iba z aktuálneho zobrazenia.', // from v2.1.13 added 6.30.2016
+			'reinstate'       : 'Obnoviť', // from v2.1.15 added 3.8.2016
+			'complete'        : '$1 kompletné', // from v2.1.15 added 21.8.2016
+			'contextmenu'     : 'Kontextové menu', // from v2.1.15 added 9.9.2016
+			'pageTurning'     : 'Otáčanie stránky', // from v2.1.15 added 10.9.2016
+			'volumeRoots'     : 'Korene média', // from v2.1.16 added 16.9.2016
+			'reset'           : 'Resetovať', // from v2.1.16 added 1.10.2016
+			'bgcolor'         : 'Farba pozadia', // from v2.1.16 added 1.10.2016
+			'colorPicker'     : 'Výber farby', // from v2.1.16 added 1.10.2016
+			'8pxgrid'         : '8px mriežka', // from v2.1.16 added 4.10.2016
+			'enabled'         : 'Povolené', // from v2.1.16 added 4.10.2016
+			'disabled'        : 'Zakázané', // from v2.1.16 added 4.10.2016
+			'emptyIncSearch'  : 'Výsledky vyhľadávania sú prázdne v aktuálnom zobrazení.\\Stlačením tlačidla [Enter] rozšírite vyhľadávanie cieľa.', // from v2.1.16 added 5.10.2016
+			'emptyLetSearch'  : 'Výsledky vyhľadávania prvého listu sú v aktuálnom zobrazení prázdne.', // from v2.1.23 added 24.3.2017
+			'textLabel'       : 'Nápis textu', // from v2.1.17 added 13.10.2016
+			'minsLeft'        : '$1 minút ostáva', // from v2.1.17 added 13.11.2016
+			'openAsEncoding'  : 'Otvoriť s vybratým kódovaním', // from v2.1.19 added 2.12.2016
+			'saveAsEncoding'  : 'Uložiť s vybratým kódovaním', // from v2.1.19 added 2.12.2016
+			'selectFolder'    : 'Vyberte priečinok', // from v2.1.20 added 13.12.2016
+			'firstLetterSearch': 'Hľadanie prvého listu', // from v2.1.23 added 24.3.2017
+			'presets'         : 'Presety', // from v2.1.25 added 26.5.2017
+			'tooManyToTrash'  : 'Je to príliš veľa položiek, takže sa nemôže dostať do koša.', // from v2.1.25 added 9.6.2017
+			'TextArea'        : 'Textarea', // from v2.1.25 added 14.6.2017
+			'folderToEmpty'   : 'Vyprázdniť priečinok "$1".', // from v2.1.25 added 22.6.2017
+			'filderIsEmpty'   : 'V priečinku "$1" nie sú žiadne položky.', // from v2.1.25 added 22.6.2017
+			'preference'      : 'Preferencie', // from v2.1.26 added 28.6.2017
+			'language'        : 'Nastavenie jazyka', // from v2.1.26 added 28.6.2017
+			'clearBrowserData': 'Inicializujte nastavenia uložené v tomto prehliadači', // from v2.1.26 added 28.6.2017
+			'toolbarPref'     : 'Nastavenie panela s nástrojmi', // from v2.1.27 added 2.8.2017
+			'charsLeft'       : '... $1 znakov vľavo.',  // from v2.1.29 added 30.8.2017
+
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : 'Neznámy',
+			'kindRoot'        : 'Koreň média', // from v2.1.16 added 16.10.2016
+			'kindFolder'      : 'Priečinok',
+			'kindSelects'     : 'Výbery', // from v2.1.29 added 29.8.2017
+			'kindAlias'       : 'Alias',
+			'kindAliasBroken' : 'Porušený alias',
+			// applications
+			'kindApp'         : 'Aplikácia',
+			'kindPostscript'  : 'Postscript dokument',
+			'kindMsOffice'    : 'Microsoft Office dokument',
+			'kindMsWord'      : 'Microsoft Word dokument',
+			'kindMsExcel'     : 'Microsoft Excel dokument',
+			'kindMsPP'        : 'Microsoft Powerpoint prezentácia',
+			'kindOO'          : 'Open Office dokument',
+			'kindAppFlash'    : 'Flashová aplikácia',
+			'kindPDF'         : 'Portable Document Format (PDF)',
+			'kindTorrent'     : 'Bittorrent súbor',
+			'kind7z'          : '7z archív',
+			'kindTAR'         : 'TAR archív',
+			'kindGZIP'        : 'GZIP archív',
+			'kindBZIP'        : 'BZIP archív',
+			'kindXZ'          : 'XZ archív',
+			'kindZIP'         : 'ZIP archív',
+			'kindRAR'         : 'RAR archív',
+			'kindJAR'         : 'Java JAR súbor',
+			'kindTTF'         : 'True Type font',
+			'kindOTF'         : 'Open Type font',
+			'kindRPM'         : 'RPM balík',
+			// texts
+			'kindText'        : 'Textový document',
+			'kindTextPlain'   : 'Obyčajný text',
+			'kindPHP'         : 'PHP zdrojový kód',
+			'kindCSS'         : 'Cascading style sheet (CSS)',
+			'kindHTML'        : 'HTML dokument',
+			'kindJS'          : 'Javascript zdrojový kód',
+			'kindRTF'         : 'Rich Text Format',
+			'kindC'           : 'C zdrojový kód',
+			'kindCHeader'     : 'C header zdrojový kód',
+			'kindCPP'         : 'C++ zdrojový kód',
+			'kindCPPHeader'   : 'C++ header zdrojový kód',
+			'kindShell'       : 'Unix shell skript',
+			'kindPython'      : 'Python zdrojový kód',
+			'kindJava'        : 'Java zdrojový kód',
+			'kindRuby'        : 'Ruby zdrojový kód',
+			'kindPerl'        : 'Perl zdrojový kód',
+			'kindSQL'         : 'SQL zdrojový kód',
+			'kindXML'         : 'XML dokument',
+			'kindAWK'         : 'AWK zdrojový kód',
+			'kindCSV'         : 'Čiarkou oddeľované hodnoty',
+			'kindDOCBOOK'     : 'Docbook XML dokument',
+			'kindMarkdown'    : 'Markdown text', // added 20.7.2015
+			// images
+			'kindImage'       : 'Obrázok',
+			'kindBMP'         : 'BMP obrázok',
+			'kindJPEG'        : 'JPEG obrázok',
+			'kindGIF'         : 'GIF obrázok',
+			'kindPNG'         : 'PNG obrázok',
+			'kindTIFF'        : 'TIFF obrázok',
+			'kindTGA'         : 'TGA obrázok',
+			'kindPSD'         : 'Adobe Photoshop obrázok',
+			'kindXBITMAP'     : 'X bitmap obrázok',
+			'kindPXM'         : 'Pixelmator obrázok',
+			// media
+			'kindAudio'       : 'Zvukový súbor',
+			'kindAudioMPEG'   : 'MPEG zvuk',
+			'kindAudioMPEG4'  : 'MPEG-4 zvuk',
+			'kindAudioMIDI'   : 'MIDI zvuk',
+			'kindAudioOGG'    : 'Ogg Vorbis zvuk',
+			'kindAudioWAV'    : 'WAV zvuk',
+			'AudioPlaylist'   : 'MP3 playlist',
+			'kindVideo'       : 'Video súbor',
+			'kindVideoDV'     : 'DV video',
+			'kindVideoMPEG'   : 'MPEG video',
+			'kindVideoMPEG4'  : 'MPEG-4 video',
+			'kindVideoAVI'    : 'AVI video',
+			'kindVideoMOV'    : 'Quick Time video',
+			'kindVideoWM'     : 'Windows Media video',
+			'kindVideoFlash'  : 'Flash video',
+			'kindVideoMKV'    : 'Matroska video',
+			'kindVideoOGG'    : 'Ogg video'
+		}
+	};
+}));
+

+ 374 - 0
src/assets/js/i18n/elfinder.sl.js

@@ -0,0 +1,374 @@
+/**
+ * Slovenian translation
+ * @author Damjan Rems <d_rems at yahoo.com>
+ * @version 2014-12-19
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.sl = {
+		translator : 'Damjan Rems &lt;d_rems at yahoo.com&gt;',
+		language   : 'Slovenščina',
+		direction  : 'ltr',
+		dateFormat : 'd.m.Y H:i',
+		fancyDateFormat : '$1 H:i',
+		messages   : {
+			
+			/********************************** errors **********************************/
+			'error'                : 'Napaka',
+			'errUnknown'           : 'Neznana napaka.',
+			'errUnknownCmd'        : 'Neznan ukaz.',
+			'errJqui'              : 'Napačna jQuery UI nastavitev. Selectable, draggable in droppable dodatki morajo biti vključeni.',
+			'errNode'              : 'elFinder potrebuje "DOM Element".',
+			'errURL'               : 'Napačna nastavitev elFinder-ja! Manjka URL nastavitev.',
+			'errAccess'            : 'Dostop zavrnjen.',
+			'errConnect'           : 'Ne morem se priključiti na "backend".',
+			'errAbort'             : 'Povezava prekinjena (aborted).',
+			'errTimeout'           : 'Povezava potekla (timeout).',
+			'errNotFound'          : 'Nisem našel "backend-a".',
+			'errResponse'          : 'Napačni "backend" odgovor.',
+			'errConf'              : 'Napačna "backend" nastavitev.',
+			'errJSON'              : 'JSON modul ni instaliran.',
+			'errNoVolumes'         : 'Readable volumes not available.',
+			'errCmdParams'         : 'Napačni parametri za ukaz "$1".',
+			'errDataNotJSON'       : 'Podatki niso v JSON obliki.',
+			'errDataEmpty'         : 'Ni podatkov oz. so prazni.',
+			'errCmdReq'            : '"Backend" zahtevek potrebuje ime ukaza.',
+			'errOpen'              : '"$1" ni možno odpreti.',
+			'errNotFolder'         : 'Objekt ni mapa.',
+			'errNotFile'           : 'Objekt ni datoteka.',
+			'errRead'              : '"$1" ni možno brati.',
+			'errWrite'             : 'Ne morem pisati v "$1".',
+			'errPerm'              : 'Dostop zavrnjen.',
+			'errLocked'            : '"$1" je zaklenjen(a) in je ni možno preimenovati, premakniti ali izbrisati.',
+			'errExists'            : 'Datoteka z imenom "$1" že obstaja.',
+			'errInvName'           : 'Napačno ime datoteke.',
+			'errFolderNotFound'    : 'Mape nisem našel.',
+			'errFileNotFound'      : 'Datoteke nisem našel.',
+			'errTrgFolderNotFound' : 'Ciljna mapa "$1" ne obstaja.',
+			'errPopup'             : 'Brskalnik je preprečil prikaz (popup) okna. Za vpogled datoteke omogočite nastavitev v vašem brskalniku.',
+			'errMkdir'             : 'Ni možno dodati mape "$1".',
+			'errMkfile'            : 'Ni možno dodati datoteke "$1".',
+			'errRename'            : 'Ni možno preimenovati "$1".',
+			'errCopyFrom'          : 'Kopiranje datotek iz "$1" ni dovoljeno.',
+			'errCopyTo'            : 'Kopiranje datotek na "$1" ni dovoljeno.',
+			'errUpload'            : 'Napaka pri prenosu.',
+			'errUploadFile'        : '"$1" ni možno naložiti (upload).',
+			'errUploadNoFiles'     : 'Ni datotek za nalaganje (upload).',
+			'errUploadTotalSize'   : 'Podatki presegajo največjo dovoljeno velikost.',
+			'errUploadFileSize'    : 'Datoteka presega največjo dovoljeno velikost.',
+			'errUploadMime'        : 'Datoteke s to končnico niso dovoljene.',
+			'errUploadTransfer'    : '"$1" napaka pri prenosu.',
+			'errNotReplace'        : 'Object "$1" already exists at this location and can not be replaced by object with another type.',
+			'errReplace'           : 'Unable to replace "$1".',
+			'errSave'              : '"$1" ni možno shraniti.',
+			'errCopy'              : '"$1" ni možno kopirati.',
+			'errMove'              : '"$1" ni možno premakniti.',
+			'errCopyInItself'      : '"$1" ni možno kopirati samo vase.',
+			'errRm'                : '"$1" ni možno izbrisati.',
+			'errRmSrc'             : 'Unable remove source file(s).',
+			'errExtract'           : 'Datotek iz "$1" ni možno odpakirati.',
+			'errArchive'           : 'Napaka pri delanju arhiva.',
+			'errArcType'           : 'Nepodprta vrsta arhiva.',
+			'errNoArchive'         : 'Datoteka ni arhiv ali vrsta arhiva ni podprta.',
+			'errCmdNoSupport'      : '"Backend" ne podpira tega ukaza.',
+			'errReplByChild'       : 'Mape “$1” ni možno zamenjati z vsebino mape.',
+			'errArcSymlinks'       : 'Zaradi varnostnih razlogov arhiva ki vsebuje "symlinks" ni možno odpakirati.',
+			'errArcMaxSize'        : 'Datoteke v arhivu presegajo največjo dovoljeno velikost.',
+			'errResize'            : '"$1" ni možno razširiti.',
+			'errResizeDegree'      : 'Invalid rotate degree.',
+			'errResizeRotate'      : 'Unable to rotate image.',
+			'errResizeSize'        : 'Invalid image size.',
+			'errResizeNoChange'    : 'Image size not changed.',
+			'errUsupportType'      : 'Nepodprta vrsta datoteke.',
+			'errNotUTF8Content'    : 'File "$1" is not in UTF-8 and cannot be edited.',  // added 9.11.2011
+			'errNetMount'          : 'Unable to mount "$1".', // added 17.04.2012
+			'errNetMountNoDriver'  : 'Unsupported protocol.',     // added 17.04.2012
+			'errNetMountFailed'    : 'Mount failed.',         // added 17.04.2012
+			'errNetMountHostReq'   : 'Host required.', // added 18.04.2012
+			'errSessionExpires'    : 'Your session has expired due to inactivity.',
+			'errCreatingTempDir'   : 'Unable to create temporary directory: "$1"',
+			'errFtpDownloadFile'   : 'Unable to download file from FTP: "$1"',
+			'errFtpUploadFile'     : 'Unable to upload file to FTP: "$1"',
+			'errFtpMkdir'          : 'Unable to create remote directory on FTP: "$1"',
+			'errArchiveExec'       : 'Error while archiving files: "$1"',
+			'errExtractExec'       : 'Error while extracting files: "$1"',
+			
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'Naredi arhiv',
+			'cmdback'      : 'Nazaj',
+			'cmdcopy'      : 'Kopiraj',
+			'cmdcut'       : 'Izreži',
+			'cmddownload'  : 'Poberi (download)',
+			'cmdduplicate' : 'Podvoji',
+			'cmdedit'      : 'Uredi datoteko',
+			'cmdextract'   : 'Odpakiraj datoteke iz arhiva',
+			'cmdforward'   : 'Naprej',
+			'cmdgetfile'   : 'Izberi datoteke',
+			'cmdhelp'      : 'Več o',
+			'cmdhome'      : 'Domov',
+			'cmdinfo'      : 'Lastnosti',
+			'cmdmkdir'     : 'Nova mapa',
+			'cmdmkfile'    : 'Nova datoteka',
+			'cmdopen'      : 'Odpri',
+			'cmdpaste'     : 'Prilepi',
+			'cmdquicklook' : 'Hitri ogled',
+			'cmdreload'    : 'Osveži',
+			'cmdrename'    : 'Preimenuj',
+			'cmdrm'        : 'Izbriši',
+			'cmdsearch'    : 'Poišči datoteke',
+			'cmdup'        : 'Mapa nazaj',
+			'cmdupload'    : 'Naloži (upload)',
+			'cmdview'      : 'Ogled',
+			'cmdresize'    : 'Povečaj (pomanjšaj) sliko',
+			'cmdsort'      : 'Razvrsti',
+			'cmdnetmount'  : 'Mount network volume',
+			
+			/*********************************** buttons ***********************************/ 
+			'btnClose'  : 'Zapri',
+			'btnSave'   : 'Shrani',
+			'btnRm'     : 'Izbriši',
+			'btnApply'  : 'Uporabi',
+			'btnCancel' : 'Prekliči',
+			'btnNo'     : 'Ne',
+			'btnYes'    : 'Da',
+			'btnMount'  : 'Mount',
+			
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'Odpri mapo',
+			'ntffile'     : 'Odpri datoteko',
+			'ntfreload'   : 'Osveži vsebino mape',
+			'ntfmkdir'    : 'Ustvarjam mapo',
+			'ntfmkfile'   : 'Ustvarjam datoteke',
+			'ntfrm'       : 'Brišem datoteke',
+			'ntfcopy'     : 'Kopiram datoteke',
+			'ntfmove'     : 'Premikam datoteke',
+			'ntfprepare'  : 'Pripravljam se na kopiranje datotek',
+			'ntfrename'   : 'Preimenujem datoteke',
+			'ntfupload'   : 'Nalagam (upload) datoteke',
+			'ntfdownload' : 'Pobiram (download) datoteke',
+			'ntfsave'     : 'Shranjujem datoteke',
+			'ntfarchive'  : 'Ustvarjam arhiv',
+			'ntfextract'  : 'Razpakiram datoteke iz arhiva',
+			'ntfsearch'   : 'Iščem datoteke',
+			'ntfresize'   : 'Resizing images',
+			'ntfsmth'     : 'Počakaj delam >_<',
+			'ntfloadimg'  : 'Nalagam sliko',
+			'ntfnetmount' : 'Mounting network volume', // added 18.04.2012
+			'ntfdim'      : 'Acquiring image dimension', // added 20.05.2013
+			
+			/************************************ dates **********************************/
+			'dateUnknown' : 'neznan',
+			'Today'       : 'Danes',
+			'Yesterday'   : 'Včeraj',
+			'msJan'       : 'Jan',
+			'msFeb'       : 'Feb',
+			'msMar'       : 'Mar',
+			'msApr'       : 'Apr',
+			'msMay'       : 'Maj',
+			'msJun'       : 'Jun',
+			'msJul'       : 'Jul',
+			'msAug'       : 'Avg',
+			'msSep'       : 'Sep',
+			'msOct'       : 'Okt',
+			'msNov'       : 'Nov',
+			'msDec'       : 'Dec',
+			'January'     : 'Januar',
+			'February'    : 'Februar',
+			'March'       : 'Marec',
+			'April'       : 'April',
+			'May'         : 'Maj',
+			'June'        : 'Junij',
+			'July'        : 'Julij',
+			'August'      : 'Avgust',
+			'September'   : 'September',
+			'October'     : 'Oktober',
+			'November'    : 'November',
+			'December'    : 'December',
+			'Sunday'      : 'Nedelja', 
+			'Monday'      : 'Ponedeljek', 
+			'Tuesday'     : 'Torek', 
+			'Wednesday'   : 'Sreda', 
+			'Thursday'    : 'Četrtek', 
+			'Friday'      : 'Petek', 
+			'Saturday'    : 'Sobota',
+			'Sun'         : 'Ned', 
+			'Mon'         : 'Pon', 
+			'Tue'         : 'Tor', 
+			'Wed'         : 'Sre', 
+			'Thu'         : 'Čet', 
+			'Fri'         : 'Pet', 
+			'Sat'         : 'Sob',
+			
+			/******************************** sort variants ********************************/
+			'sortname'          : 'po imenu', 
+			'sortkind'          : 'po vrsti', 
+			'sortsize'          : 'po velikosti',
+			'sortdate'          : 'po datumu',
+			'sortFoldersFirst'  : 'Folders first',
+			
+			/********************************** messages **********************************/
+			'confirmReq'      : 'Zahtevana je potrditev',
+			'confirmRm'       : 'Ste prepričani, da želite izbrisati datoteko?<br/>POZOR! Tega ukaza ni možno preklicati!',
+			'confirmRepl'     : 'Zamenjam staro datoteko z novo?',
+			'apllyAll'        : 'Uporabi pri vseh',
+			'name'            : 'Ime',
+			'size'            : 'Velikost',
+			'perms'           : 'Dovoljenja',
+			'modify'          : 'Spremenjeno',
+			'kind'            : 'Vrsta',
+			'read'            : 'beri',
+			'write'           : 'piši',
+			'noaccess'        : 'ni dostopa',
+			'and'             : 'in',
+			'unknown'         : 'neznan',
+			'selectall'       : 'Izberi vse datoteke',
+			'selectfiles'     : 'Izberi datotek(o)e',
+			'selectffile'     : 'Izberi prvo datoteko',
+			'selectlfile'     : 'Izberi zadnjo datoteko',
+			'viewlist'        : 'Seznam',
+			'viewicons'       : 'Ikone',
+			'places'          : 'Mesta (places)',
+			'calc'            : 'Izračun', 
+			'path'            : 'Pot do',
+			'aliasfor'        : 'Sopomenka (alias) za',
+			'locked'          : 'Zaklenjeno',
+			'dim'             : 'Dimenzije',
+			'files'           : 'Datoteke',
+			'folders'         : 'Mape',
+			'items'           : 'Predmeti',
+			'yes'             : 'da',
+			'no'              : 'ne',
+			'link'            : 'Povezava',
+			'searcresult'     : 'Rezultati iskanja',  
+			'selected'        : 'izbrani predmeti',
+			'about'           : 'Več o',
+			'shortcuts'       : 'Bližnjice',
+			'help'            : 'Pomoč',
+			'webfm'           : 'Spletni upravitelj datotek',
+			'ver'             : 'Verzija',
+			'protocolver'     : 'verzija protokola',
+			'homepage'        : 'Domača stran',
+			'docs'            : 'Dokumentacija',
+			'github'          : 'Fork us on Github',
+			'twitter'         : 'Sledi na twitterju',
+			'facebook'        : 'Pridruži se nam na facebook-u',
+			'team'            : 'Tim',
+			'chiefdev'        : 'Glavni razvijalec',
+			'developer'       : 'razvijalec',
+			'contributor'     : 'contributor',
+			'maintainer'      : 'vzdrževalec',
+			'translator'      : 'prevajalec',
+			'icons'           : 'Ikone',
+			'dontforget'      : 'In ne pozabi na brisačo',
+			'shortcutsof'     : 'Bližnjica onemogočena',
+			'dropFiles'       : 'Datoteke spusti tukaj',
+			'or'              : 'ali',
+			'selectForUpload' : 'Izberi datoteke za nalaganje',
+			'moveFiles'       : 'Premakni datoteke',
+			'copyFiles'       : 'Kopiraj datoteke',
+			'rmFromPlaces'    : 'Izbriši iz mesta (places)',
+			'aspectRatio'     : 'Razmerje slike',
+			'scale'           : 'Razširi',
+			'width'           : 'Širina',
+			'height'          : 'Višina',
+			'resize'          : 'Povečaj',
+			'crop'            : 'Obreži',
+			'rotate'          : 'Zavrti',
+			'rotate-cw'       : 'Zavrti 90 st. v smeri ure',
+			'rotate-ccw'      : 'Zavrti 90 st. v obratni smeri ure',
+			'degree'          : 'Stopnja',
+			'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012
+			'protocol'            : 'Protocol', // added 18.04.2012
+			'host'                : 'Host', // added 18.04.2012
+			'port'                : 'Port', // added 18.04.2012
+			'user'                : 'User', // added 18.04.2012
+			'pass'                : 'Password', // added 18.04.2012
+			
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : 'Neznan',
+			'kindFolder'      : 'Mapa',
+			'kindAlias'       : 'Sopomenka (alias)',
+			'kindAliasBroken' : 'Nedelujoča sopomenka (alias)',
+			// applications
+			'kindApp'         : 'Program',
+			'kindPostscript'  : 'Postscript dokument',
+			'kindMsOffice'    : 'Microsoft Office dokument',
+			'kindMsWord'      : 'Microsoft Word dokument',
+			'kindMsExcel'     : 'Microsoft Excel dokument',
+			'kindMsPP'        : 'Microsoft Powerpoint predstavitev',
+			'kindOO'          : 'Open Office dokument',
+			'kindAppFlash'    : 'Flash program',
+			'kindPDF'         : 'Portable Document Format (PDF)',
+			'kindTorrent'     : 'Bittorrent datoteka',
+			'kind7z'          : '7z arhiv',
+			'kindTAR'         : 'TAR arhiv',
+			'kindGZIP'        : 'GZIP arhiv',
+			'kindBZIP'        : 'BZIP arhiv',
+			'kindXZ'          : 'XZ arhiv',
+			'kindZIP'         : 'ZIP arhiv',
+			'kindRAR'         : 'RAR arhiv',
+			'kindJAR'         : 'Java JAR datoteka',
+			'kindTTF'         : 'True Type font',
+			'kindOTF'         : 'Open Type font',
+			'kindRPM'         : 'RPM paket',
+			// texts
+			'kindText'        : 'Tekst dokument',
+			'kindTextPlain'   : 'Samo tekst',
+			'kindPHP'         : 'PHP koda',
+			'kindCSS'         : 'Cascading style sheet (CSS)',
+			'kindHTML'        : 'HTML dokument',
+			'kindJS'          : 'Javascript koda',
+			'kindRTF'         : 'Rich Text Format (RTF)',
+			'kindC'           : 'C koda',
+			'kindCHeader'     : 'C header koda',
+			'kindCPP'         : 'C++ koda',
+			'kindCPPHeader'   : 'C++ header koda',
+			'kindShell'       : 'Unix shell skripta',
+			'kindPython'      : 'Python kdoa',
+			'kindJava'        : 'Java koda',
+			'kindRuby'        : 'Ruby koda',
+			'kindPerl'        : 'Perl skripta',
+			'kindSQL'         : 'SQL koda',
+			'kindXML'         : 'XML dokument',
+			'kindAWK'         : 'AWK koda',
+			'kindCSV'         : 'Besedilo ločeno z vejico (CSV)',
+			'kindDOCBOOK'     : 'Docbook XML dokument',
+			// images
+			'kindImage'       : 'Slika',
+			'kindBMP'         : 'BMP slika',
+			'kindJPEG'        : 'JPEG slika',
+			'kindGIF'         : 'GIF slika',
+			'kindPNG'         : 'PNG slika',
+			'kindTIFF'        : 'TIFF slika',
+			'kindTGA'         : 'TGA slika',
+			'kindPSD'         : 'Adobe Photoshop slika',
+			'kindXBITMAP'     : 'X bitmap slika',
+			'kindPXM'         : 'Pixelmator slika',
+			// media
+			'kindAudio'       : 'Avdio medija',
+			'kindAudioMPEG'   : 'MPEG zvok',
+			'kindAudioMPEG4'  : 'MPEG-4 zvok',
+			'kindAudioMIDI'   : 'MIDI zvok',
+			'kindAudioOGG'    : 'Ogg Vorbis zvok',
+			'kindAudioWAV'    : 'WAV zvok',
+			'AudioPlaylist'   : 'MP3 seznam',
+			'kindVideo'       : 'Video medija',
+			'kindVideoDV'     : 'DV film',
+			'kindVideoMPEG'   : 'MPEG film',
+			'kindVideoMPEG4'  : 'MPEG-4 film',
+			'kindVideoAVI'    : 'AVI film',
+			'kindVideoMOV'    : 'Quick Time film',
+			'kindVideoWM'     : 'Windows Media film',
+			'kindVideoFlash'  : 'Flash film',
+			'kindVideoMKV'    : 'Matroska film',
+			'kindVideoOGG'    : 'Ogg film'
+		}
+	};
+}));

+ 374 - 0
src/assets/js/i18n/elfinder.sr.js

@@ -0,0 +1,374 @@
+ /**
+ * Serbian translation
+ * @author Momčilo m0k1 Mićanović <moki.forum@gmail.com>
+ * @version 2014-12-19
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.sr = {
+		translator : 'Momčilo m0k1 Mićanović &lt;moki.forum@gmail.com&gt;',
+		language   : 'Srpski',
+		direction  : 'ltr',
+		dateFormat : 'd.m.Y H:i',
+		fancyDateFormat : '$1 H:i',
+		messages   : {
+			
+			/********************************** errors **********************************/
+			'error'                : 'Greška',
+			'errUnknown'           : 'Nepoznata greška.',
+			'errUnknownCmd'        : 'Nepoznata komanda.',
+			'errJqui'              : 'Neispravna konfiguracija jQuery UI. Komponente koje mogu da se odabiru, povlače, izbacuju moraju biti uključene.',
+			'errNode'              : 'elFinder zahteva DOM Element da bude kreiran.',
+			'errURL'               : 'Neispravna elFinder konfiguracija! URL opcija nije postavljena.',
+			'errAccess'            : 'Pristup odbijen.',
+			'errConnect'           : 'Nije moguće povezivanje s skriptom.',
+			'errAbort'             : 'Veza prekinuta.',
+			'errTimeout'           : 'Veza odbačena.',
+			'errNotFound'          : 'Skripta nije pronađena.',
+			'errResponse'          : 'Neispravan odgovor skripte.',
+			'errConf'              : 'Neispravna konfiguracija skripte.',
+			'errJSON'              : 'PHP JSON modul nije instaliran.',
+			'errNoVolumes'         : 'Vidljivi volumeni nisu dostupni.',
+			'errCmdParams'         : 'Nevažeći parametri za komandu "$1".',
+			'errDataNotJSON'       : 'Podaci nisu JSON.',
+			'errDataEmpty'         : 'Podaci nisu prazni.',
+			'errCmdReq'            : 'Skripta zahteva komandu.',
+			'errOpen'              : 'Nemoguće otvoriti "$1".',
+			'errNotFolder'         : 'Objekat nije folder.',
+			'errNotFile'           : 'Objekat nije datoteka.',
+			'errRead'              : 'Nemoguće pročitati "$1".',
+			'errWrite'             : 'Nemoguće pisati u "$1".',
+			'errPerm'              : 'Dozvola je odbijena.',
+			'errLocked'            : '"$1" je zaključan i nemože biti preimenovan, premešten ili obrisan.',
+			'errExists'            : 'Datoteka zvana "$1" već postoji.',
+			'errInvName'           : 'Neispravno ime datoteke.',
+			'errFolderNotFound'    : 'Folder nije pronađen.',
+			'errFileNotFound'      : 'Datoteka nije pronađena.',
+			'errTrgFolderNotFound' : 'Izabrani folder "$1" nije pronađen.',
+			'errPopup'             : 'Pretraživač sprečava otvaranje iskačućih prozora. Da otvorite datoteku uključite iskačuće prozore u opcijama pretraživača.',
+			'errMkdir'             : 'Nemoguće kreirati folder "$1".',
+			'errMkfile'            : 'Nemoguće kreirati datoteku "$1".',
+			'errRename'            : 'Nemoguće preimenovati datoteku "$1".',
+			'errCopyFrom'          : 'Kopiranje datoteki sa "$1" nije dozvoljeno.',
+			'errCopyTo'            : 'Kopiranje datoteki na "$1" nije dozvoljeno.',
+			'errUpload'            : 'Greska pri slanju.',
+			'errUploadFile'        : 'Nemoguće poslati "$1".',
+			'errUploadNoFiles'     : 'Nisu pronađene datoteke za slanje.',
+			'errUploadTotalSize'   : 'Podaci premašuju najveću dopuštenu veličinu.',
+			'errUploadFileSize'    : 'Datoteka premašuje najveću dopuštenu veličinu.',
+			'errUploadMime'        : 'Vrsta datoteke nije dopuštena.',
+			'errUploadTransfer'    : '"$1" greška prilikom slanja.',
+			'errNotReplace'        : 'Object "$1" already exists at this location and can not be replaced by object with another type.',
+			'errReplace'           : 'Unable to replace "$1".',
+			'errSave'              : 'Nemožeš sačuvati "$1".',
+			'errCopy'              : 'Nemožeš kopirati "$1".',
+			'errMove'              : 'Nemožeš premestiti "$1".',
+			'errCopyInItself'      : 'Nemožeš kopirati "$1" na istu lokaciju.',
+			'errRm'                : 'Nemožeš obrisati "$1".',
+			'errRmSrc'             : 'Unable remove source file(s).',
+			'errExtract'           : 'Nemoguće izvaditi datoteke iz "$1".',
+			'errArchive'           : 'Nemoguće kreirati arhivu.',
+			'errArcType'           : 'Nepodržani tip arhive.',
+			'errNoArchive'         : 'Datoteka nije arhiva ili je nepodržani tip arhive.',
+			'errCmdNoSupport'      : 'Skripta nepodržava ovu komandu.',
+			'errReplByChild'       : 'Folder “$1” ne može biti zamenut stavkom koju sadrži.',
+			'errArcSymlinks'       : 'Zbog bezbednosnih razloga ne možete raspakovati arhive koje sadrže simboličke veze ili datoteke sa nedozvoljenim imenima.',
+			'errArcMaxSize'        : 'Arhiva je dostigla maksimalnu veličinu.',
+			'errResize'            : 'Nemoguće promeniti veličinu "$1".',
+			'errResizeDegree'      : 'Invalid rotate degree.',
+			'errResizeRotate'      : 'Unable to rotate image.',
+			'errResizeSize'        : 'Invalid image size.',
+			'errResizeNoChange'    : 'Image size not changed.',
+			'errUsupportType'      : 'nepodržan tip datoteke.',
+			'errNotUTF8Content'    : 'Datoteka "$1" nije u UTF-8  formati i ne može biti izmenjena.',
+			'errNetMount'          : 'Nije moguće montirati "$1".',
+			'errNetMountNoDriver'  : 'Nepodržani protokol.',
+			'errNetMountFailed'    : 'Montiranje neuspelo.',
+			'errNetMountHostReq'   : 'Host je potreban.',
+			'errSessionExpires'    : 'Your session has expired due to inactivity.',
+			'errCreatingTempDir'   : 'Unable to create temporary directory: "$1"',
+			'errFtpDownloadFile'   : 'Unable to download file from FTP: "$1"',
+			'errFtpUploadFile'     : 'Unable to upload file to FTP: "$1"',
+			'errFtpMkdir'          : 'Unable to create remote directory on FTP: "$1"',
+			'errArchiveExec'       : 'Error while archiving files: "$1"',
+			'errExtractExec'       : 'Error while extracting files: "$1"',
+
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'Kreiraj arhivu',
+			'cmdback'      : 'Nazad',
+			'cmdcopy'      : 'Kopiraj',
+			'cmdcut'       : 'Iseci',
+			'cmddownload'  : 'Preuzmi',
+			'cmdduplicate' : 'Dupliraj',
+			'cmdedit'      : 'Izmeni datoteku',
+			'cmdextract'   : 'Raspakuj arhivu',
+			'cmdforward'   : 'Napred',
+			'cmdgetfile'   : 'Izaberi datoteke',
+			'cmdhelp'      : 'O ovom softveru',
+			'cmdhome'      : 'Početna',
+			'cmdinfo'      : 'Proveri informacije',
+			'cmdmkdir'     : 'Novi folder',
+			'cmdmkfile'    : 'Nova tekstualna datoteka',
+			'cmdopen'      : 'Otvori',
+			'cmdpaste'     : 'Zalepi',
+			'cmdquicklook' : 'Pregledaj',
+			'cmdreload'    : 'Povno učitaj',
+			'cmdrename'    : 'Preimenuj',
+			'cmdrm'        : 'Obriši',
+			'cmdsearch'    : 'Pronađi datoteke',
+			'cmdup'        : 'Idi na nadređeni folder',
+			'cmdupload'    : 'Pošalji datoteke',
+			'cmdview'      : 'Pogledaj',
+			'cmdresize'    : 'Promeni veličinu slike',
+			'cmdsort'      : 'Sortiraj',
+			'cmdnetmount'  : 'Mount network volume',
+			
+			/*********************************** buttons ***********************************/ 
+			'btnClose'  : 'Zatvori',
+			'btnSave'   : 'Sačuvaj',
+			'btnRm'     : 'Preimenuj',
+			'btnApply'  : 'Potvrdi',
+			'btnCancel' : 'Prekini',
+			'btnNo'     : 'Ne',
+			'btnYes'    : 'Da',
+			'btnMount'  : 'Mount',
+			
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'Otvaranje foldera',
+			'ntffile'     : 'Otvaranje datoteke',
+			'ntfreload'   : 'Ponovo učitavanje sadržaja foldera',
+			'ntfmkdir'    : 'Kreiranje foldera',
+			'ntfmkfile'   : 'Kreiranje datoteke',
+			'ntfrm'       : 'Brisanje datoteke',
+			'ntfcopy'     : 'Kopiranje datoteke',
+			'ntfmove'     : 'Premeštanje datoteke',
+			'ntfprepare'  : 'Priprema za kopiranje dateoteke',
+			'ntfrename'   : 'Primenovanje datoteke',
+			'ntfupload'   : 'Slanje datoteke',
+			'ntfdownload' : 'Preuzimanje datoteke',
+			'ntfsave'     : 'Čuvanje datoteke',
+			'ntfarchive'  : 'Kreiranje arhive',
+			'ntfextract'  : 'Izdvajanje datoteka iz arhive',
+			'ntfsearch'   : 'Pretraga datoteka',
+			'ntfresize'   : 'Resizing images',
+			'ntfsmth'     : 'Radim nešto >_<',
+			'ntfloadimg'  : 'Učitavanje slike',
+			'ntfnetmount' : 'Montiranje mrežnog volumena', 
+			'ntfdim'      : 'Acquiring image dimension',
+			
+			/************************************ dates **********************************/
+			'dateUnknown' : 'nepoznat',
+			'Today'       : 'Danas',
+			'Yesterday'   : 'Sutra',
+			'msJan'       : 'Jan',
+			'msFeb'       : 'Feb',
+			'msMar'       : 'Mar',
+			'msApr'       : 'Apr',
+			'msMay'       : 'Maj',
+			'msJun'       : 'Jun',
+			'msJul'       : 'Jul',
+			'msAug'       : 'Avg',
+			'msSep'       : 'Sep',
+			'msOct'       : 'Okt',
+			'msNov'       : 'Nov',
+			'msDec'       : 'Dec',
+			'January'     : 'Januar',
+			'February'    : 'Februar',
+			'March'       : 'Mart',
+			'April'       : 'April',
+			'May'         : 'Maj',
+			'June'        : 'Jun',
+			'July'        : 'Jul',
+			'August'      : 'Avgust',
+			'September'   : 'Septembar',
+			'October'     : 'Oktobar',
+			'November'    : 'Novembar',
+			'December'    : 'Decembar',
+			'Sunday'      : 'Nedelja', 
+			'Monday'      : 'Ponedeljak', 
+			'Tuesday'     : 'Utorak', 
+			'Wednesday'   : 'Sreda', 
+			'Thursday'    : 'Četvrtak', 
+			'Friday'      : 'Petak', 
+			'Saturday'    : 'Subota',
+			'Sun'         : 'Ned', 
+			'Mon'         : 'Pon', 
+			'Tue'         : 'Uto', 
+			'Wed'         : 'Sre', 
+			'Thu'         : 'Čet', 
+			'Fri'         : 'Pet', 
+			'Sat'         : 'Sub',
+			
+			/******************************** sort variants ********************************/
+			'sortname'          : 'po imenu', 
+			'sortkind'          : 'po vrsti', 
+			'sortsize'          : 'po veličini',
+			'sortdate'          : 'po datumu',
+			'sortFoldersFirst'  : 'Prvo folderi',
+			
+			/********************************** messages **********************************/
+			'confirmReq'      : 'Potrebna potvrda',
+			'confirmRm'       : 'Da li ste sigurni da želite da obrišete datoteke?<br/>Ovo se ne može poništiti!',
+			'confirmRepl'     : 'Zameniti stare datoteke sa novima?',
+			'apllyAll'        : 'Potvrdi za sve',
+			'name'            : 'Ime',
+			'size'            : 'Veličina',
+			'perms'           : 'Dozvole',
+			'modify'          : 'Izmenjeno',
+			'kind'            : 'Vrsta',
+			'read'            : 'čitanje',
+			'write'           : 'pisanje',
+			'noaccess'        : 'bez pristupa',
+			'and'             : 'i',
+			'unknown'         : 'nepoznato',
+			'selectall'       : 'Izaberi sve datoteke',
+			'selectfiles'     : 'Izaberi datoteku(e)',
+			'selectffile'     : 'Izaberi prvu datoteku',
+			'selectlfile'     : 'Izaberi poslednju datoteku',
+			'viewlist'        : 'Popisni prikaz',
+			'viewicons'       : 'Pregled ikona',
+			'places'          : 'Mesta',
+			'calc'            : 'Izračunaj', 
+			'path'            : 'Putanja',
+			'aliasfor'        : 'Nadimak za',
+			'locked'          : 'Zaključano',
+			'dim'             : 'Dimenzije',
+			'files'           : 'Datoteke',
+			'folders'         : 'Folderi',
+			'items'           : 'Stavke',
+			'yes'             : 'da',
+			'no'              : 'ne',
+			'link'            : 'Veza',
+			'searcresult'     : 'Rezultati pretrage',  
+			'selected'        : 'odabrane stavke',
+			'about'           : 'O softveru',
+			'shortcuts'       : 'Prečice',
+			'help'            : 'Pomoć',
+			'webfm'           : 'Web menađer datoteka',
+			'ver'             : 'Verzija',
+			'protocolver'     : 'verzija protokla',
+			'homepage'        : 'Adresa projekta',
+			'docs'            : 'Dokumentacija',
+			'github'          : 'Forkuj nas na Github',
+			'twitter'         : 'Prati nas na twitter',
+			'facebook'        : 'Pridruži nam se na facebook',
+			'team'            : 'Tim',
+			'chiefdev'        : 'glavni programer',
+			'developer'       : 'programer',
+			'contributor'     : 'pomoćnik',
+			'maintainer'      : 'održavatelj',
+			'translator'      : 'prevodilac',
+			'icons'           : 'Ikone',
+			'dontforget'      : 'i ne zaboravite da ponesete peškir',
+			'shortcutsof'     : 'Prečice isključene',
+			'dropFiles'       : 'Prevucite datoteke ovde',
+			'or'              : 'ili',
+			'selectForUpload' : 'Odaberite datoteke za slanje',
+			'moveFiles'       : 'Premesti datoteke',
+			'copyFiles'       : 'Kopiraj datoteke',
+			'rmFromPlaces'    : 'Ukloni iz mesta',
+			'aspectRatio'     : 'Omer širine i visine',
+			'scale'           : 'Razmera',
+			'width'           : 'Širina',
+			'height'          : 'Visina',
+			'resize'          : 'Promeni veličinu',
+			'crop'            : 'Iseci',
+			'rotate'          : 'Rotiraj',
+			'rotate-cw'       : 'Rotiraj 90 stepeni CW',
+			'rotate-ccw'      : 'Rotiraj 90 stepeni CCW',
+			'degree'          : 'Stepeni',
+			'netMountDialogTitle' : 'Montiraj mrežni volumen', 
+			'protocol'            : 'Protokol', 
+			'host'                : 'Host', 
+			'port'                : 'Port', 
+			'user'                : 'Korisničko Ime', 
+			'pass'                : 'Lozinka', 
+
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : 'Nepoznat',
+			'kindFolder'      : 'Folder',
+			'kindAlias'       : 'Nadimak',
+			'kindAliasBroken' : 'Neispravan nadimak',
+			// applications
+			'kindApp'         : 'Aplikacija',
+			'kindPostscript'  : 'Postscript dokument',
+			'kindMsOffice'    : 'Microsoft Office dokument',
+			'kindMsWord'      : 'Microsoft Word dokument',
+			'kindMsExcel'     : 'Microsoft Excel dokument',
+			'kindMsPP'        : 'Microsoft Powerpoint prezentacija',
+			'kindOO'          : 'Open Office dokument',
+			'kindAppFlash'    : 'Flash aplikacija',
+			'kindPDF'         : 'Portable Document Format (PDF)',
+			'kindTorrent'     : 'Bittorrent datoteka',
+			'kind7z'          : '7z arhiva',
+			'kindTAR'         : 'TAR arhiva',
+			'kindGZIP'        : 'GZIP arhiva',
+			'kindBZIP'        : 'BZIP arhiva',
+			'kindXZ'          : 'XZ arhiva',
+			'kindZIP'         : 'ZIP arhiva',
+			'kindRAR'         : 'RAR arhiva',
+			'kindJAR'         : 'Java JAR datoteka',
+			'kindTTF'         : 'True Type font',
+			'kindOTF'         : 'Open Type font',
+			'kindRPM'         : 'RPM paket',
+			// texts
+			'kindText'        : 'Teokstualni dokument',
+			'kindTextPlain'   : 'Čist tekst',
+			'kindPHP'         : 'PHP kod',
+			'kindCSS'         : 'CSS kod',
+			'kindHTML'        : 'HTML dokument',
+			'kindJS'          : 'Javascript kod',
+			'kindRTF'         : 'Rich Text Format',
+			'kindC'           : 'C kod',
+			'kindCHeader'     : 'C header kod',
+			'kindCPP'         : 'C++ kod',
+			'kindCPPHeader'   : 'C++ header kod',
+			'kindShell'       : 'Unix shell skripta',
+			'kindPython'      : 'Python kod',
+			'kindJava'        : 'Java kod',
+			'kindRuby'        : 'Ruby kod',
+			'kindPerl'        : 'Perl skripta',
+			'kindSQL'         : 'SQL kod',
+			'kindXML'         : 'XML dokument',
+			'kindAWK'         : 'AWK kod',
+			'kindCSV'         : 'Comma separated values',
+			'kindDOCBOOK'     : 'Docbook XML dokument',
+			// images
+			'kindImage'       : 'Slika',
+			'kindBMP'         : 'BMP slika',
+			'kindJPEG'        : 'JPEG slika',
+			'kindGIF'         : 'GIF slika',
+			'kindPNG'         : 'PNG slika',
+			'kindTIFF'        : 'TIFF slika',
+			'kindTGA'         : 'TGA slika',
+			'kindPSD'         : 'Adobe Photoshop slika',
+			'kindXBITMAP'     : 'X bitmap slika',
+			'kindPXM'         : 'Pixelmator slika',
+			// media
+			'kindAudio'       : 'Zvuk',
+			'kindAudioMPEG'   : 'MPEG zvuk',
+			'kindAudioMPEG4'  : 'MPEG-4 zvuk',
+			'kindAudioMIDI'   : 'MIDI zvuk',
+			'kindAudioOGG'    : 'Ogg Vorbis zvuk',
+			'kindAudioWAV'    : 'WAV zvuk',
+			'AudioPlaylist'   : 'MP3 lista',
+			'kindVideo'       : 'Video',
+			'kindVideoDV'     : 'DV video',
+			'kindVideoMPEG'   : 'MPEG video',
+			'kindVideoMPEG4'  : 'MPEG-4 video',
+			'kindVideoAVI'    : 'AVI video',
+			'kindVideoMOV'    : 'Quick Time video',
+			'kindVideoWM'     : 'Windows Media video',
+			'kindVideoFlash'  : 'Flash video',
+			'kindVideoMKV'    : 'Matroska video',
+			'kindVideoOGG'    : 'Ogg video'
+		}
+	};
+}));

+ 375 - 0
src/assets/js/i18n/elfinder.sv.js

@@ -0,0 +1,375 @@
+/**
+ * Swedish translation
+ * @author Gabriel Satzger <gabriel.satzger@sbg.se>
+ * @version 2014-12-19
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.sv = {
+		translator : 'Gabriel Satzger &lt;gabriel.satzger@sbg.se&gt;',
+		language   : 'Svenska',
+		direction  : 'ltr',
+		dateFormat : 'Y-m-d H:i',
+		fancyDateFormat : '$1 H:i',
+		messages   : {
+			
+			/********************************** errors **********************************/
+			'error'                : 'Error',
+			'errUnknown'           : 'Okänt error.',
+			'errUnknownCmd'        : 'Okänt kommando.',
+			'errJqui'              : 'Felaktig jQuery UI konfiguration. Komponenterna selectable, draggable och droppable måste vara inkluderade.',
+			'errNode'              : 'elFinder kräver att DOM Elementen skapats.',
+			'errURL'               : 'Felaktig elFinder konfiguration! URL parametern är inte satt.',
+			'errAccess'            : 'Åtkomst nekad.',
+			'errConnect'           : 'Kan inte ansluta till backend.',
+			'errAbort'             : 'Anslutningen avbröts.',
+			'errTimeout'           : 'Anslutningen löpte ut.',
+			'errNotFound'          : 'Backend hittades inte.',
+			'errResponse'          : 'Ogiltig backend svar.',
+			'errConf'              : 'Ogiltig backend konfiguration.',
+			'errJSON'              : 'PHP JSON modul är inte installerad.',
+			'errNoVolumes'         : 'Läsbara volymer är inte tillgängliga.',
+			'errCmdParams'         : 'Ogiltiga parametrar för kommandot "$1".',
+			'errDataNotJSON'       : 'Datan är inte JSON.',
+			'errDataEmpty'         : 'Datan är tom.',
+			'errCmdReq'            : 'Backend begäran kräver kommandonamn.',
+			'errOpen'              : 'Kan inte öppna "$1".',
+			'errNotFolder'         : 'Objektet är inte en mapp.',
+			'errNotFile'           : 'Objektet är inte en fil.',
+			'errRead'              : 'Kan inte läsa "$1".',
+			'errWrite'             : 'Kan inte skriva till "$1".',
+			'errPerm'              : 'Tillstånd nekat.',
+			'errLocked'            : '"$1" är låst och kan inte döpas om, flyttas eller tas bort.',
+			'errExists'            : 'Fil med namn "$1" finns redan.',
+			'errInvName'           : 'Ogiltigt filnamn.',
+			'errFolderNotFound'    : 'Mappen hittades inte.',
+			'errFileNotFound'      : 'Filen hittades inte.',
+			'errTrgFolderNotFound' : 'Målmappen "$1" hittades inte.',
+			'errPopup'             : 'Webbläsaren hindrade popup-fönstret att öppnas. Ändra i webbläsarens inställningar för att kunna öppna filen.',
+			'errMkdir'             : 'Kan inte skapa mappen "$1".',
+			'errMkfile'            : 'Kan inte skapa filen "$1".',
+			'errRename'            : 'Kan inte döpa om "$1".',
+			'errCopyFrom'          : 'Kopiera filer från volym "$1" tillåts inte.',
+			'errCopyTo'            : 'Kopiera filer till volym "$1" tillåts inte.',
+			'errUpload'            : 'Error vid uppladdningen.',
+			'errUploadFile'        : 'Kan inte ladda upp "$1".',
+			'errUploadNoFiles'     : 'Inga filer hittades för uppladdning.',
+			'errUploadTotalSize'   : 'Data överskrider den högsta tillåtna storleken.',
+			'errUploadFileSize'    : 'Filen överskrider den högsta tillåtna storleken.',
+			'errUploadMime'        : 'Otillåten filtyp.',
+			'errUploadTransfer'    : '"$1" överföringsfel.',
+			'errNotReplace'        : 'Object "$1" already exists at this location and can not be replaced by object with another type.',
+			'errReplace'           : 'Unable to replace "$1".',
+			'errSave'              : 'Kan inte spara "$1".',
+			'errCopy'              : 'Kan inte kopiera "$1".',
+			'errMove'              : 'Kan inte flytta "$1".',
+			'errCopyInItself'      : 'Kan inte flytta "$1" till sig själv.',
+			'errRm'                : 'Kan inte ta bort "$1".',
+			'errRmSrc'             : 'Unable remove source file(s).',
+			'errExtract'           : 'Kan inte packa upp filen från "$1".',
+			'errArchive'           : 'Kan inte skapa arkiv.',
+			'errArcType'           : 'Arkivtypen stöds inte.',
+			'errNoArchive'         : 'Filen är inte av typen arkiv.',
+			'errCmdNoSupport'      : 'Backend stöder inte detta kommando.',
+			'errReplByChild'       : 'Mappen “$1” kan inte ersättas av ett objekt den innehåller.',
+			'errArcSymlinks'       : 'Av säkerhetsskäl nekas arkivet att packas upp då det innehåller symboliska länkar eller filer med ej tillåtna namn.', // edited 24.06.2012
+			'errArcMaxSize'        : 'Arkivfiler överskrider största tillåtna storlek.',
+			'errResize'            : 'Kan inte ändra storlek "$1".',
+			'errResizeDegree'      : 'Invalid rotate degree.',
+			'errResizeRotate'      : 'Unable to rotate image.',
+			'errResizeSize'        : 'Invalid image size.',
+			'errResizeNoChange'    : 'Image size not changed.',
+			'errUsupportType'      : 'Filtypen stöds inte.',
+			'errNotUTF8Content'    : 'Filen "$1" är inte i UTF-8 och kan inte redigeras.',  // added 9.11.2011
+			'errNetMount'          : 'Kan inte koppla "$1".',     // added 17.04.2012
+			'errNetMountNoDriver'  : 'Protokollet stöds inte.',     // added 17.04.2012
+			'errNetMountFailed'    : 'Kopplingen misslyckades.',             // added 17.04.2012
+			'errNetMountHostReq'   : 'Host krävs.', // added 18.04.2012
+			'errSessionExpires'    : 'Your session has expired due to inactivity.',
+			'errCreatingTempDir'   : 'Unable to create temporary directory: "$1"',
+			'errFtpDownloadFile'   : 'Unable to download file from FTP: "$1"',
+			'errFtpUploadFile'     : 'Unable to upload file to FTP: "$1"',
+			'errFtpMkdir'          : 'Unable to create remote directory on FTP: "$1"',
+			'errArchiveExec'       : 'Error while archiving files: "$1"',
+			'errExtractExec'       : 'Error while extracting files: "$1"',
+			
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'Skapa arkiv',
+			'cmdback'      : 'Tillbaka',
+			'cmdcopy'      : 'Kopiera',
+			'cmdcut'       : 'Klipp ut',
+			'cmddownload'  : 'Ladda ned',
+			'cmdduplicate' : 'Duplicera',
+			'cmdedit'      : 'Redigera fil',
+			'cmdextract'   : 'Extrahera filer från arkiv',
+			'cmdforward'   : 'Framåt',
+			'cmdgetfile'   : 'Välj filer',
+			'cmdhelp'      : 'Om denna programvara',
+			'cmdhome'      : 'Hem',
+			'cmdinfo'      : 'Visa info',
+			'cmdmkdir'     : 'Ny mapp',
+			'cmdmkfile'    : 'Ny textfil',
+			'cmdopen'      : 'Öppna',
+			'cmdpaste'     : 'Klistra in',
+			'cmdquicklook' : 'Förhandsgranska',
+			'cmdreload'    : 'Ladda om',
+			'cmdrename'    : 'Döp om',
+			'cmdrm'        : 'Radera',
+			'cmdsearch'    : 'Hitta filer',
+			'cmdup'        : 'Gå till överordnade katalog',
+			'cmdupload'    : 'Ladda upp filer',
+			'cmdview'      : 'Visa',
+			'cmdresize'    : 'Ändra bildstorlek',
+			'cmdsort'      : 'Sortera',
+			'cmdnetmount'  : 'Mount network volume',
+			
+			/*********************************** buttons ***********************************/ 
+			'btnClose'  : 'Stäng',
+			'btnSave'   : 'Spara',
+			'btnRm'     : 'Ta bort',
+			'btnApply'  : 'Verkställ',
+			'btnCancel' : 'Ångra',
+			'btnNo'     : 'Nej',
+			'btnYes'    : 'Ja',
+			'btnMount'  : 'Mount',
+			
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'Öppnar mapp',
+			'ntffile'     : 'Öppnar fil',
+			'ntfreload'   : 'Laddar om mappinnehållet',
+			'ntfmkdir'    : 'Skapar katalog',
+			'ntfmkfile'   : 'Skapar fil',
+			'ntfrm'       : 'Tar bort filer',
+			'ntfcopy'     : 'Kopierar filer',
+			'ntfmove'     : 'Flyttar filer',
+			'ntfprepare'  : 'Förbereder att flytta filer',
+			'ntfrename'   : 'Döper om filer',
+			'ntfupload'   : 'Laddar upp filer',
+			'ntfdownload' : 'Laddar ner filer',
+			'ntfsave'     : 'Sparar filer',
+			'ntfarchive'  : 'Skapar arkiv',
+			'ntfextract'  : 'Extraherar filer från arkiv',
+			'ntfsearch'   : 'Söker filer',
+			'ntfresize'   : 'Resizing images',
+			'ntfsmth'     : 'Gör någonting >_<',
+			'ntfloadimg'  : 'Laddar bild',
+			'ntfnetmount' : 'kopplar nätverksvolym', // added 18.04.2012
+			'ntfdim'      : 'Acquiring image dimension',
+			
+			/************************************ dates **********************************/
+			'dateUnknown' : 'okänt',
+			'Today'       : 'Idag',
+			'Yesterday'   : 'Igår',
+			'msJan'       : 'Jan',
+			'msFeb'       : 'Feb',
+			'msMar'       : 'Mar',
+			'msApr'       : 'Apr',
+			'msMay'       : 'Maj',
+			'msJun'       : 'Jun',
+			'msJul'       : 'Jul',
+			'msAug'       : 'Aug',
+			'msSep'       : 'Sep',
+			'msOct'       : 'Okt',
+			'msNov'       : 'Nov',
+			'msDec'       : 'Dec',
+			'January'     : 'Januari',
+			'February'    : 'Februari',
+			'March'       : 'Mars',
+			'April'       : 'April',
+			'May'         : 'Maj',
+			'June'        : 'Juni',
+			'July'        : 'Juli',
+			'August'      : 'Augusti',
+			'September'   : 'September',
+			'October'     : 'Oktober',
+			'November'    : 'November',
+			'December'    : 'December',
+			'Sunday'      : 'Söndag', 
+			'Monday'      : 'Måndag', 
+			'Tuesday'     : 'Tisdag', 
+			'Wednesday'   : 'Onsdag', 
+			'Thursday'    : 'Torsdag', 
+			'Friday'      : 'Fredag', 
+			'Saturday'    : 'Lördag',
+			'Sun'         : 'Sön', 
+			'Mon'         : 'Mån', 
+			'Tue'         : 'Tis', 
+			'Wed'         : 'Ons', 
+			'Thu'         : 'Tor', 
+			'Fri'         : 'Fre', 
+			'Sat'         : 'Lör',
+			
+			/******************************** sort variants ********************************/
+			'sortname'          : 'efter namn', 
+			'sortkind'          : 'efter sort', 
+			'sortsize'          : 'efter storlek',
+			'sortdate'          : 'efter datum',
+			'sortFoldersFirst'  : 'Mappar först', // added 22.06.2012
+			
+			/********************************** messages **********************************/
+			'confirmReq'      : 'Bekräftelse krävs',
+			'confirmRm'       : 'Är du säker på att du vill ta bort filer? <br/> Detta kan inte ångras!',
+			'confirmRepl'     : 'Ersätt den gamla filen med en ny?',
+			'apllyAll'        : 'Använd för alla',
+			'name'            : 'Namn',
+			'size'            : 'Storlek',
+			'perms'           : 'Rättigheter',
+			'modify'          : 'Ändrad',
+			'kind'            : 'Sort',
+			'read'            : 'läs',
+			'write'           : 'skriv',
+			'noaccess'        : 'ingen åtkomst',
+			'and'             : 'och',
+			'unknown'         : 'okänd',
+			'selectall'       : 'Välj alla filer',
+			'selectfiles'     : 'Välj fil(er)',
+			'selectffile'     : 'Välj första filen',
+			'selectlfile'     : 'Välj sista filen',
+			'viewlist'        : 'Listvy',
+			'viewicons'       : 'Ikonvy',
+			'places'          : 'Platser',
+			'calc'            : 'Beräkna', 
+			'path'            : 'Sökväg',
+			'aliasfor'        : 'Alias för',
+			'locked'          : 'Låst',
+			'dim'             : 'Dimensioner',
+			'files'           : 'Filer',
+			'folders'         : 'Mappar',
+			'items'           : 'Objekt',
+			'yes'             : 'ja',
+			'no'              : 'nej',
+			'link'            : 'Länk',
+			'searcresult'     : 'Sökresultat',  
+			'selected'        : 'valda objekt',
+			'about'           : 'Om',
+			'shortcuts'       : 'Genväg',
+			'help'            : 'Hjälp',
+			'webfm'           : 'Webbfilhanterare',
+			'ver'             : 'Version',
+			'protocolver'     : 'protokolversion',
+			'homepage'        : 'Projekt hemsida',
+			'docs'            : 'Dokumentation',
+			'github'          : 'Forka oss på Github',
+			'twitter'         : 'Följ oss på twitter',
+			'facebook'        : 'Följ oss på facebook',
+			'team'            : 'Team',
+			'chiefdev'        : 'senior utvecklare',
+			'developer'       : 'utvecklare',
+			'contributor'     : 'bidragsgivare',
+			'maintainer'      : 'underhållare',
+			'translator'      : 'översättare',
+			'icons'           : 'Ikoner',
+			'dontforget'      : 'och glöm inte att ta med din handduk',
+			'shortcutsof'     : 'Genvägar avaktiverade',
+			'dropFiles'       : 'Släpp filerna här',
+			'or'              : 'eller',
+			'selectForUpload' : 'Välj filer att ladda upp',
+			'moveFiles'       : 'Flytta filer',
+			'copyFiles'       : 'Kopiera filer',
+			'rmFromPlaces'    : 'Ta bort från platser',
+			'aspectRatio'     : 'Aspekt ratio',
+			'scale'           : 'Skala',
+			'width'           : 'Bredd',
+			'height'          : 'Höjd',
+			'resize'          : 'Ändra storlek',
+			'crop'            : 'Beskär',
+			'rotate'          : 'Rotera',
+			'rotate-cw'       : 'Rotera 90 grader medurs',
+			'rotate-ccw'      : 'Rotera 90 grader moturs',
+			'degree'          : 'Grader',
+			'netMountDialogTitle' : 'Koppla nätverksvolym', // added 18.04.2012
+			'protocol'            : 'Protokol', // added 18.04.2012
+			'host'                : 'Host', // added 18.04.2012
+			'port'                : 'Port', // added 18.04.2012
+			'user'                : 'användare', // added 18.04.2012
+			'pass'                : 'Lösenord', // added 18.04.2012
+			
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : 'Okänd',
+			'kindFolder'      : 'Mapp',
+			'kindAlias'       : 'Alias',
+			'kindAliasBroken' : 'Trasigt alias',
+			// applications
+			'kindApp'         : 'Applikation',
+			'kindPostscript'  : 'Postscript',
+			'kindMsOffice'    : 'Microsoft Office',
+			'kindMsWord'      : 'Microsoft Word',
+			'kindMsExcel'     : 'Microsoft Excel',
+			'kindMsPP'        : 'Microsoft Powerpoint',
+			'kindOO'          : 'Open Office',
+			'kindAppFlash'    : 'Flash',
+			'kindPDF'         : 'Portable Document Format (PDF)',
+			'kindTorrent'     : 'Bittorrent',
+			'kind7z'          : '7z',
+			'kindTAR'         : 'TAR',
+			'kindGZIP'        : 'GZIP',
+			'kindBZIP'        : 'BZIP',
+			'kindXZ'          : 'XZ',
+			'kindZIP'         : 'ZIP',
+			'kindRAR'         : 'RAR',
+			'kindJAR'         : 'Java JAR',
+			'kindTTF'         : 'True Type',
+			'kindOTF'         : 'Open Type',
+			'kindRPM'         : 'RPM',
+			// texts
+			'kindText'        : 'Text',
+			'kindTextPlain'   : 'Plain',
+			'kindPHP'         : 'PHP',
+			'kindCSS'         : 'Cascading style sheet',
+			'kindHTML'        : 'HTML',
+			'kindJS'          : 'Javascript',
+			'kindRTF'         : 'Rich Text Format',
+			'kindC'           : 'C',
+			'kindCHeader'     : 'C header',
+			'kindCPP'         : 'C++',
+			'kindCPPHeader'   : 'C++ header',
+			'kindShell'       : 'Unix shell script',
+			'kindPython'      : 'Python',
+			'kindJava'        : 'Java',
+			'kindRuby'        : 'Ruby',
+			'kindPerl'        : 'Perl',
+			'kindSQL'         : 'SQL',
+			'kindXML'         : 'XML',
+			'kindAWK'         : 'AWK',
+			'kindCSV'         : 'CSV',
+			'kindDOCBOOK'     : 'Docbook XML',
+			// images
+			'kindImage'       : 'Bild',
+			'kindBMP'         : 'BMP',
+			'kindJPEG'        : 'JPEG',
+			'kindGIF'         : 'GIF',
+			'kindPNG'         : 'PNG',
+			'kindTIFF'        : 'TIFF',
+			'kindTGA'         : 'TGA',
+			'kindPSD'         : 'Adobe Photoshop',
+			'kindXBITMAP'     : 'X bitmap',
+			'kindPXM'         : 'Pixelmator',
+			// media
+			'kindAudio'       : 'Audio media',
+			'kindAudioMPEG'   : 'MPEG audio',
+			'kindAudioMPEG4'  : 'MPEG-4 audio',
+			'kindAudioMIDI'   : 'MIDI audio',
+			'kindAudioOGG'    : 'Ogg Vorbis audio',
+			'kindAudioWAV'    : 'WAV audio',
+			'AudioPlaylist'   : 'MP3 playlist',
+			'kindVideo'       : 'Video media',
+			'kindVideoDV'     : 'DV movie',
+			'kindVideoMPEG'   : 'MPEG movie',
+			'kindVideoMPEG4'  : 'MPEG-4 movie',
+			'kindVideoAVI'    : 'AVI movie',
+			'kindVideoMOV'    : 'Quick Time movie',
+			'kindVideoWM'     : 'Windows Media movie',
+			'kindVideoFlash'  : 'Flash movie',
+			'kindVideoMKV'    : 'Matroska movie',
+			'kindVideoOGG'    : 'Ogg movie'
+		}
+	};
+}));
+

+ 468 - 0
src/assets/js/i18n/elfinder.tr.js

@@ -0,0 +1,468 @@
+/**
+ * Türkçe translation
+ * @author I.Taskinoglu & A.Kaya <alikaya@armsyazilim.com>
+ * @author Abdullah ELEN <abdullahelen@msn.com>
+ * @version 2016-11-12
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.tr = {
+		translator : 'I.Taskinoglu & A.Kaya &lt;alikaya@armsyazilim.com&gt;, Abdullah ELEN &lt;abdullahelen@msn.com&gt;',
+		language   : 'Türkçe',
+		direction  : 'ltr',
+		dateFormat : 'd.m.Y H:i', // Mar 13, 2012 05:27 PM
+		fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM
+		messages   : {
+
+			/********************************** errors **********************************/
+			'error'                : 'Hata',
+			'errUnknown'           : 'Bilinmeyen hata.',
+			'errUnknownCmd'        : 'Bilinmeyen komut.',
+			'errJqui'              : 'Geçersiz jQuery UI yapılandırması. Seçilebilir, sürükle ve bırak bileşenlerini içermelidir.',
+			'errNode'              : 'elFinder, DOM Element\'ini oluşturması gerekir.',
+			'errURL'               : 'Geçersiz elFinder yapılandırması! URL seçeneği ayarlı değil.',
+			'errAccess'            : 'Erişim engellendi.',
+			'errConnect'           : 'Sunucuya bağlanamıyor.',
+			'errAbort'             : 'Bağlantı durduruldu.',
+			'errTimeout'           : 'Bağlantı zaman aşımı.',
+			'errNotFound'          : 'Sunucu bulunamadı.',
+			'errResponse'          : 'Geçersiz sunucu yanıtı.',
+			'errConf'              : 'Geçersiz sunucu yapılandırması.',
+			'errJSON'              : 'PHP JSON modülü kurulu değil.',
+			'errNoVolumes'         : 'Okunabilir birimler mevcut değil.',
+			'errCmdParams'         : '"$1" komutu için geçersiz parametre.',
+			'errDataNotJSON'       : 'Bu veri JSON formatında değil.',
+			'errDataEmpty'         : 'Boş veri.',
+			'errCmdReq'            : 'Sunucu isteği için komut adı gerekli.',
+			'errOpen'              : '"$1" açılamıyor.',
+			'errNotFolder'         : 'Bu nesne bir klasör değil.',
+			'errNotFile'           : 'Bu nesne bir dosya değil.',
+			'errRead'              : '"$1" okunamıyor.',
+			'errWrite'             : '"$1" yazılamıyor.',
+			'errPerm'              : 'Yetki engellendi.',
+			'errLocked'            : '"$1" kilitli. Bu nedenle taşıma, yeniden adlandırma veya kaldırma yapılamıyor.',
+			'errExists'            : '"$1" adında bir dosya zaten var.',
+			'errInvName'           : 'Geçersiz dosya ismi.',
+			'errFolderNotFound'    : 'Klasör bulunamıyor.',
+			'errFileNotFound'      : 'Dosya bulunamadı.',
+			'errTrgFolderNotFound' : 'Hedef klasör "$1" bulunamadı.',
+			'errPopup'             : 'Tarayıcı popup penceresi açmayı engelledi. Tarayıcı ayarlarından dosya açmayı aktif hale getirin.',
+			'errMkdir'             : 'Klasör oluşturulamıyor "$1".',
+			'errMkfile'            : '"$1" dosyası oluşturulamıyor.',
+			'errRename'            : '"$1" yeniden adlandırma yapılamıyor.',
+			'errCopyFrom'          : '"$1" biriminden dosya kopyalamaya izin verilmedi.',
+			'errCopyTo'            : '"$1" birimine dosya kopyalamaya izin verilmedi.',
+			'errMkOutLink'         : 'Kök birim dışında bir bağlantı oluşturulamıyor', // from v2.1 added 03.10.2015
+			'errUpload'            : 'Dosya yükleme hatası.',  // old name - errUploadCommon
+			'errUploadFile'        : '"$1" dosya yüklenemedi.', // old name - errUpload
+			'errUploadNoFiles'     : 'Yüklenecek dosya bulunamadı.',
+			'errUploadTotalSize'   : 'Veri izin verilen boyuttan büyük.', // old name - errMaxSize
+			'errUploadFileSize'    : 'Dosya izin verilen boyuttan büyük.', //  old name - errFileMaxSize
+			'errUploadMime'        : 'Dosya türüne izin verilmedi.',
+			'errUploadTransfer'    : '"$1" transfer hatası.',
+			'errUploadTemp'        : 'Yükleme için geçici dosya yapılamıyor.', // from v2.1 added 26.09.2015
+			'errNotReplace'        : '"$1" nesnesi bu konumda zaten var ve başka türde nesne ile değiştirilemez.', // new
+			'errReplace'           : 'Değişiklik yapılamıyor "$1".',
+			'errSave'              : '"$1" kaydedilemiyor.',
+			'errCopy'              : '"$1" kopyalanamıyor.',
+			'errMove'              : '"$1" taşınamıyor.',
+			'errCopyInItself'      : '"$1" kendi içine kopyalanamaz.',
+			'errRm'                : '"$1" kaldırılamıyor.',
+			'errRmSrc'             : 'Kaynak dosya(lar) kaldırılamıyor.',
+			'errExtract'           : '"$1" kaynağından dosyalar çıkartılamıyor.',
+			'errArchive'           : 'Arşiv oluşturulamıyor.',
+			'errArcType'           : 'Desteklenmeyen arşiv türü.',
+			'errNoArchive'         : 'Dosya arşiv değil veya desteklenmeyen arşiv türü.',
+			'errCmdNoSupport'      : 'Sunucu bu komutu desteklemiyor.',
+			'errReplByChild'       : '“$1” klasörü içerdiği bir öğe tarafından değiştirilemez.',
+			'errArcSymlinks'       : 'Sembolik bağlantıları içeren arşivlerin açılması güvenlik nedeniyle reddedildi.', // edited 24.06.2012
+			'errArcMaxSize'        : 'Arşiv dosyaları izin verilen maksimum boyutu aştı.',
+			'errResize'            : '"$1" yeniden boyutlandırılamıyor.',
+			'errResizeDegree'      : 'Geçersiz döndürme derecesi.',  // added 7.3.2013
+			'errResizeRotate'      : 'Resim döndürülemiyor.',  // added 7.3.2013
+			'errResizeSize'        : 'Geçersiz resim boyutu.',  // added 7.3.2013
+			'errResizeNoChange'    : 'Resim boyutu değiştirilemez.',  // added 7.3.2013
+			'errUsupportType'      : 'Desteklenmeyen dosya türü.',
+			'errNotUTF8Content'    : 'Dosya "$1" UTF-8 olmadığından düzenlenemez.',  // added 9.11.2011
+			'errNetMount'          : '"$1" bağlanamadı.', // added 17.04.2012
+			'errNetMountNoDriver'  : 'Desteklenmeyen protokol.',     // added 17.04.2012
+			'errNetMountFailed'    : 'Bağlama hatası.',         // added 17.04.2012
+			'errNetMountHostReq'   : 'Sunucu gerekli.', // added 18.04.2012
+			'errSessionExpires'    : 'Uzun süre işlem yapılmadığından oturumunuz sonlandı.',
+			'errCreatingTempDir'   : 'Geçici dizin oluşturulamıyor: "$1"',
+			'errFtpDownloadFile'   : 'Unable to download file from FTP: "$1"',
+			'errFtpUploadFile'     : 'Unable to upload file to FTP: "$1"',
+			'errFtpMkdir'          : 'Unable to create remote directory on FTP: "$1"',
+			'errArchiveExec'       : 'Error while archiving files: "$1"',
+			'errExtractExec'       : 'Error while extracting files: "$1"',
+			'errNetUnMount'        : 'Unable to unmount', // from v2.1 added 30.04.2012
+			'errConvUTF8'          : 'Not convertible to UTF-8', // from v2.1 added 08.04.2014
+			'errFolderUpload'      : 'Try Google Chrome, If you\'d like to upload the folder.', // from v2.1 added 26.6.2015
+			'errSearchTimeout'     : 'Timed out while searching "$1". Search result is partial.', // from v2.1 added 12.1.2016
+			'errReauthRequire'     : 'Re-authorization is required.', // from v2.1.10 added 24.3.2016
+			'errMaxTargets'        : 'Max number of selectable items is $1.', // from v2.1.17 added 17.10.2016
+
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'Arşiv oluştur',
+			'cmdback'      : 'Geri',
+			'cmdcopy'      : 'Kopyala',
+			'cmdcut'       : 'Kes',
+			'cmddownload'  : 'İndir',
+			'cmdduplicate' : 'Çoğalt',
+			'cmdedit'      : 'Dosyayı düzenle',
+			'cmdextract'   : 'Arşivden dosyaları çıkart',
+			'cmdforward'   : 'İleri',
+			'cmdgetfile'   : 'Dosyaları seç',
+			'cmdhelp'      : 'Bu yazılım hakkında',
+			'cmdhome'      : 'Anasayfa',
+			'cmdinfo'      : 'Bilgi göster',
+			'cmdmkdir'     : 'Yeni Klasör',
+			'cmdmkdirin'   : 'Into new folder', // from v2.1.7 added 19.2.2016
+			'cmdmkfile'    : 'Yeni metin dosyası',
+			'cmdopen'      : 'Aç',
+			'cmdpaste'     : 'Yapıştır',
+			'cmdquicklook' : 'Ön izleme',
+			'cmdreload'    : 'Geri Yükle',
+			'cmdrename'    : 'Yeniden Adlandır',
+			'cmdrm'        : 'Sil',
+			'cmdsearch'    : 'Dosyaları bul',
+			'cmdup'        : 'Üst dizine çık',
+			'cmdupload'    : 'Dosyaları yükle',
+			'cmdview'      : 'Görüntüle',
+			'cmdresize'    : 'Resmi yeniden boyutlandır',
+			'cmdsort'      : 'Sırala',
+			'cmdnetmount'  : 'Bağlı ağ birimi', // added 18.04.2012
+			'cmdnetunmount': 'Devredışı bırak', // from v2.1 added 30.04.2012
+			'cmdplaces'    : 'Yerlere', // added 28.12.2014
+			'cmdchmod'     : 'Mod değiştir', // from v2.1 added 20.6.2015
+			'cmdopendir'   : 'Open a folder', // from v2.1 added 13.1.2016
+			'cmdcolwidth'  : 'Reset column width', // from v2.1.13 added 12.06.2016
+			'cmdmove'      : 'Move', // from v2.1.15 added 21.08.2016
+
+			/*********************************** buttons ***********************************/
+			'btnClose'  : 'Kapat',
+			'btnSave'   : 'Kaydet',
+			'btnRm'     : 'Kaldır',
+			'btnApply'  : 'Uygula',
+			'btnCancel' : 'İptal',
+			'btnNo'     : 'Hayır',
+			'btnYes'    : 'Evet',
+			'btnMount'  : 'Bağla',  // added 18.04.2012
+			'btnApprove': 'Git $1 & onayla', // from v2.1 added 26.04.2012
+			'btnUnmount': 'Bağlantıyı kes', // from v2.1 added 30.04.2012
+			'btnConv'   : 'Dönüştür', // from v2.1 added 08.04.2014
+			'btnCwd'    : 'Buraya',      // from v2.1 added 22.5.2015
+			'btnVolume' : 'Birim',    // from v2.1 added 22.5.2015
+			'btnAll'    : 'Hepsi',       // from v2.1 added 22.5.2015
+			'btnMime'   : 'MIME Türü', // from v2.1 added 22.5.2015
+			'btnFileName':'Dosya adı',  // from v2.1 added 22.5.2015
+			'btnSaveClose': 'Kaydet & Kapat', // from v2.1 added 12.6.2015
+			'btnBackup' : 'Yedekle', // fromv2.1 added 28.11.2015
+
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'Klasör Aç',
+			'ntffile'     : 'Dosya Aç',
+			'ntfreload'   : 'Klasör içeriğini yeniden yükle',
+			'ntfmkdir'    : 'Dizin oluşturuluyor',
+			'ntfmkfile'   : 'Dosyaları oluşturma',
+			'ntfrm'       : 'Dosyaları sil',
+			'ntfcopy'     : 'Dosyaları kopyala',
+			'ntfmove'     : 'Dosyaları taşı',
+			'ntfprepare'  : 'Dosyaları kopyalamaya hazırla',
+			'ntfrename'   : 'Dosyaları yeniden adlandır',
+			'ntfupload'   : 'Dosyalar yükleniyor',
+			'ntfdownload' : 'Dosyalar indiriliyor',
+			'ntfsave'     : 'Dosyalar kaydediliyor',
+			'ntfarchive'  : 'Arşiv oluşturuluyor',
+			'ntfextract'  : 'Arşivden dosyalar çıkartılıyor',
+			'ntfsearch'   : 'Dosyalar aranıyor',
+			'ntfresize'   : 'Resimler boyutlandırılıyor',
+			'ntfsmth'     : 'İşlem yapılıyor >_<',
+			'ntfloadimg'  : 'Resim yükleniyor',
+			'ntfnetmount' : 'Ağ birimine bağlanılıyor', // added 18.04.2012
+			'ntfnetunmount': 'Ağ birimi bağlantısı kesiliyor', // from v2.1 added 30.04.2012
+			'ntfdim'      : 'Resim boyutu alınıyor', // added 20.05.2013
+			'ntfreaddir'  : 'Klasör bilgisi okunuyor', // from v2.1 added 01.07.2013
+			'ntfurl'      : 'Bağlantının URL\'si alınıyor', // from v2.1 added 11.03.2014
+			'ntfchmod'    : 'Dosya modu değiştiriliyor', // from v2.1 added 20.6.2015
+			'ntfpreupload': 'Verifying upload file name', // from v2.1 added 31.11.2015
+			'ntfzipdl'    : 'Creating a file for download', // from v2.1.7 added 23.1.2016
+			'ntfparents'  : 'Getting path infomation', // from v2.1.17 added 2.11.2016
+			'ntfchunkmerge': 'Processing the uploaded file', // from v2.1.17 added 2.11.2016
+
+			/************************************ dates **********************************/
+			'dateUnknown' : 'Bilinmiyor',
+			'Today'       : 'Bugün',
+			'Yesterday'   : 'Dün',
+			'msJan'       : 'Oca',
+			'msFeb'       : 'Şub',
+			'msMar'       : 'Mar',
+			'msApr'       : 'Nis',
+			'msMay'       : 'May',
+			'msJun'       : 'Haz',
+			'msJul'       : 'Tem',
+			'msAug'       : 'Ağu',
+			'msSep'       : 'Eyl',
+			'msOct'       : 'Ekm',
+			'msNov'       : 'Kas',
+			'msDec'       : 'Ara',
+			'January'     : 'Ocak',
+			'February'    : 'Şubat',
+			'March'       : 'Mart',
+			'April'       : 'Nisan',
+			'May'         : 'Mayıs',
+			'June'        : 'Haziran',
+			'July'        : 'Temmuz',
+			'August'      : 'Ağustos',
+			'September'   : 'Eylül',
+			'October'     : 'Ekim',
+			'November'    : 'Kasım',
+			'December'    : 'Aralık',
+			'Sunday'      : 'Pazar',
+			'Monday'      : 'Pazartesi',
+			'Tuesday'     : 'Salı',
+			'Wednesday'   : 'Çarşamba',
+			'Thursday'    : 'Perşembe',
+			'Friday'      : 'Cuma',
+			'Saturday'    : 'Cumartesi',
+			'Sun'         : 'Paz',
+			'Mon'         : 'Pzt',
+			'Tue'         : 'Sal',
+			'Wed'         : 'Çar',
+			'Thu'         : 'Per',
+			'Fri'         : 'Cum',
+			'Sat'         : 'Cmt',
+
+			/******************************** sort variants ********************************/
+			'sortname'          : 'Ada göre',
+			'sortkind'          : 'Türe göre',
+			'sortsize'          : 'Boyuta göre',
+			'sortdate'          : 'Tarihe göre',
+			'sortFoldersFirst'  : 'Önce klasörler',
+			'sortperm'          : 'by permission', // from v2.1.13 added 13.06.2016
+			'sortmode'          : 'by mode',       // from v2.1.13 added 13.06.2016
+			'sortowner'         : 'by owner',      // from v2.1.13 added 13.06.2016
+			'sortgroup'         : 'by group',      // from v2.1.13 added 13.06.2016
+			'sortAlsoTreeview'  : 'Also Treeview',  // from v2.1.15 added 01.08.2016
+
+			/********************************** new items **********************************/
+			'untitled file.txt' : 'YeniDosya.txt', // added 10.11.2015
+			'untitled folder'   : 'YeniKlasor',   // added 10.11.2015
+			'Archive'           : 'YeniArsiv',  // from v2.1 added 10.11.2015
+
+			/********************************** messages **********************************/
+			'confirmReq'      : 'Onay gerekli',
+			'confirmRm'       : 'Dosyaları kaldırmak istediğinden emin misin?<br/>Bu işlem geri alınamaz!',
+			'confirmRepl'     : 'Eski dosya yenisi ile değiştirilsin mi?',
+			'confirmConvUTF8' : 'UTF-8 değil<br/>UTF-8\'e dönüştürülsün mü?<br/>Dönüştürme sonrası kaydedebilmek için içeriğin UTF-8 olması gerekir.', // from v2.1 added 08.04.2014
+			'confirmNotSave'  : 'Düzenlenmiş içerik.<br/>Değişiklikleri kaydetmek istemiyorsanız son yapılanlar kaybolacak.', // from v2.1 added 15.7.2015
+			'apllyAll'        : 'Tümüne uygula',
+			'name'            : 'İsim',
+			'size'            : 'Boyut',
+			'perms'           : 'Yetkiler',
+			'modify'          : 'Değiştirildi',
+			'kind'            : 'Tür',
+			'read'            : 'oku',
+			'write'           : 'yaz',
+			'noaccess'        : 'erişim yok',
+			'and'             : 've',
+			'unknown'         : 'bilinimiyor',
+			'selectall'       : 'Tüm dosyaları seç',
+			'selectfiles'     : 'Dosya(lar)ı seç',
+			'selectffile'     : 'İlk dosyayı seç',
+			'selectlfile'     : 'Son dosyayı seç',
+			'viewlist'        : 'Liste görünümü',
+			'viewicons'       : 'Simge görünümü',
+			'places'          : 'Yerler',
+			'calc'            : 'Hesapla',
+			'path'            : 'Yol',
+			'aliasfor'        : 'Takma adı:',
+			'locked'          : 'Kilitli',
+			'dim'             : 'Ölçüler',
+			'files'           : 'Dosyalar',
+			'folders'         : 'Klasörler',
+			'items'           : 'Nesneler',
+			'yes'             : 'evet',
+			'no'              : 'hayır',
+			'link'            : 'Bağlantı',
+			'searcresult'     : 'Arama sonuçları',
+			'selected'        : 'Seçili öğeler',
+			'about'           : 'Hakkında',
+			'shortcuts'       : 'Kısayollar',
+			'help'            : 'Yardım',
+			'webfm'           : 'Web dosyası yöneticisi',
+			'ver'             : 'Sürüm',
+			'protocolver'     : 'protokol sürümü',
+			'homepage'        : 'Proje Anasayfası',
+			'docs'            : 'Belgeler',
+			'github'          : 'Github\'ta bizi takip edin',
+			'twitter'         : 'Twitter\'da bizi takip edin',
+			'facebook'        : 'Facebook\'ta bize katılın',
+			'team'            : 'Takım',
+			'chiefdev'        : 'geliştirici şefi',
+			'developer'       : 'geliştirici',
+			'contributor'     : 'iştirakçi',
+			'maintainer'      : 'bakıcı',
+			'translator'      : 'çeviri',
+			'icons'           : 'Simgeler',
+			'dontforget'      : 've havlunuzu almayı unutmayın',
+			'shortcutsof'     : 'Shortcuts disabled',
+			'dropFiles'       : 'Dosyaları buraya taşı',
+			'or'              : 'veya',
+			'selectForUpload' : 'Yüklemek için dosyaları seçin',
+			'moveFiles'       : 'Dosyaları taşı',
+			'copyFiles'       : 'Dosyaları kopyala',
+			'rmFromPlaces'    : 'Remove from places',
+			'aspectRatio'     : 'Görünüm oranı',
+			'scale'           : 'Ölçeklendir',
+			'width'           : 'Genişlik',
+			'height'          : 'Yükseklik',
+			'resize'          : 'Boyutlandır',
+			'crop'            : 'Kırp',
+			'rotate'          : 'Döndür',
+			'rotate-cw'       : '90 derece sağa döndür',
+			'rotate-ccw'      : '90 derece sola döndür',
+			'degree'          : 'Derece',
+			'netMountDialogTitle' : 'Bağlı (Mount) ağ birimi', // added 18.04.2012
+			'protocol'            : 'Protokol', // added 18.04.2012
+			'host'                : 'Sunucu', // added 18.04.2012
+			'port'                : 'Port', // added 18.04.2012
+			'user'                : 'Kullanıcı', // added 18.04.2012
+			'pass'                : 'Şifre', // added 18.04.2012
+			'confirmUnmount'      : 'Bağlantı kesilsin mi $1?',  // from v2.1 added 30.04.2012
+			'dropFilesBrowser': 'Dosyaları tarayıcıdan yapıştır veya bırak', // from v2.1 added 30.05.2012
+			'dropPasteFiles'  : 'Dosyaları buraya yapıştır veya bırak', // from v2.1 added 07.04.2014
+			'encoding'        : 'Kodlama', // from v2.1 added 19.12.2014
+			'locale'          : 'Yerel',   // from v2.1 added 19.12.2014
+			'searchTarget'    : 'Hedef: $1',                // from v2.1 added 22.5.2015
+			'searchMime'      : 'Giriş MIME Türüne Göre Arama', // from v2.1 added 22.5.2015
+			'owner'           : 'Sahibi', // from v2.1 added 20.6.2015
+			'group'           : 'Grup', // from v2.1 added 20.6.2015
+			'other'           : 'Diğer', // from v2.1 added 20.6.2015
+			'execute'         : 'Çalıştır', // from v2.1 added 20.6.2015
+			'perm'            : 'Yetki', // from v2.1 added 20.6.2015
+			'mode'            : 'Mod', // from v2.1 added 20.6.2015
+			'emptyFolder'     : 'Klasör boş', // from v2.1.6 added 30.12.2015
+			'emptyFolderDrop' : 'Klasör boş\\A Eklemek için sürükleyin', // from v2.1.6 added 30.12.2015
+			'emptyFolderLTap' : 'Klasör boş\\A Eklemek için basılı tutun', // from v2.1.6 added 30.12.2015
+			'quality'         : 'Kalite', // from v2.1.6 added 5.1.2016
+			'autoSync'        : 'Auto sync',  // from v2.1.6 added 10.1.2016
+			'moveUp'          : 'Move up',  // from v2.1.6 added 18.1.2016
+			'getLink'         : 'Get URL link', // from v2.1.7 added 9.2.2016
+			'selectedItems'   : 'Selected items ($1)', // from v2.1.7 added 2.19.2016
+			'folderId'        : 'Folder ID', // from v2.1.10 added 3.25.2016
+			'offlineAccess'   : 'Allow offline access', // from v2.1.10 added 3.25.2016
+			'reAuth'          : 'To re-authenticate', // from v2.1.10 added 3.25.2016
+			'nowLoading'      : 'Now loading...', // from v2.1.12 added 4.26.2016
+			'openMulti'       : 'Open multiple files', // from v2.1.12 added 5.14.2016
+			'openMultiConfirm': 'You are trying to open the $1 files. Are you sure you want to open in browser?', // from v2.1.12 added 5.14.2016
+			'emptySearch'     : 'No match results in search targets', // from v2.1.12 added 5.16.2016
+			'editingFile'     : 'You are editing a file.', // from v2.1.13 added 6.3.2016
+			'hasSelected'     : 'You have selected $1 items.', // from v2.1.13 added 6.3.2016
+			'hasClipboard'    : 'You have $1 items in the clipboard.', // from v2.1.13 added 6.3.2016
+			'incSearchOnly'   : 'Incremental search is only from the current view.', // from v2.1.13 added 6.30.2016
+			'reinstate'       : 'Reinstate', // from v2.1.15 added 3.8.2016
+			'complete'        : '$1 complete', // from v2.1.15 added 21.8.2016
+			'contextmenu'     : 'Context menu', // from v2.1.15 added 9.9.2016
+			'pageTurning'     : 'Page turning', // from v2.1.15 added 10.9.2016
+			'volumeRoots'     : 'Volume roots', // from v2.1.16 added 16.9.2016
+			'reset'           : 'Reset', // from v2.1.16 added 1.10.2016
+			'bgcolor'         : 'Arkaplan rengi', // from v2.1.16 added 1.10.2016
+			'colorPicker'     : 'Renk seçici', // from v2.1.16 added 1.10.2016
+			'8pxgrid'         : '8px tablo', // from v2.1.16 added 4.10.2016
+			'enabled'         : 'Enabled', // from v2.1.16 added 4.10.2016
+			'disabled'        : 'Disabled', // from v2.1.16 added 4.10.2016
+			'emptyIncSearch'  : 'No match results in current view', // from v2.1.16 added 5.10.2016
+			'textLabel'       : 'Text lable', // from v2.1.17 added 13.10.2016
+
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : 'Bilinmiyor',
+			'kindRoot'        : 'Sürücü Kök dizini', // from v2.1.16 added 16.10.2016
+			'kindFolder'      : 'Klasör',
+			'kindAlias'       : 'Alias (Takma ad)',
+			'kindAliasBroken' : 'Bozuk alias',
+			// applications
+			'kindApp'         : 'Uygulama',
+			'kindPostscript'  : 'Postscript dosyası',
+			'kindMsOffice'    : 'Microsoft Office dosyası',
+			'kindMsWord'      : 'Microsoft Word dosyası',
+			'kindMsExcel'     : 'Microsoft Excel dosyası',
+			'kindMsPP'        : 'Microsoft Powerpoint sunumu',
+			'kindOO'          : 'Open Office dosyası',
+			'kindAppFlash'    : 'Flash uygulaması',
+			'kindPDF'         : 'PDF',
+			'kindTorrent'     : 'Bittorrent dosyası',
+			'kind7z'          : '7z arşivi',
+			'kindTAR'         : 'TAR arşivi',
+			'kindGZIP'        : 'GZIP arşivi',
+			'kindBZIP'        : 'BZIP arşivi',
+			'kindXZ'          : 'XZ arşivi',
+			'kindZIP'         : 'ZIP arşivi',
+			'kindRAR'         : 'RAR arşivi',
+			'kindJAR'         : 'Java JAR dosyası',
+			'kindTTF'         : 'True Type fontu',
+			'kindOTF'         : 'Open Type fontu',
+			'kindRPM'         : 'RPM paketi',
+			// texts
+			'kindText'        : 'Metin dosyası',
+			'kindTextPlain'   : 'Düz metin',
+			'kindPHP'         : 'PHP kodu',
+			'kindCSS'         : 'CSS dosyası',
+			'kindHTML'        : 'HTML dosyası',
+			'kindJS'          : 'Javascript kodu',
+			'kindRTF'         : 'Zengin Metin Belgesi',
+			'kindC'           : 'C kodu',
+			'kindCHeader'     : 'C başlık kodu',
+			'kindCPP'         : 'C++ kodu',
+			'kindCPPHeader'   : 'C++ başlık kodu',
+			'kindShell'       : 'Unix shell scripti',
+			'kindPython'      : 'Python kodu',
+			'kindJava'        : 'Java kodu',
+			'kindRuby'        : 'Ruby kodu',
+			'kindPerl'        : 'Perl scripti',
+			'kindSQL'         : 'SQL kodu',
+			'kindXML'         : 'XML dosyası',
+			'kindAWK'         : 'AWK kodu',
+			'kindCSV'         : 'CSV',
+			'kindDOCBOOK'     : 'Docbook XML dosyası',
+			'kindMarkdown'    : 'Markdown dosyası', // added 20.7.2015
+			// images
+			'kindImage'       : 'Resim',
+			'kindBMP'         : 'BMP dosyası',
+			'kindJPEG'        : 'JPEG dosyası',
+			'kindGIF'         : 'GIF dosyası',
+			'kindPNG'         : 'PNG dosyası',
+			'kindTIFF'        : 'TIFF dosyası',
+			'kindTGA'         : 'TGA dosyası',
+			'kindPSD'         : 'Adobe Photoshop dosyası',
+			'kindXBITMAP'     : 'X bitmap dosyası',
+			'kindPXM'         : 'Pixelmator dosyası',
+			// media
+			'kindAudio'       : 'Ses ortamı',
+			'kindAudioMPEG'   : 'MPEG ses',
+			'kindAudioMPEG4'  : 'MPEG-4 ses',
+			'kindAudioMIDI'   : 'MIDI ses',
+			'kindAudioOGG'    : 'Ogg Vorbis ses',
+			'kindAudioWAV'    : 'WAV ses',
+			'AudioPlaylist'   : 'MP3 listesi',
+			'kindVideo'       : 'Video ortamı',
+			'kindVideoDV'     : 'DV video',
+			'kindVideoMPEG'   : 'MPEG video',
+			'kindVideoMPEG4'  : 'MPEG-4 video',
+			'kindVideoAVI'    : 'AVI video',
+			'kindVideoMOV'    : 'Quick Time video',
+			'kindVideoWM'     : 'Windows Media video',
+			'kindVideoFlash'  : 'Flash video',
+			'kindVideoMKV'    : 'Matroska video',
+			'kindVideoOGG'    : 'Ogg video'
+		}
+	};
+}));
+

+ 374 - 0
src/assets/js/i18n/elfinder.ug_CN.js

@@ -0,0 +1,374 @@
+/**
+ * Uyghur translation
+ * @author Alim.Boyaq <boyaq@otkur.biz>
+ * @version 2014-12-19
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.ug_CN = {
+		translator : 'تەرجىمە قىلغۇچى:  ئۆتكۈر بىز شىركىتى info@otkur.biz',
+		language   : 'ئ‍ۇيغۇرچە',
+		direction  : 'rtl',
+		dateFormat : 'Y-m-d H:i',
+		fancyDateFormat : '$1 H:i',
+		messages   : {
+
+			/********************************** errors **********************************/
+			'error'                : 'خاتالىق',
+			'errUnknown'           : 'كۈتۈلمىگەن خاتالىقكەن.',
+			'errUnknownCmd'        : 'كۈتۈلمىگەن بۇيرۇقكەن.',
+			'errJqui'              : 'jQuery UI تەڭشىكى توغرا بولمىغان. چوقۇم Selectable، draggable، droppabl قاتارلىق بۆلەكلەر بولۇشى كېرەك.',
+			'errNode'              : 'elFinder DOM ئېلىمىنتلىرىنى قۇرالىشى كېرەك.',
+			'errURL'               : 'elFinder تەڭشىكى توغرا بولمىغان! URL تەڭشىكى يېزىلمىغان.',
+			'errAccess'            : 'زىيارەت قىلىش چەكلەنگەن.',
+			'errConnect'           : 'ئارقا سۇپىغا ئۇلاش مەغلۇپ بولدى..',
+			'errAbort'             : 'ئارقا سۇپىغا توختىتىلدى.',
+			'errTimeout'           : 'ئارقا سۇپىغا بەلگىلەنگەن ۋاقىتتا ئۇلىيالمىدى.',
+			'errNotFound'          : 'ئارقا سۇپا تېپىلمىدى.',
+			'errResponse'          : 'ئارقا سۇپىدىن توغرا بولمىغان ئىنكاس قايتتى.',
+			'errConf'              : 'ئارقا سۇپا تەڭشىكى توغرا ئەمەس.',
+			'errJSON'              : 'PHP JSON بۆلىكى قاچىلانمىغان.',
+			'errNoVolumes'         : 'ئوقۇشقا بولىدىغان ھۈججەت خالتىسى يوق.',
+			'errCmdParams'         : 'پارامېتىر خاتا، بۇيرۇق: "$1".',
+			'errDataNotJSON'       : 'ئارقا سۇپا قايتۇرغان سانلىق مەلۇمات توغرا بولغان JSON ئەمەسكەن.',
+			'errDataEmpty'         : 'ئارقا سۇپا قايتۇرغان سانلىق مەلۇمات قۇرۇقكەن.',
+			'errCmdReq'            : 'ئارقا سۇپىدىكى بۇيرۇقنىڭ ئ‍سىمى تەمىنلىنىشى كېرەك.',
+			'errOpen'              : '"$1"نى ئاچالمىدى.',
+			'errNotFolder'         : 'ئوبىكىت مۇندەرىجە ئەمەسكەن.',
+			'errNotFile'           : 'ئوبىكىت ھۈججەت ئەمەسكەن.',
+			'errRead'              : '"$1"نى ئوقۇيالمىدى.',
+			'errWrite'             : '"$1"نى يازالمىدى.',
+			'errPerm'              : 'ھوقۇق يوق.',
+			'errLocked'            : '"$1" تاقالغان,ئۆزگەرتەلمەيسىز.',
+			'errExists'            : '"$1" ناملىق ھۈججەت باركەن.',
+			'errInvName'           : 'توغرا بولمىغان ھۈججەت قىسقۇچ ئىسمى.',
+			'errFolderNotFound'    : 'ھۈججەت قىسقۇچنى تاپالمىدى.',
+			'errFileNotFound'      : 'ھۈججەتنى تاپالمىدى.',
+			'errTrgFolderNotFound' : '"$1" ناملىق ھۈججەت قىسقۇچنى تاپالمىدى.',
+			'errPopup'             : 'سەكرەپ چىققان يېڭى بەتنى تور كۆرگۈچ كۆرسەتمىدى، ئۈستىدىكى ئەسكەرتىشتىن تور كۆرگۈچنى كۆرسىتىشكە تەڭشەڭ.',
+			'errMkdir'             : '"$1" ناملىق ھۈججەت قىسقۇچنى قۇرالمىدى.',
+			'errMkfile'            : '"$1" ناملىق ھۈججەتنى قۇرالمىدى.',
+			'errRename'            : '"$1" ناملىق ھۈججەتنىڭ ئىسمىنى يېڭىلاش مەغلۇپ بولدى.',
+			'errCopyFrom'          : ' "$1" ناملىق ئورۇندىن ھۈججەت كۆچۈرۈش چەكلەنگەن.',
+			'errCopyTo'            : '"$1" ناملىق ئورۇنغا ھۈججەت كۆچۈرۈش چەكلەنگەن.',
+			'errUpload'            : 'يۈكلەشتە خاتالىق كۆرۈلدى.',
+			'errUploadFile'        : '"$1" ناملىق ھۈججەتنى يۈكلەشتە خاتالىق كۆرۈلدى.',
+			'errUploadNoFiles'     : 'يۈكلىمەكچى بولغان ھۈججەت تېپىلمىدى.',
+			'errUploadTotalSize'   : 'سانلىق مەلۇمات چوڭلىقى چەكلىمىدىن ئېشىپ كەتكەن..',
+			'errUploadFileSize'    : 'ھۈججەت چوڭلىقى چەكلىمىدىن ئېشىپ كەتكەن..',
+			'errUploadMime'        : 'چەكلەنگەن ھۈججەت شەكلى.',
+			'errUploadTransfer'    : '"$1" ناملىق ھۈججەتنى يوللاشتا خاتالىق كۆرۈلدى.',
+			'errNotReplace'        : '"$1" ناملىق ھۈججەت باركەن، ئالماشتۇرۇشقا بولمايدۇ.', // new
+			'errReplace'           : '"$1" ناملىق ھۈججەتنى ئالماشتۇرۇش مەغلۇپ بولدى.',
+			'errSave'              : '"$1" ناملىق ھۈججەتنى ساقلاش مەغلۇپ بولدى.',
+			'errCopy'              : '"$1" ناملىق ھۈججەتنى كۆچۈرۈش مەغلۇپ بولدى.',
+			'errMove'              : '"$1" ناملىق ھۈججەتنى يۆتكەش مەغلۇپ بولدى.',
+			'errCopyInItself'      : '"$1" ناملىق ھۈججەتنى ئەسلى ئورنىغا يۆتكەش مەغلۇپ بولدى.',
+			'errRm'                : '"$1" ناملىق ھۈججەتنى ئۆچۈرۈش مەغلۇپ بولدى.',
+			'errRmSrc'             : 'ئەسلى ھۈججەتنى ئۆچۈرۈش مەغلۇپ بولدى.',
+			'errExtract'           : ' "$1" ناملىق مەلۇماتتىن ھۈججەت ئايرىش مەغلۇپ بولدى..',
+			'errArchive'           : 'پىرىسلانغان ھۈججەت ھاسىللاش مەغلۇپ بولدى.',
+			'errArcType'           : 'بۇ خىل پىرىسلانغان ھۈججەت شەكلىنى سىستېما بىر تەرەپ قىلالمىدى.',
+			'errNoArchive'         : 'ھۈججەت پىرىسلانغان ھۈججەت ئەمەس، ياكى توغرا پىرىسلانمىغان.',
+			'errCmdNoSupport'      : 'بۇ خىل بۇيرۇقنى بىر تەرەپ قىلالمىدى.',
+			'errReplByChild'       : '“$1” ناملىق ھۈججەت قىسقۇچنى ئالماشۇتۇرۇشقا بولمايدۇ.',
+			'errArcSymlinks'       : 'بىخەتەرلىك ئۈچۈن بۇ مەشغۇلات ئەمەلدىن قالدۇرۇلدى..',
+			'errArcMaxSize'        : 'پىرىسلانغان ھۈججەتنىڭ چوڭلىقى چەكلىمىدىن ئېشىپ كەنكەن.',
+			'errResize'            : ' "$1" چوڭلۇقنى تەڭشەشكە بولمىدى.',
+			'errResizeDegree'      : 'توغرا بولمىغان پىقىرىتىش گىرادۇسى',
+			'errResizeRotate'      : 'رەسىمنى پىقىرىتىشقا بولمىدى.',
+			'errResizeSize'        : 'توغرا بولمىغان رەسىم چوڭلىقى.',
+			'errResizeNoChange'    : 'رەسىم چوڭلىقى ئۆزگەرمىگەن.',
+			'errUsupportType'      : 'قوللىمايدىغان ھۈججەت شەكلى.',
+			'errNotUTF8Content'    : '"$1" ناملىق ھۈججەتنىڭ كودى  UTF-8ئەمەسكەن،  تەھرىرلىگىلى بولمايدۇ.',  // added 9.11.2011
+			'errNetMount'          : ' "$1" نى يۈكلەشتە خاتلىق يۈز بەردى..', // added 17.04.2012
+			'errNetMountNoDriver'  : 'بۇ خىل پروتوكول قوللانمىدى..',     // added 17.04.2012
+			'errNetMountFailed'    : 'يۈكلەش مەغلۇپ بولدى.',         // added 17.04.2012
+			'errNetMountHostReq'   : 'مۇلازىمىتىرنى كۆرسىتىپ بېرىڭ.', // added 18.04.2012
+			'errSessionExpires'    : 'Your session has expired due to inactivity.',
+			'errCreatingTempDir'   : 'Unable to create temporary directory: "$1"',
+			'errFtpDownloadFile'   : 'Unable to download file from FTP: "$1"',
+			'errFtpUploadFile'     : 'Unable to upload file to FTP: "$1"',
+			'errFtpMkdir'          : 'Unable to create remote directory on FTP: "$1"',
+			'errArchiveExec'       : 'Error while archiving files: "$1"',
+			'errExtractExec'       : 'Error while extracting files: "$1"',
+
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'پىرىسلاش',
+			'cmdback'      : 'قايتىش',
+			'cmdcopy'      : 'كۆچۈرۈش',
+			'cmdcut'       : 'كېسىش',
+			'cmddownload'  : 'چۈشۈرۈش',
+			'cmdduplicate' : 'نۇسخىلاش',
+			'cmdedit'      : 'تەھرىرلەش',
+			'cmdextract'   : 'پىرىستىن ھۈججەت چىقىرىش',
+			'cmdforward'   : 'ئ‍الدىغا مېڭىش',
+			'cmdgetfile'   : 'تاللاش',
+			'cmdhelp'      : 'ئەپ ھەققىدە',
+			'cmdhome'      : 'باش بەت',
+			'cmdinfo'      : 'ئۇچۇرلىرى',
+			'cmdmkdir'     : 'يېڭى ھۈججەت قىسقۇچ',
+			'cmdmkfile'    : 'يېڭى ھۈججەت',
+			'cmdopen'      : 'ئېچىش',
+			'cmdpaste'     : 'چاپلاش',
+			'cmdquicklook' : 'كۆرۈش',
+			'cmdreload'    : 'يېڭىلاش',
+			'cmdrename'    : 'نام يېڭىلاش',
+			'cmdrm'        : 'ئۆچۈرۈش',
+			'cmdsearch'    : 'ھۈججەت ئىزدەش',
+			'cmdup'        : 'ئالدىنقى مۇندەرىجىگە بېرىش',
+			'cmdupload'    : 'يۈكلەش',
+			'cmdview'      : 'كۆرۈش',
+			'cmdresize'    : 'چوڭلىقىنى تەڭشەش',
+			'cmdsort'      : 'تەرتىپ',
+			'cmdnetmount'  : 'توردىن قوشۇش', // added 18.04.2012
+
+			/*********************************** buttons ***********************************/
+			'btnClose'  : 'تاقاش',
+			'btnSave'   : 'ساقلاش',
+			'btnRm'     : 'ئۆچۈرۈش',
+			'btnApply'  : 'ئىشلىتىش',
+			'btnCancel' : 'بېكارلاش',
+			'btnNo'     : 'ياق',
+			'btnYes'    : 'ھەئە',
+			'btnMount'  : 'يۈكلەش',  // added 18.04.2012
+
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'قىسقۇچنى ئېچىش',
+			'ntffile'     : 'ھۈججەتنى ئېچىش',
+			'ntfreload'   : 'يېڭىلاش',
+			'ntfmkdir'    : 'قىسقۇچ قۇرۇش',
+			'ntfmkfile'   : 'ھۈججەت قۇرۇش',
+			'ntfrm'       : 'ئۆچۈرۈش',
+			'ntfcopy'     : 'كۆچۈرۈش',
+			'ntfmove'     : 'يۆتكەش',
+			'ntfprepare'  : 'كۆچۈرۈش تەييارلىقى',
+			'ntfrename'   : 'نام يېڭىلاش',
+			'ntfupload'   : 'يۈكلەش',
+			'ntfdownload' : 'چۈشۈرۈش',
+			'ntfsave'     : 'ساقلاش',
+			'ntfarchive'  : 'پىرىسلاش',
+			'ntfextract'  : 'پىرىستىن يېشىش',
+			'ntfsearch'   : 'ئىزدەش',
+			'ntfresize'   : 'چوڭلىقى ئۆزگەرتىلىۋاتىدۇ',
+			'ntfsmth'     : 'ئالدىراش >_<',
+			'ntfloadimg'  : 'رەسىم ئېچىلىۋاتىدۇ',
+      		'ntfnetmount' : 'تور ھۈججىتى يۈكلىنىۋاتىدۇ', // added 18.04.2012
+			'ntfdim'      : 'Acquiring image dimension',
+
+			/************************************ dates **********************************/
+			'dateUnknown' : 'ئېنىق ئەمەس',
+			'Today'       : 'بۈگۈن',
+			'Yesterday'   : 'تۆنۈگۈن',
+			'msJan'       : '1-ئاي',
+			'msFeb'       : '2-ئاي',
+			'msMar'       : '3-ئاي',
+			'msApr'       : '4-ئاي',
+			'msMay'       : '5-ئاي',
+			'msJun'       : '6-ئاي',
+			'msJul'       : '7-ئاي',
+			'msAug'       : '8-ئاي',
+			'msSep'       : '9-ئ‍اي',
+			'msOct'       : '10-ئاي',
+			'msNov'       : '11-ئاي',
+			'msDec'       : '12-ئاي',
+			'January'     : '1-ئاي',
+			'February'    : '2-ئاي',
+			'March'       : '3-ئاي',
+			'April'       : '4-ئاي',
+			'May'         : '5-ئاي',
+			'June'        : '6-ئاي',
+			'July'        : '7-ئاي',
+			'August'      : '8-ئاي',
+			'September'   : '9-ئاي',
+			'October'     : '10-ئاي',
+			'November'    : '11-ئاي',
+			'December'    : '12-ئاي',
+			'Sunday'      : 'يەكشەنبە',
+			'Monday'      : 'دۈشەنبە',
+			'Tuesday'     : 'سەيشەنبە',
+			'Wednesday'   : 'چارشەنبە',
+			'Thursday'    : 'پەيشەنبە',
+			'Friday'      : 'جۈمە',
+			'Saturday'    : 'شەنبە',
+			'Sun'         : 'يە',
+			'Mon'         : 'دۈ',
+			'Tue'         : 'سە',
+			'Wed'         : 'چا',
+			'Thu'         : 'پە',
+			'Fri'         : 'جۈ',
+			'Sat'         : 'شە',
+
+			/******************************** sort variants ********************************/
+			'sortname'          : 'نامى ',
+			'sortkind'          : 'شەكلى ',
+			'sortsize'          : 'چوڭلىقى',
+			'sortdate'          : 'ۋاقتى',
+			'sortFoldersFirst'  : 'قىسقۇچلار باشتا',
+
+			/********************************** messages **********************************/
+			'confirmReq'      : 'مۇقىملاشتۇرۇڭ',
+			'confirmRm'       : 'راستىنلا ئۆچۈرەمسىز?<br/>كەينىگە قايتۇرغىلى بولمايدۇ!',
+			'confirmRepl'     : 'ھازىرقى ھۈججەت بىلەن كونىسىنى ئالماشتۇرامسىز?',
+			'apllyAll'        : 'ھەممىسىگە ئىشلىتىش',
+			'name'            : 'نامى',
+			'size'            : 'چوڭلىقى',
+			'perms'           : 'ھوقۇق',
+			'modify'          : 'ئۆزگەرگەن ۋاقتى',
+			'kind'            : 'تۈرى',
+			'read'            : 'ئوقۇش',
+			'write'           : 'يېزىش',
+			'noaccess'        : 'ھوقۇق يوق',
+			'and'             : 'ھەم',
+			'unknown'         : 'ئېنىق ئەمەس',
+			'selectall'       : 'ھەممىنى تاللاش',
+			'selectfiles'     : 'تاللاش',
+			'selectffile'     : 'بىرىنچىسىنى تاللاش',
+			'selectlfile'     : 'ئەڭ ئاخىرقىسىنى تاللاش',
+			'viewlist'        : 'جەدۋەللىك كۆرىنىشى',
+			'viewicons'       : 'رەسىملىك كۆرىنىشى',
+			'places'          : 'ئورنى',
+			'calc'            : 'ھېسابلاش',
+			'path'            : 'ئورنى',
+			'aliasfor'        : 'باشقا نامى',
+			'locked'          : 'تاقالغان',
+			'dim'             : 'چوڭلىقى',
+			'files'           : 'ھۈججەت',
+			'folders'         : 'قىسقۇچ',
+			'items'           : 'تۈرلەر',
+			'yes'             : 'ھەئە',
+			'no'              : 'ياق',
+			'link'            : 'ئۇلىنىش',
+			'searcresult'     : 'ئىزدەش نەتىجىسى',
+			'selected'        : 'تاللانغان تۈرلەر',
+			'about'           : 'چۈشەنچە',
+			'shortcuts'       : 'تېز كونۇپكىلار',
+			'help'            : 'ياردەم',
+			'webfm'           : 'تور ھۈججەتلىرىنى باشقۇرۇش',
+			'ver'             : 'نەشرى',
+			'protocolver'     : 'پروتوكول نەشرى',
+			'homepage'        : 'تۈر باش بېتى',
+			'docs'            : 'ھۈججەت',
+			'github'          : 'Fork us on Github',
+			'twitter'         : 'Follow us on twitter',
+			'facebook'        : 'Join us on facebook',
+			'team'            : 'گۇرۇپپا',
+			'chiefdev'        : 'باش پىروگراممىر',
+			'developer'       : 'پىروگراممىر',
+			'contributor'     : 'تۆھپىكار',
+			'maintainer'      : 'ئاسرىغۇچى',
+			'translator'      : 'تەرجىمان',
+			'icons'           : 'سىنبەلگە',
+			'dontforget'      : 'تەرىڭىزنى سۈرتىدىغان قولياغلىقىڭىزنى ئۇنۇتماڭ جۇمۇ',
+			'shortcutsof'     : 'تېز كونۇپكىلار چەكلەنگەن',
+			'dropFiles'       : 'ھۈججەتنى موشۇ يەرگە تاشلاڭ',
+			'or'              : 'ياكى',
+			'selectForUpload' : 'يۈكلىمەكچى بولغان ھۈججەتنى تاللاڭ',
+			'moveFiles'       : 'يۆتكەش',
+			'copyFiles'       : 'كۆچۈرۈش',
+			'rmFromPlaces'    : 'ھۈججەتلەرنى ئۆچۈرۈش',
+			'aspectRatio'     : 'نىسبىتىنى ساقلاش',
+			'scale'           : 'نىسبىتى',
+			'width'           : 'ئۇزۇنلىقى',
+			'height'          : 'ئىگىزلىكى',
+			'resize'          : 'چوڭلىقىنى تەڭشەش',
+			'crop'            : 'كېسىش',
+			'rotate'          : 'پىقىرىتىش',
+			'rotate-cw'       : 'سائەت ئىستىرىلكىسى بويىچە 90 گىرادۇس پىقىرىتىش',
+			'rotate-ccw'      : 'سائەت ئىستىرىلكىسىنى تەتۈر يۆنىلىشى بويىچە 90گىرادۇس پىقىرىتىش',
+			'degree'          : 'گىرادۇس',
+			'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012
+			'protocol'            : 'پىروتوكڭل', // added 18.04.2012
+			'host'                : 'مۇلازىمىتىر', // added 18.04.2012
+			'port'            : 'پورت', // added 18.04.2012
+			'user'            : 'ئەزا', // added 18.04.2012
+			'pass'            : 'ئىم', // added 18.04.2012
+
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : 'ئېنىق ئەمەس',
+			'kindFolder'      : 'ھۈججەت قىسقۇچ',
+			'kindAlias'       : 'باشقا نامى',
+			'kindAliasBroken' : 'باشقا نامى خاتا',
+			// applications
+			'kindApp'         : 'كود ھۈججىتى',
+			'kindPostscript'  : 'Postscript ھۈججىتى',
+			'kindMsOffice'    : 'Microsoft Office ھۈججىتى',
+			'kindMsWord'      : 'Microsoft Word ھۈججىتى',
+			'kindMsExcel'     : 'Microsoft Excel ھۈججىتى',
+			'kindMsPP'        : 'Microsoft Powerpoint ھۈججىتى',
+			'kindOO'          : 'Open Office ھۈججىتى',
+			'kindAppFlash'    : 'Flash ھۈججىتى',
+			'kindPDF'         : 'Portable Document Format (PDF)',
+			'kindTorrent'     : 'Bittorrent ھۈججىتى',
+			'kind7z'          : '7z ھۈججىتى',
+			'kindTAR'         : 'TAR ھۈججىتى',
+			'kindGZIP'        : 'GZIP ھۈججىتى',
+			'kindBZIP'        : 'BZIP ھۈججىتى',
+			'kindXZ'          : 'XZ ھۈججىتى',
+			'kindZIP'         : 'ZIP ھۈججىتى',
+			'kindRAR'         : 'RAR ھۈججىتى',
+			'kindJAR'         : 'Java JAR ھۈججىتى',
+			'kindTTF'         : 'True Type فونت',
+			'kindOTF'         : 'Open Type فونت',
+			'kindRPM'         : 'RPM',
+			// texts
+			'kindText'        : 'تېكىست',
+			'kindTextPlain'   : 'تېكىست',
+			'kindPHP'         : 'PHP ھۈججىتى',
+			'kindCSS'         : 'CSS ھۈججىتى',
+			'kindHTML'        : 'HTML ھۈججىتى',
+			'kindJS'          : 'Javascript ھۈججىتى',
+			'kindRTF'         : 'RTF ھۈججىتى',
+			'kindC'           : 'C ھۈججىتى',
+			'kindCHeader'     : 'C باش ھۈججىتى',
+			'kindCPP'         : 'C++ ھۈججىتى',
+			'kindCPPHeader'   : 'C++ باش ھۈججىتى',
+			'kindShell'       : 'Unix سىكىرىپت ھۈججىتى',
+			'kindPython'      : 'Python ھۈججىتى',
+			'kindJava'        : 'Java ھۈججىتى',
+			'kindRuby'        : 'Ruby ھۈججىتى',
+			'kindPerl'        : 'Perl ھۈججىتى',
+			'kindSQL'         : 'SQL ھۈججىتى',
+			'kindXML'         : 'XML ھۈججىتى',
+			'kindAWK'         : 'AWK ھۈججىتى',
+			'kindCSV'         : 'CSV ھۈججىتى',
+			'kindDOCBOOK'     : 'Docbook XML ھۈججىتى',
+			// images
+			'kindImage'       : 'رەسىم',
+			'kindBMP'         : 'BMP رەسىم',
+			'kindJPEG'        : 'JPEG رەسىم',
+			'kindGIF'         : 'GIF رەسىم',
+			'kindPNG'         : 'PNG رەسىم',
+			'kindTIFF'        : 'TIFF رەسىم',
+			'kindTGA'         : 'TGA رەسىم',
+			'kindPSD'         : 'Adobe Photoshop رەسىم',
+			'kindXBITMAP'     : 'X bitmap رەسىم',
+			'kindPXM'         : 'Pixelmator رەسىم',
+			// media
+			'kindAudio'       : 'ئاۋاز',
+			'kindAudioMPEG'   : 'MPEG ئاۋاز',
+			'kindAudioMPEG4'  : 'MPEG-4 ئاۋاز',
+			'kindAudioMIDI'   : 'MIDI ئاۋاز',
+			'kindAudioOGG'    : 'Ogg Vorbis ئاۋاز',
+			'kindAudioWAV'    : 'WAV ئاۋاز',
+			'AudioPlaylist'   : 'MP3 قويۇش تىزىملىكى',
+			'kindVideo'       : 'سىن',
+			'kindVideoDV'     : 'DV سىن',
+			'kindVideoMPEG'   : 'MPEG سىن',
+			'kindVideoMPEG4'  : 'MPEG-4 سىن',
+			'kindVideoAVI'    : 'AVI سىن',
+			'kindVideoMOV'    : 'Quick Time سىن',
+			'kindVideoWM'     : 'Windows Media سىن',
+			'kindVideoFlash'  : 'Flash سىن',
+			'kindVideoMKV'    : 'Matroska سىن',
+			'kindVideoOGG'    : 'Ogg سىن'
+		}
+	};
+}));

+ 391 - 0
src/assets/js/i18n/elfinder.uk.js

@@ -0,0 +1,391 @@
+/**
+ * Ukrainian translation
+ * @author Oleksandr Palianytsia
+ * @version 2015-04-16
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.uk = {
+		translator : 'ITLancer',
+		language   : 'Українська мова',
+		direction  : 'ltr',
+		dateFormat : 'd.m.Y H:i',
+		fancyDateFormat : '$1 H:i',
+		messages   : {
+
+			/********************************** errors **********************************/
+			'error'                : 'Помилка',
+			'errUnknown'           : 'Невідома помилка.',
+			'errUnknownCmd'        : 'Невідома команда.',
+			'errJqui'              : 'Неправильне налаштування jQuery UI. Відсутні компоненти: selectable, draggable, droppable.',
+			'errNode'              : 'Відсутній елемент DOM для створення elFinder.',
+			'errURL'               : 'Неправильне налаштування! Не вказана опція URL.',
+			'errAccess'            : 'Доступ заборонено.',
+			'errConnect'           : 'Не вдалося з’єднатися з сервером.',
+			'errAbort'             : 'З’єднання розірване.',
+			'errTimeout'           : 'Тайм-аут з’єднання.',
+			'errNotFound'          : 'Не знайдено серверної частини.',
+			'errResponse'          : 'Неправильна відповідь від сервера.',
+			'errConf'              : 'Неправильне налаштування серверної частини.',
+			'errJSON'              : 'Модуль PHP JSON не встановлено.',
+			'errNoVolumes'         : 'Немає доступних для читання директорій.',
+			'errCmdParams'         : 'Неправильний параметр для команди "$1".',
+			'errDataNotJSON'       : 'Дані не у форматі JSON.',
+			'errDataEmpty'         : 'Дані відсутні.',
+			'errCmdReq'            : 'Серверна частина вимагає назву команди.',
+			'errOpen'              : 'Неможливо відкрити "$1".',
+			'errNotFolder'         : 'Об’єкт не є папкою.',
+			'errNotFile'           : 'Об’єкт не є файлом.',
+			'errRead'              : 'Неможливо прочитати "$1".',
+			'errWrite'             : 'Неможливо записати в "$1".',
+			'errPerm'              : 'Помилка доступу.',
+			'errLocked'            : 'Файл "$1" заблоковано - не можливо перемістити, перейменувати чи вилучити.',
+			'errExists'            : 'Файл з назвою "$1" вже існує.',
+			'errInvName'           : 'Недійсна назва файла.',
+			'errFolderNotFound'    : 'Теку не знайдено.',
+			'errFileNotFound'      : 'Файл не знайдено.',
+			'errTrgFolderNotFound' : 'Цільову теку "$1" не знайдено.',
+			'errPopup'             : 'Браузер забороняє відкривати popup-вікно. Дозвольте у налаштування браузера, щоб відкрити файл.',
+			'errMkdir'             : 'Неможливо створити теку "$1".',
+			'errMkfile'            : 'Неможливо створити файл "$1".',
+			'errRename'            : 'Неможливо перейменувати файл "$1".',
+			'errCopyFrom'          : 'Копіювання файлів з тому "$1" не дозволено.',
+			'errCopyTo'            : 'Копіювання файлів на том "$1" не дозволено.',
+			'errUpload'            : 'Помилка відвантаження.',
+			'errUploadCommon'      : 'Помилка відвантаження.',
+			'errUploadFile'        : 'Неможливо відвантажити файл "$1".',
+			'errUploadNoFiles'     : 'Не знайдено файлів для відвантаження.',
+			'errMaxSize'           : 'Розмір даних перевищує допустиме значення.',
+			'errFileMaxSize'       : 'Розмір файла перевищує допустиме значення.',
+			'errUploadMime'        : 'Файли цього типу заборонені.',
+			'errUploadTransfer'    : '"$1" : помилка передачі.',
+			'errSave'              : 'Неможливо записати "$1".',
+			'errCopy'              : 'Неможливо скопіювати "$1".',
+			'errMove'              : 'Неможливо перенести "$1".',
+			'errCopyInItself'      : 'Неможливо скопіювати "$1" сам у себе.',
+			'errRm'                : 'Неможливо вилучити "$1".',
+			'errExtract'           : 'Неможливо розпакувати файли з "$1".',
+			'errArchive'           : 'Неможливо створити архів.',
+			'errArcType'           : 'Тип архіву не підтримується.',
+			'errNoArchive'         : 'Файл не є архівом, або є архівом, тип якого не підтримується.',
+			'errCmdNoSupport'      : 'Серверна частина не підтримує цієї команди.',
+			'errReplByChild'       : 'Папка “$1” не може бути замінена елементом, який вона містить.',
+			'errArcSymlinks'       : 'З міркувань безпеки заборонено розпаковувати архіви з символічними посиланнями.',
+			'errArcMaxSize'        : 'Розмір файлів архіву перевищує допустиме значення.',
+			'errResize'            : 'Неможливо масштабувати "$1".',
+			'errUsupportType'      : 'Непідтримуваний тип файла.',
+            'errNotUTF8Content'    : 'Файл "$1" не в UTF-8 і не може бути відредагований.',  // added 9.11.2011
+            'errNetMount'          : 'Неможливо змонтувати "$1".', // added 17.04.2012
+            'errNetMountNoDriver'  : 'Непідтримуваний протокл.',     // added 17.04.2012
+            'errNetMountFailed'    : 'В процесі монтування сталася помилка.',         // added 17.04.2012
+            'errNetMountHostReq'   : 'Host required.', // added 18.04.2012
+            'errSessionExpires'    : 'Час сеансу минув через неактивність.',
+            'errCreatingTempDir'   : 'НЕможливо створити тимчасову директорію: "$1"',
+            'errFtpDownloadFile'   : 'Неможливо завантажити файл з FTP: "$1"',
+            'errFtpUploadFile'     : 'Неможливо завантажити файл на FTP: "$1"',
+            'errFtpMkdir'          : 'Неможливо створити віддалений каталог на FTP: "$1"',
+            'errArchiveExec'       : 'Помилка при архівації файлів: "$1"',
+            'errExtractExec'       : 'Помилка при розархівуванні файлів: "$1"',
+            'errNetUnMount'        : 'Неможливо демонтувати', // from v2.1 added 30.04.2012
+            'errConvUTF8'          : 'Неможливо конвертувати в UTF - 8', // from v2.1 added 08.04.2014
+            'errFolderUpload'      : 'Використовуйте Google Chrome, якщо ви хочете завантажити папку', // from v2.1 added 26.6.2015
+            'errSearchTimeout'     : 'Час пошуку "$1" вийшов. Результат пошуку частковий', // from v2.1 added 12.1.2016
+            'errReauthRequire'     : 'Необхідна повторна авторизація.', // from v2.1.10 added 3.24.2016
+
+			/******************************* commands names ********************************/
+			'cmdarchive'   : 'Архівувати',
+			'cmdback'      : 'Назад',
+			'cmdcopy'      : 'Копівати',
+			'cmdcut'       : 'Вирізати',
+			'cmddownload'  : 'Завантажити',
+			'cmdduplicate' : 'Дублювати',
+			'cmdedit'      : 'Редагувати файл',
+			'cmdextract'   : 'Розпакувати файли з архіву',
+			'cmdforward'   : 'Вперед',
+			'cmdgetfile'   : 'Вибрати файли',
+			'cmdhelp'      : 'Про програму',
+			'cmdhome'      : 'Додому',
+			'cmdinfo'      : 'Інформація',
+			'cmdmkdir'     : 'Створити теку',
+			'cmdmkfile'    : 'Створити текстовий файл',
+			'cmdopen'      : 'Відкрити',
+			'cmdpaste'     : 'Вставити',
+			'cmdquicklook' : 'Попередній перегляд',
+			'cmdreload'    : 'Перечитати',
+			'cmdrename'    : 'Перейменувати',
+			'cmdrm'        : 'Вилучити',
+			'cmdsearch'    : 'Шукати файли',
+			'cmdup'        : 'На 1 рівень вгору',
+			'cmdupload'    : 'Відвантажити файли',
+			'cmdview'      : 'Перегляд',
+			'cmdresize'    : 'Масштабувати зображення',
+			'cmdsort'      : 'Сортування',
+            'cmdnetmount'  : 'Змонтувати мережевий диск', // added 18.04.2012
+            'cmdnetunmount': 'Розмонтувати', // from v2.1 added 30.04.2012
+            'cmdplaces'    : 'To Places', // added 28.12.2014
+            'cmdchmod'     : 'Змінити права', // from v2.1 added 20.6.2015
+            'cmdopendir'   : 'Відкрии директорію', // from v2.1 added 13.1.2016
+
+			/*********************************** buttons ***********************************/
+			'btnClose'  : 'Закрити',
+			'btnSave'   : 'Зберегти',
+			'btnRm'     : 'Вилучити',
+			'btnApply'  : 'Застосувати',
+			'btnCancel' : 'Скасувати',
+			'btnNo'     : 'Ні',
+			'btnYes'    : 'Так',
+			'btnMount'  : 'Підключити',  // added 18.04.2012
+			'btnApprove': 'Перейти в $1 і прийняти', // from v2.1 added 26.04.2012
+			'btnUnmount': 'Відключити', // from v2.1 added 30.04.2012
+			'btnConv'   : 'Конвертувати', // from v2.1 added 08.04.2014
+			'btnCwd'    : 'Тут',      // from v2.1 added 22.5.2015
+			'btnVolume' : 'Розділ',    // from v2.1 added 22.5.2015
+			'btnAll'    : 'Всі',       // from v2.1 added 22.5.2015
+			'btnMime'   : 'MIME тип', // from v2.1 added 22.5.2015
+			'btnFileName':'Назва файла',  // from v2.1 added 22.5.2015
+			'btnSaveClose': 'Зберегти і вийти', // from v2.1 added 12.6.2015
+			'btnBackup' : 'Резервна копія', // fromv2.1 added 28.11.2015
+
+			/******************************** notifications ********************************/
+			'ntfopen'     : 'Відкрити теку',
+			'ntffile'     : 'Відкрити файл',
+			'ntfreload'   : 'Перечитати вміст теки',
+			'ntfmkdir'    : 'Створення теки',
+			'ntfmkfile'   : 'Створення файлів',
+			'ntfrm'       : 'Вилучити файли',
+			'ntfcopy'     : 'Копіювати файли',
+			'ntfmove'     : 'Перенести файли',
+			'ntfprepare'  : 'Підготовка до копіювання файлів',
+			'ntfrename'   : 'Перейменувати файли',
+			'ntfupload'   : 'Відвантажити файли',
+			'ntfdownload' : 'Завантажити файли',
+			'ntfsave'     : 'Записати файли',
+			'ntfarchive'  : 'Створення архіву',
+			'ntfextract'  : 'Розпаковування архіву',
+			'ntfsearch'   : 'Пошук файлів',
+			'ntfsmth'     : 'Виконується >_<',
+			'ntfloadimg'  : 'Завантаження зображення',
+            'ntfnetmount' : 'Монтування мережевого диска', // added 18.04.2012
+            'ntfnetunmount': 'Розмонтування мережевого диска', // from v2.1 added 30.04.2012
+            'ntfdim'      : 'Acquiring image dimension', // added 20.05.2013
+            'ntfreaddir'  : 'Читання інформації директорії', // from v2.1 added 01.07.2013
+            'ntfurl'      : 'отримання URL посилання', // from v2.1 added 11.03.2014
+            'ntfchmod'    : 'Зміна прав файлу', // from v2.1 added 20.6.2015
+            'ntfpreupload': 'Перевірка імені завантажуваного файла', // from v2.1 added 31.11.2015
+            'ntfzipdl'    : 'Створення файлу для завантаження', // from v2.1.7 added 23.1.2016
+
+			/************************************ dates **********************************/
+			'dateUnknown' : 'невідомо',
+			'Today'       : 'сьогодні',
+			'Yesterday'   : 'вчора',
+			'Jan'         : 'Січ',
+			'Feb'         : 'Лют',
+			'Mar'         : 'Бер',
+			'Apr'         : 'Кві',
+			'May'         : 'Тра',
+			'Jun'         : 'Чер',
+			'Jul'         : 'Лип',
+			'Aug'         : 'Сер',
+			'Sep'         : 'Вер',
+			'Oct'         : 'Жов',
+			'Nov'         : 'Лис',
+			'Dec'         : 'Гру',
+			'January'     : 'січня',
+			'February'    : 'лютого',
+			'March'       : 'березня',
+			'April'       : 'квітня',
+			'May'         : 'травня',
+			'June'        : 'червня',
+			'July'        : 'липня',
+			'August'      : 'серпня',
+			'September'   : 'вересня',
+			'October'     : 'жовтня',
+			'November'    : 'листопада',
+			'December'    : 'грудня',
+			'Sunday'      : 'Неділя',
+			'Monday'      : 'Понеділок',
+			'Tuesday'     : 'Вівторок',
+			'Wednesday'   : 'Середа',
+			'Thursday'    : 'Четвер',
+			'Friday'      : 'П’ятниця',
+			'Saturday'    : 'Субота',
+			'Sun'         : 'Нд',
+			'Mon'         : 'Пн',
+			'Tue'         : 'Вт',
+			'Wed'         : 'Ср',
+			'Thu'         : 'Чт',
+			'Fri'         : 'Пт',
+			'Sat'         : 'Сб',
+			/******************************** sort variants ********************************/
+			'sortnameDirsFirst' : 'за назвою (теки на початку)',
+			'sortkindDirsFirst' : 'за типом (теки на початку)',
+			'sortsizeDirsFirst' : 'за розміром (теки на початку)',
+			'sortdateDirsFirst' : 'за датою (теки на початку)',
+			'sortname'          : 'за назвою',
+			'sortkind'          : 'за типом',
+			'sortsize'          : 'за розміром',
+			'sortdate'          : 'за датою',
+
+			/********************************** messages **********************************/
+			'confirmReq'      : 'Підтвердіть',
+			'confirmRm'       : 'Ви справді хочете вилучити файли?<br/>Операція незворотня!',
+			'confirmRepl'     : 'Замінити старий файл новим?',
+			'apllyAll'        : 'Застосувати до всіх',
+			'name'            : 'Назва',
+			'size'            : 'Розмір',
+			'perms'           : 'Доступи',
+			'modify'          : 'Змінено',
+			'kind'            : 'Тип',
+			'read'            : 'читання',
+			'write'           : 'запис',
+			'noaccess'        : 'недоступно',
+			'and'             : 'і',
+			'unknown'         : 'невідомо',
+			'selectall'       : 'Вибрати всі файли',
+			'selectfiles'     : 'Вибрати файл(и)',
+			'selectffile'     : 'Вибрати перший файл',
+			'selectlfile'     : 'Вибрати останній файл',
+			'viewlist'        : 'Списком',
+			'viewicons'       : 'Значками',
+			'places'          : 'Розташування',
+			'calc'            : 'Вирахувати',
+			'path'            : 'Шлях',
+			'aliasfor'        : 'Аліас для',
+			'locked'          : 'Заблоковано',
+			'dim'             : 'Розміри',
+			'files'           : 'Файли',
+			'folders'         : 'теки',
+			'items'           : 'Елементи',
+			'yes'             : 'так',
+			'no'              : 'ні',
+			'link'            : 'Посилання',
+			'searcresult'     : 'Результати пошуку',
+			'selected'        : 'Вибрані елементи',
+			'about'           : 'Про',
+			'shortcuts'       : 'Ярлики',
+			'help'            : 'Допомога',
+			'webfm'           : 'Web-менеджер файлів',
+			'ver'             : 'Версія',
+			'protocol'        : 'версія протоколу',
+			'homepage'        : 'Сторінка проекту',
+			'docs'            : 'Документація',
+			'github'          : 'Fork us on Github',
+			'twitter'         : 'Слідкуйте у Твітері',
+			'facebook'        : 'Приєднуйтесь у фейсбуці',
+			'team'            : 'Автори',
+			'chiefdev'        : 'головний розробник',
+			'developer'       : 'розробник',
+			'contributor'     : 'учасник',
+			'maintainer'      : 'супроводжувач',
+			'translator'      : 'перекладач',
+			'icons'           : 'Значки',
+			'dontforget'      : 'і не забудьте рушничок',
+			'shortcutsof'     : 'Ярлики заборонені',
+			'dropFiles'       : 'Кидайте файли сюди',
+			'or'              : 'або',
+			'selectForUpload' : 'Виберіть файли для відвантаження',
+			'moveFiles'       : 'Перемістити файли',
+			'copyFiles'       : 'Копіювати файли',
+			'rmFromPlaces'    : 'Вилучити з розташувань',
+			'untitled folder' : 'неназвана папка',
+			'untitled file.txt' : 'неназваний файл.txt',
+			'aspectRatio'     : 'Співвідношення',
+			'scale'           : 'Масштаб',
+			'width'           : 'Ширина',
+			'height'          : 'Висота',
+			'mode'            : 'Режим',
+			'resize'          : 'Змінити розмір',
+			'crop'            : 'Обрізати',
+			'rotate'          : 'Повернути',
+			'rotate-cw'       : 'Повернути на 90 градусів за год. стр.',
+			'rotate-ccw'      : 'Повернути на 90 градусів проти год. стр.',
+			'degree'          : 'Градус',
+
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : 'Невідомо',
+			'kindFolder'      : 'Папка',
+			'kindAlias'       : 'Аліас',
+			'kindAliasBroken' : 'Битий аліас',
+			// applications
+			'kindApp'         : 'Програма',
+			'kindPostscript'  : 'Документ Postscript',
+			'kindMsOffice'    : 'Документ Microsoft Office',
+			'kindMsWord'      : 'Документ Microsoft Word',
+			'kindMsExcel'     : 'Документ Microsoft Excel',
+			'kindMsPP'        : 'Презентація Microsoft Powerpoint',
+			'kindOO'          : 'Документ Open Office',
+			'kindAppFlash'    : 'Flash-додаток',
+			'kindPDF'         : 'Документ переносного формату (PDF)',
+			'kindTorrent'     : 'Файл Bittorrent',
+			'kind7z'          : 'Архів 7z archive',
+			'kindTAR'         : 'Архів TAR archive',
+			'kindGZIP'        : 'Архів GZIP archive',
+			'kindBZIP'        : 'Архів BZIP archive',
+			'kindZIP'         : 'Архів ZIP archive',
+			'kindRAR'         : 'Архів RAR archive',
+			'kindJAR'         : 'Файл Java JAR',
+			'kindTTF'         : 'Шрифт True Type',
+			'kindOTF'         : 'Шрифт Open Type',
+			'kindRPM'         : 'Пакунок RPM',
+			// texts
+			'kindText'        : 'Текстовий документ',
+			'kindTextPlain'   : 'Простий текст',
+			'kindPHP'         : 'Код PHP',
+			'kindCSS'         : 'Каскадна таблиця стилів (CSS)',
+			'kindHTML'        : 'Документ HTML',
+			'kindJS'          : 'Код Javascript',
+			'kindRTF'         : 'Rich Text Format',
+			'kindC'           : 'Код C',
+			'kindCHeader'     : 'Заголовковий код C',
+			'kindCPP'         : 'Код C++',
+			'kindCPPHeader'   : 'Заголовковий код C++',
+			'kindShell'       : 'Скрипт Unix shell',
+			'kindPython'      : 'Код Python',
+			'kindJava'        : 'Код Java',
+			'kindRuby'        : 'Код Ruby',
+			'kindPerl'        : 'Код Perl',
+			'kindSQL'         : 'Код SQL',
+			'kindXML'         : 'Документ XML',
+			'kindAWK'         : 'Код AWK',
+			'kindCSV'         : 'Значення розділені комою (CSV)',
+			'kindDOCBOOK'     : 'Документ Docbook XML',
+			// images
+			'kindImage'       : 'Зображення',
+			'kindBMP'         : 'Зображення BMP',
+			'kindJPEG'        : 'Зображення JPEG',
+			'kindGIF'         : 'Зображення GIF',
+			'kindPNG'         : 'Зображення PNG',
+			'kindTIFF'        : 'Зображення TIFF',
+			'kindTGA'         : 'Зображення TGA',
+			'kindPSD'         : 'Зображення Adobe Photoshop',
+			'kindXBITMAP'     : 'Зображення X bitmap',
+			'kindPXM'         : 'Зображення Pixelmator',
+			// media
+			'kindAudio'       : 'Аудіо',
+			'kindAudioMPEG'   : 'Аудіо MPEG',
+			'kindAudioMPEG4'  : 'Аудіо MPEG-4',
+			'kindAudioMIDI'   : 'Аудіо MIDI',
+			'kindAudioOGG'    : 'Аудіо Ogg Vorbis',
+			'kindAudioWAV'    : 'Аудіо WAV',
+			'AudioPlaylist'   : 'Список відтворення MP3',
+			'kindVideo'       : 'Відео',
+			'kindVideoDV'     : 'Відео DV movie',
+			'kindVideoMPEG'   : 'Відео MPEG movie',
+			'kindVideoMPEG4'  : 'Відео MPEG-4 movie',
+			'kindVideoAVI'    : 'Відео AVI movie',
+			'kindVideoMOV'    : 'Відео Quick Time',
+			'kindVideoWM'     : 'Відео Windows Media',
+			'kindVideoFlash'  : 'Відео Flash',
+			'kindVideoMKV'    : 'Відео Matroska',
+			'kindVideoOGG'    : 'Відео Ogg'
+		}
+	}
+}));
+

+ 374 - 0
src/assets/js/i18n/elfinder.vi.js

@@ -0,0 +1,374 @@
+/**
+ * Vietnamese translation
+ * @author Chung Thủy f <chungthuyf@gmail.com>
+ * @version 2014-12-19
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+  elFinder.prototype.i18.vi = {
+    translator : 'Chung Thủy f &lt;chungthuyf@gmail.com&gt;,Son Nguyen &lt;son.nguyen@catalyst.net.nz&gt;',
+    language : 'Ngôn ngữ Việt Nam',
+    direction : 'ltr',
+    dateFormat : 'd.m.Y H:i',
+    fancyDateFormat : '$1 H:i',
+    messages : {
+
+        /********************************** errors **********************************/
+        'error'                : 'Lỗi',
+        'errUnknown'           : 'Lỗi không xác định được.',
+        'errUnknownCmd'        : 'Lỗi không rõ lệnh.',
+        'errJqui'              : 'Cấu hình jQueryUI không hợp lệ. Các thành phần lựa chọn, kéo và thả phải được bao gồm.',
+        'errNode'              : 'elFinder đòi hỏi phần tử DOM phải được tạo ra.',
+        'errURL'               : 'Cấu hình elFinder không hợp lệ! URL không được thiết lập tùy chọn.',
+        'errAccess'            : 'Truy cập bị từ chối.',
+        'errConnect'           : 'Không thể kết nối với backend.',
+        'errAbort'             : 'Kết nối bị hủy bỏ.',
+        'errTimeout'           : 'Thời gian chờ kết nối đã hết.',
+        'errNotFound'          : 'Backend không tìm thấy.',
+        'errResponse'          : 'Phản hồi backend không hợp lệ.',
+        'errConf'              : 'Cấu hình backend không hợp lệ.',
+        'errJSON'              : 'Mô-đun PHP JSON không được cài đặt.',
+        'errNoVolumes'         : 'Tập có thể đọc không có sẵn.',
+        'errCmdParams'         : 'Thông số không hợp lệ cho lệnh "$1".',
+        'errDataNotJSON'       : 'Dữ liệu không phải là JSON.',
+        'errDataEmpty'         : 'Dữ liệu trống.',
+        'errCmdReq'            : 'Backend đòi hỏi tên lệnh.',
+        'errOpen'              : 'Không thể mở "$1".',
+        'errNotFolder'         : 'Đối tượng không phải là một thư mục.',
+        'errNotFile'           : 'Đối tượng không phải là một tập tin.',
+        'errRead'              : 'Không thể đọc "$1".',
+        'errWrite'             : 'Không thể ghi vào "$1".',
+        'errPerm'              : 'Quyền bị từ chối.',
+        'errLocked'            : '"$1" đã bị khóa và không thể đổi tên, di chuyển hoặc loại bỏ.',
+        'errExists'            : 'Tập tin có tên "$1" đã tồn tại.',
+        'errInvName'           : 'Tên tập tin không hợp lệ.',
+        'errFolderNotFound'    : 'Thư mục không tìm thấy.',
+        'errFileNotFound'      : 'Tập tin không tìm thấy.',
+        'errTrgFolderNotFound' : 'Thư mục đích "$1" không được tìm thấy.',
+        'errPopup'             : 'Trình duyệt ngăn chặn mở cửa sổ popup.',
+        'errMkdir'             : 'Không thể tạo thư mục "$1".',
+        'errMkfile'            : 'Không thể tạo tập tin "$1".',
+        'errRename'            : 'Không thể đổi tên "$1".',
+        'errCopyFrom'          : 'Sao chép tập tin từ tập "$1" không được phép.',
+        'errCopyTo'            : 'Sao chép tập tin tới tập "$1" không được phép.',
+        'errUpload'            : 'Tải lên báo lỗi.',
+        'errUploadFile'        : 'Không thể tải lên "$1".',
+        'errUploadNoFiles'     : 'Không thấy tập tin nào để tải lên.',
+        'errUploadTotalSize'   : 'Dữ liệu vượt quá kích thước tối đa cho phép.',
+        'errUploadFileSize'    : 'Tập tin vượt quá kích thước tối đa cho phép.',
+        'errUploadMime'        : 'Kiểu tập tin không được phép.',
+        'errUploadTransfer'    : 'Lỗi khi truyền "$1".',
+			'errNotReplace'        : 'Object "$1" already exists at this location and can not be replaced by object with another type.',
+			'errReplace'           : 'Unable to replace "$1".',
+			'errSave'              : 'Không thể lưu "$1".',
+        'errCopy'              : 'Không thể sao chép "$1".',
+        'errMove'              : 'Không thể chuyển "$1".',
+        'errCopyInItself'      : 'Không thể sao chép "$1" vào chính nó.',
+        'errRm'                : 'Không thể xóa "$1".',
+        'errRmSrc'             : 'Unable remove source file(s).',
+			'errExtract'           : 'Không thể giải nén các tập tin từ"$1".',
+        'errArchive'           : 'Không thể tạo ra lưu trữ.',
+        'errArcType'           : 'Loại lưu trữ không được hỗ trợ.',
+        'errNoArchive'         : 'Tập tin không phải là lưu trữ hoặc có kiểu lưu trữ không được hỗ trợ.',
+        'errCmdNoSupport'      : 'Backend không hỗ trợ lệnh này.',
+        'errReplByChild'       : 'Thư mục "$1" không thể được thay thế bằng một mục con mà nó chứa.',
+        'errArcSymlinks'       : 'Vì lý do bảo mật, từ chối giải nén tập tin lưu trữ có chứa liên kết mềm.',
+        'errArcMaxSize'        : 'Tập tin lưu trữ vượt quá kích thước tối đa cho phép.',
+        'errResize'            : 'Không thể thay đổi kích thước "$1".',
+			'errResizeDegree'      : 'Invalid rotate degree.',
+			'errResizeRotate'      : 'Unable to rotate image.',
+			'errResizeSize'        : 'Invalid image size.',
+			'errResizeNoChange'    : 'Image size not changed.',
+        'errUsupportType'      : 'Loại tập tin không được hỗ trợ.',
+			'errNotUTF8Content'    : 'File "$1" is not in UTF-8 and cannot be edited.',  // added 9.11.2011
+			'errNetMount'          : 'Unable to mount "$1".', // added 17.04.2012
+			'errNetMountNoDriver'  : 'Unsupported protocol.',     // added 17.04.2012
+			'errNetMountFailed'    : 'Mount failed.',         // added 17.04.2012
+			'errNetMountHostReq'   : 'Host required.', // added 18.04.2012
+			'errSessionExpires'    : 'Your session has expired due to inactivity.',
+			'errCreatingTempDir'   : 'Unable to create temporary directory: "$1"',
+			'errFtpDownloadFile'   : 'Unable to download file from FTP: "$1"',
+			'errFtpUploadFile'     : 'Unable to upload file to FTP: "$1"',
+			'errFtpMkdir'          : 'Unable to create remote directory on FTP: "$1"',
+			'errArchiveExec'       : 'Error while archiving files: "$1"',
+			'errExtractExec'       : 'Error while extracting files: "$1"',
+
+        /******************************* commands names ********************************/
+        'cmdarchive'   : 'Tạo tập tin nén',
+        'cmdback'      : 'Trở lại',
+        'cmdcopy'      : 'Sao chép',
+        'cmdcut'       : 'Cắt',
+        'cmddownload'  : 'Tải về',
+        'cmdduplicate' : 'Bản sao',
+        'cmdedit'      : 'Sửa tập tin',
+        'cmdextract'   : 'Giải nén tập tin',
+        'cmdforward'   : 'Trước',
+        'cmdgetfile'   : 'Chọn tập tin',
+        'cmdhelp'      : 'Giới thiệu phần mềm',
+        'cmdhome'      : 'Home',
+        'cmdinfo'      : 'Thông tin',
+        'cmdmkdir'     : 'Thư mục',
+        'cmdmkfile'    : 'Tạo tập tin Text',
+        'cmdopen'      : 'Mở',
+        'cmdpaste'     : 'Paste',
+        'cmdquicklook' : 'Xem trước',
+        'cmdreload'    : 'Nạp lại',
+        'cmdrename'    : 'Đổi tên',
+        'cmdrm'        : 'Xóa',
+        'cmdsearch'    : 'Tìm tập tin',
+        'cmdup'        : 'Go to parent directory',
+        'cmdupload'    : 'Tải tập tin lên',
+        'cmdview'      : 'Xem',
+        'cmdresize'    : 'Resize image',
+        'cmdsort'      : 'Sắp xếp',
+			'cmdnetmount'  : 'Mount network volume',
+
+        /*********************************** buttons ***********************************/ 
+        'btnClose'  : 'Đóng',
+        'btnSave'   : 'Lưu',
+        'btnRm'     : 'Gỡ bỏ',
+        'btnApply'  : 'Áp dụng',
+        'btnCancel' : 'Hủy bỏ',
+        'btnNo'     : 'Không',
+        'btnYes'    : 'Đồng ý',
+			'btnMount'  : 'Mount',
+
+        /******************************** notifications ********************************/
+        'ntfopen'     : 'Mở thư mục',
+        'ntffile'     : 'Mở tập tin',
+        'ntfreload'   : 'Nạp lại nội dung thư mục',
+        'ntfmkdir'    : 'Tạo thư mục',
+        'ntfmkfile'   : 'Tạo tập tin',
+        'ntfrm'       : 'Xóa tập tin',
+        'ntfcopy'     : 'Sao chép tập tin',
+        'ntfmove'     : 'Di chuyển tập tin',
+        'ntfprepare'  : 'Chuẩn bị để sao chép các tập tin',
+        'ntfrename'   : 'Đổi tên tập tin',
+        'ntfupload'   : 'Tải tập tin lên',
+        'ntfdownload' : 'Tải tập tin',
+        'ntfsave'     : 'Lưu tập tin',
+        'ntfarchive'  : 'Tạo tập tin nén',
+        'ntfextract'  : 'Giải nén tập tin',
+        'ntfsearch'   : 'Tìm kiếm tập tin',
+			'ntfresize'   : 'Resizing images',
+        'ntfsmth'     : 'Doing something >_<',
+        'ntfloadimg'  : 'Đang tải hình ảnh',
+			'ntfnetmount' : 'Mounting network volume', // added 18.04.2012
+			'ntfdim'      : 'Acquiring image dimension', // added 20.05.2013
+
+        /************************************ dates **********************************/
+        'dateUnknown' : 'Chưa biết',
+        'Today'       : 'Hôm nay',
+        'Yesterday'   : 'Yesterday',
+        'msJan'       : 'Jan',
+        'msFeb'       : 'Feb',
+        'msMar'       : 'Mar',
+        'msApr'       : 'Apr',
+        'msMay'       : 'May',
+        'msJun'       : 'Jun',
+        'msJul'       : 'Jul',
+        'msAug'       : 'Aug',
+        'msSep'       : 'Sep',
+        'msOct'       : 'Oct',
+        'msNov'       : 'Nov',
+        'msDec'       : 'Dec',
+        'January'     : 'January',
+        'February'    : 'February',
+        'March'       : 'March',
+        'April'       : 'April',
+        'May'         : 'May',
+        'June'        : 'June',
+        'July'        : 'July',
+        'August'      : 'August',
+        'September'   : 'September',
+        'October'     : 'October',
+        'November'    : 'November',
+        'December'    : 'December',
+        'Sunday'      : 'Sunday', 
+        'Monday'      : 'Monday', 
+        'Tuesday'     : 'Tuesday', 
+        'Wednesday'   : 'Wednesday', 
+        'Thursday'    : 'Thursday', 
+        'Friday'      : 'Friday', 
+        'Saturday'    : 'Saturday',
+        'Sun'         : 'Sun', 
+        'Mon'         : 'Mon', 
+        'Tue'         : 'Tue', 
+        'Wed'         : 'Wed', 
+        'Thu'         : 'Thu', 
+        'Fri'         : 'Fri', 
+        'Sat'         : 'Sat',
+        
+        /******************************** sort variants ********************************/
+        'sortname'          : 'by name', 
+        'sortkind'          : 'by kind', 
+        'sortsize'          : 'by size',
+        'sortdate'          : 'by date',
+			'sortFoldersFirst'  : 'Folders first',
+
+        /********************************** messages **********************************/
+        'confirmReq'      : 'Confirmation required',
+        'confirmRm'       : 'Are you sure you want to remove files?<br/>This cannot be undone!',
+        'confirmRepl'     : 'Replace old file with new one?',
+        'apllyAll'        : 'Apply to all',
+        'name'            : 'Name',
+        'size'            : 'Size',
+        'perms'           : 'Permissions',
+        'modify'          : 'Modified',
+        'kind'            : 'Kind',
+        'read'            : 'read',
+        'write'           : 'write',
+        'noaccess'        : 'no access',
+        'and'             : 'and',
+        'unknown'         : 'unknown',
+        'selectall'       : 'Select all files',
+        'selectfiles'     : 'Select file(s)',
+        'selectffile'     : 'Select first file',
+        'selectlfile'     : 'Select last file',
+        'viewlist'        : 'List view',
+        'viewicons'       : 'Icons view',
+        'places'          : 'Places',
+        'calc'            : 'Calculate', 
+        'path'            : 'Path',
+        'aliasfor'        : 'Alias for',
+        'locked'          : 'Locked',
+        'dim'             : 'Dimensions',
+        'files'           : 'Files',
+        'folders'         : 'Folders',
+        'items'           : 'Items',
+        'yes'             : 'yes',
+        'no'              : 'no',
+        'link'            : 'Link',
+        'searcresult'     : 'Search results',  
+        'selected'        : 'selected items',
+        'about'           : 'About',
+        'shortcuts'       : 'Shortcuts',
+        'help'            : 'Help',
+        'webfm'           : 'Web file manager',
+        'ver'             : 'Version',
+        'protocolver'     : 'protocol version',
+        'homepage'        : 'Project home',
+        'docs'            : 'Documentation',
+        'github'          : 'Fork us on Github',
+        'twitter'         : 'Follow us on twitter',
+        'facebook'        : 'Join us on facebook',
+        'team'            : 'Team',
+        'chiefdev'        : 'chief developer',
+        'developer'       : 'developer',
+        'contributor'     : 'contributor',
+        'maintainer'      : 'maintainer',
+        'translator'      : 'translator',
+        'icons'           : 'Icons',
+        'dontforget'      : 'and don\'t forget to take your towel',
+        'shortcutsof'     : 'Shortcuts disabled',
+        'dropFiles'       : 'Drop files here',
+        'or'              : 'or',
+        'selectForUpload' : 'Select files to upload',
+        'moveFiles'       : 'Move files',
+        'copyFiles'       : 'Copy files',
+        'rmFromPlaces'    : 'Remove from places',
+        'aspectRatio'     : 'Aspect ratio',
+        'scale'           : 'Scale',
+        'width'           : 'Width',
+        'height'          : 'Height',
+        'resize'          : 'Resize',
+        'crop'            : 'Crop',
+        'rotate'          : 'Rotate',
+        'rotate-cw'       : 'Rotate 90 degrees CW',
+        'rotate-ccw'      : 'Rotate 90 degrees CCW',
+        'degree'          : 'Degree',
+			'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012
+			'protocol'            : 'Protocol', // added 18.04.2012
+			'host'                : 'Host', // added 18.04.2012
+			'port'                : 'Port', // added 18.04.2012
+			'user'                : 'User', // added 18.04.2012
+			'pass'                : 'Password', // added 18.04.2012
+
+        /********************************** mimetypes **********************************/
+        'kindUnknown'     : 'Unknown',
+        'kindFolder'      : 'Folder',
+        'kindAlias'       : 'Alias',
+        'kindAliasBroken' : 'Broken alias',
+        // applications
+        'kindApp'         : 'Application',
+        'kindPostscript'  : 'Postscript document',
+        'kindMsOffice'    : 'Microsoft Office document',
+        'kindMsWord'      : 'Microsoft Word document',
+        'kindMsExcel'     : 'Microsoft Excel document',
+        'kindMsPP'        : 'Microsoft Powerpoint presentation',
+        'kindOO'          : 'Open Office document',
+        'kindAppFlash'    : 'Flash application',
+        'kindPDF'         : 'Portable Document Format (PDF)',
+        'kindTorrent'     : 'Bittorrent file',
+        'kind7z'          : '7z archive',
+        'kindTAR'         : 'TAR archive',
+        'kindGZIP'        : 'GZIP archive',
+        'kindBZIP'        : 'BZIP archive',
+        'kindXZ'          : 'XZ archive',
+        'kindZIP'         : 'ZIP archive',
+        'kindRAR'         : 'RAR archive',
+        'kindJAR'         : 'Java JAR file',
+        'kindTTF'         : 'True Type font',
+        'kindOTF'         : 'Open Type font',
+        'kindRPM'         : 'RPM package',
+        // texts
+        'kindText'        : 'Text document',
+        'kindTextPlain'   : 'Plain text',
+        'kindPHP'         : 'PHP source',
+        'kindCSS'         : 'Cascading style sheet',
+        'kindHTML'        : 'HTML document',
+        'kindJS'          : 'Javascript source',
+        'kindRTF'         : 'Rich Text Format',
+        'kindC'           : 'C source',
+        'kindCHeader'     : 'C header source',
+        'kindCPP'         : 'C++ source',
+        'kindCPPHeader'   : 'C++ header source',
+        'kindShell'       : 'Unix shell script',
+        'kindPython'      : 'Python source',
+        'kindJava'        : 'Java source',
+        'kindRuby'        : 'Ruby source',
+        'kindPerl'        : 'Perl script',
+        'kindSQL'         : 'SQL source',
+        'kindXML'         : 'XML document',
+        'kindAWK'         : 'AWK source',
+        'kindCSV'         : 'Comma separated values',
+        'kindDOCBOOK'     : 'Docbook XML document',
+        // images
+        'kindImage'       : 'Image',
+        'kindBMP'         : 'BMP image',
+        'kindJPEG'        : 'JPEG image',
+        'kindGIF'         : 'GIF Image',
+        'kindPNG'         : 'PNG Image',
+        'kindTIFF'        : 'TIFF image',
+        'kindTGA'         : 'TGA image',
+        'kindPSD'         : 'Adobe Photoshop image',
+        'kindXBITMAP'     : 'X bitmap image',
+        'kindPXM'         : 'Pixelmator image',
+        // media
+        'kindAudio'       : 'Audio media',
+        'kindAudioMPEG'   : 'MPEG audio',
+        'kindAudioMPEG4'  : 'MPEG-4 audio',
+        'kindAudioMIDI'   : 'MIDI audio',
+        'kindAudioOGG'    : 'Ogg Vorbis audio',
+        'kindAudioWAV'    : 'WAV audio',
+        'AudioPlaylist'   : 'MP3 playlist',
+        'kindVideo'       : 'Video media',
+        'kindVideoDV'     : 'DV movie',
+        'kindVideoMPEG'   : 'MPEG movie',
+        'kindVideoMPEG4'  : 'MPEG-4 movie',
+        'kindVideoAVI'    : 'AVI movie',
+        'kindVideoMOV'    : 'Quick Time movie',
+        'kindVideoWM'     : 'Windows Media movie',
+        'kindVideoFlash'  : 'Flash movie',
+        'kindVideoMKV'    : 'Matroska movie',
+        'kindVideoOGG'    : 'Ogg movie'
+    }
+  };
+}));

+ 487 - 0
src/assets/js/i18n/elfinder.zh_CN.js

@@ -0,0 +1,487 @@
+/**
+ * 简体中文 translation
+ * @author 翻译者 deerchao <deerchao@gmail.com>
+ * @author Andy Hu <andyhu7@yahoo.com.hk>
+ * @author Max Wen<max.wen@qq.com>
+ * @author Kejun Chang <changkejun@hotmail.com>
+ * @version 2017-02-03
+ */
+/**
+ * elFinder translation template
+ * use this file to create new translation
+ * submit new translation via https://github.com/Studio-42/elFinder/issues
+ * or make a pull request
+ */
+
+/**
+ * 简体中文 translation
+ * @author Translator Name <translator@email.tld>
+ * @version 201x-xx-xx
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.zh_CN = {
+		translator : '翻译者 deerchao &lt;deerchao@gmail.com&gt;, Andy Hu &lt;andyhu7@yahoo.com.hk&gt;, Max Wen&lt;max.wen@qq.com&gt;, Kejun Chang &lt;changkejun@hotmail.com&gt;',
+		language   : '简体中文',
+		direction  : 'ltr',
+		dateFormat : 'Y-m-d H:i', // Mar 13, 2012 05:27 PM
+		fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM
+		messages   : {
+
+			/********************************** errors **********************************/
+			'error'                : '错误',
+			'errUnknown'           : '未知的错误.',
+			'errUnknownCmd'        : '未知的命令.',
+			'errJqui'              : '无效的 jQuery UI 配置. 必须包含 Selectable, draggable 以及 droppable 组件.',
+			'errNode'              : 'elFinder 需要能创建 DOM 元素.',
+			'errURL'               : '无效的 elFinder 配置! URL 选项未配置.',
+			'errAccess'            : '访问被拒绝.',
+			'errConnect'           : '不能连接到后端.',
+			'errAbort'             : '连接中止.',
+			'errTimeout'           : '连接超时.',
+			'errNotFound'          : '未找到后端.',
+			'errResponse'          : '无效的后端响应.',
+			'errConf'              : '无效的后端配置.',
+			'errJSON'              : 'PHP JSON 模块未安装.',
+			'errNoVolumes'         : '无可读的卷.',
+			'errCmdParams'         : '无效的参数, 命令: "$1".',
+			'errDataNotJSON'       : '响应不符合 JSON 格式.',
+			'errDataEmpty'         : '响应为空.',
+			'errCmdReq'            : '后端请求需要命令名称.',
+			'errOpen'              : '无法打开 "$1".',
+			'errNotFolder'         : '对象不是文件夹.',
+			'errNotFile'           : '对象不是文件.',
+			'errRead'              : '无法读取 "$1".',
+			'errWrite'             : '无法写入 "$1".',
+			'errPerm'              : '无权限.',
+			'errLocked'            : '"$1" 被锁定,不能重命名, 移动或删除.',
+			'errExists'            : '文件 "$1" 已经存在了.',
+			'errInvName'           : '无效的文件名.',
+			'errFolderNotFound'    : '未找到文件夹.',
+			'errFileNotFound'      : '未找到文件.',
+			'errTrgFolderNotFound' : '未找到目标文件夹 "$1".',
+			'errPopup'             : '浏览器拦截了弹出窗口. 请在选项中允许弹出窗口.',
+			'errMkdir'             : '不能创建文件夹 "$1".',
+			'errMkfile'            : '不能创建文件 "$1".',
+			'errRename'            : '不能重命名 "$1".',
+			'errCopyFrom'          : '不允许从卷 "$1" 复制.',
+			'errCopyTo'            : '不允许向卷 "$1" 复制.',
+			'errMkOutLink'         : '无法创建链接到卷根以外的链接.', // from v2.1 added 03.10.2015
+			'errUpload'            : '上传出错.',  // old name - errUploadCommon
+			'errUploadFile'        : '无法上传 "$1".', // old name - errUpload
+			'errUploadNoFiles'     : '未找到要上传的文件.',
+			'errUploadTotalSize'   : '数据超过了允许的最大大小.', // old name - errMaxSize
+			'errUploadFileSize'    : '文件超过了允许的最大大小.', //  old name - errFileMaxSize
+			'errUploadMime'        : '不允许的文件类型.',
+			'errUploadTransfer'    : '"$1" 传输错误.',
+			'errUploadTemp'        : '无法为上传文件创建临时文件.', // from v2.1 added 26.09.2015
+			'errNotReplace'        : '对象 "$1" 已经在此位置存在, 不能被其他对象替换.', // new
+			'errReplace'           : '无法替换 "$1".',
+			'errSave'              : '无法保存 "$1".',
+			'errCopy'              : '无法复制 "$1".',
+			'errMove'              : '无法移动 "$1".',
+			'errCopyInItself'      : '不能移动 "$1" 到原有位置.',
+			'errRm'                : '无法删除 "$1".',
+			'errRmSrc'             : '不能删除源文件.',
+			'errExtract'           : '无法从 "$1" 提取文件.',
+			'errArchive'           : '无法创建压缩包.',
+			'errArcType'           : '不支持的压缩格式.',
+			'errNoArchive'         : '文件不是压缩包, 或者不支持该压缩格式.',
+			'errCmdNoSupport'      : '后端不支持该命令.',
+			'errReplByChild'       : '文件夹 “$1” 不能被它所包含的项目替换.',
+			'errArcSymlinks'       : '出于安全上的考虑,不允许解压包含符号链接的压缩包.', // edited 24.06.2012
+			'errArcMaxSize'        : '压缩包文件超过最大允许文件大小范围.',
+			'errResize'            : '无法重新调整大小 "$1".',
+			'errResizeDegree'      : '无效的旋转角度.',  // added 7.3.2013
+			'errResizeRotate'      : '无法旋转图片.',  // added 7.3.2013
+			'errResizeSize'        : '无效的图片尺寸.',  // added 7.3.2013
+			'errResizeNoChange'    : '图片尺寸未改变.',  // added 7.3.2013
+			'errUsupportType'      : '不被支持的文件格式.',
+			'errNotUTF8Content'    : '文件 "$1" 不是 UTF-8 格式, 不能编辑.',  // added 9.11.2011
+			'errNetMount'          : '无法装载 "$1".', // added 17.04.2012
+			'errNetMountNoDriver'  : '不支持该协议.',     // added 17.04.2012
+			'errNetMountFailed'    : '装载失败.',         // added 17.04.2012
+			'errNetMountHostReq'   : '需要指定主机.', // added 18.04.2012
+			'errSessionExpires'    : '您的会话由于长时间未活动已过期.',
+			'errCreatingTempDir'   : '无法创建临时目录: "$1"',
+			'errFtpDownloadFile'   : '无法从FTP下载: "$1" 文件',
+			'errFtpUploadFile'     : '无法将文件: "$1" 上传至FTP',
+			'errFtpMkdir'          : '无法在FTP上创建远程目录: "$1"',
+			'errArchiveExec'       : '归档文件时出错: "$1"',
+			'errExtractExec'       : '解压文件时出错: "$1"',
+			'errNetUnMount'        : '无法卸载', // from v2.1 added 30.04.2012
+			'errConvUTF8'          : '未转换至UTF-8', // from v2.1 added 08.04.2014
+			'errFolderUpload'      : '如果您需要上传目录, 请尝试使用Google Chrome.', // from v2.1 added 26.6.2015
+			'errSearchTimeout'     : '搜索 "$1" 超时. 仅显示部分搜索结果.', // from v2.1 added 12.1.2016
+			'errReauthRequire'     : '必需重新授权.', // from v2.1.10 added 24.3.2016
+			'errMaxTargets'        : '可选择项目的最大数量为 $1.', // from v2.1.17 added 17.10.2016
+
+			/******************************* commands names ********************************/
+			'cmdarchive'   : '创建压缩包',
+			'cmdback'      : '后退',
+			'cmdcopy'      : '复制',
+			'cmdcut'       : '剪切',
+			'cmddownload'  : '下载',
+			'cmdduplicate' : '创建复本',
+			'cmdedit'      : '编辑文件',
+			'cmdextract'   : '从压缩包提取文件',
+			'cmdforward'   : '前进',
+			'cmdgetfile'   : '选择文件',
+			'cmdhelp'      : '关于本软件',
+			'cmdhome'      : '首页',
+			'cmdinfo'      : '查看信息',
+			'cmdmkdir'     : '新建文件夹',
+			'cmdmkdirin'   : '至新文件夹', // from v2.1.7 added 19.2.2016
+			'cmdmkfile'    : '新建文本文件',
+			'cmdopen'      : '打开',
+			'cmdpaste'     : '粘贴',
+			'cmdquicklook' : '预览',
+			'cmdreload'    : '刷新',
+			'cmdrename'    : '重命名',
+			'cmdrm'        : '删除',
+			'cmdsearch'    : '查找文件',
+			'cmdup'        : '转到上一级文件夹',
+			'cmdupload'    : '上传文件',
+			'cmdview'      : '查看',
+			'cmdresize'    : '重新调整大小',
+			'cmdsort'      : '排序',
+			'cmdnetmount'  : '装载网络卷', // added 18.04.2012
+			'cmdnetunmount': '卸载', // from v2.1 added 30.04.2012
+			'cmdplaces'    : '添加到收藏夹', // added 28.12.2014
+			'cmdchmod'     : '改变模式', // from v2.1 added 20.6.2015
+			'cmdopendir'   : '打开文件夹', // from v2.1 added 13.1.2016
+			'cmdcolwidth'  : '设置列宽', // from v2.1.13 added 12.06.2016
+			'cmdfullscreen': '全屏显示', // from v2.1.15 added 03.08.2016
+			'cmdmove'      : '移动', // from v2.1.15 added 21.08.2016
+
+			/*********************************** buttons ***********************************/
+			'btnClose'  : '关闭',
+			'btnSave'   : '保存',
+			'btnRm'     : '删除',
+			'btnApply'  : '应用',
+			'btnCancel' : '取消',
+			'btnNo'     : '否',
+			'btnYes'    : '是',
+			'btnMount'  : '装载',  // added 18.04.2012
+			'btnApprove': '至 $1 并确认', // from v2.1 added 26.04.2012
+			'btnUnmount': '卸载', // from v2.1 added 30.04.2012
+			'btnConv'   : '转换', // from v2.1 added 08.04.2014
+			'btnCwd'    : '这里',      // from v2.1 added 22.5.2015
+			'btnVolume' : '卷',    // from v2.1 added 22.5.2015
+			'btnAll'    : '全部',       // from v2.1 added 22.5.2015
+			'btnMime'   : 'MIME类型', // from v2.1 added 22.5.2015
+			'btnFileName':'文件名',  // from v2.1 added 22.5.2015
+			'btnSaveClose': '保存并关闭', // from v2.1 added 12.6.2015
+			'btnBackup' : '备份', // fromv2.1 added 28.11.2015
+
+			/******************************** notifications ********************************/
+			'ntfopen'     : '打开文件夹',
+			'ntffile'     : '打开文件',
+			'ntfreload'   : '刷新文件夹内容',
+			'ntfmkdir'    : '创建文件夹',
+			'ntfmkfile'   : '创建文件',
+			'ntfrm'       : '删除文件',
+			'ntfcopy'     : '复制文件',
+			'ntfmove'     : '移动文件',
+			'ntfprepare'  : '准备复制文件',
+			'ntfrename'   : '重命名文件',
+			'ntfupload'   : '上传文件',
+			'ntfdownload' : '下载文件',
+			'ntfsave'     : '保存文件',
+			'ntfarchive'  : '创建压缩包',
+			'ntfextract'  : '从压缩包提取文件',
+			'ntfsearch'   : '搜索文件',
+			'ntfresize'   : '正在更改尺寸',
+			'ntfsmth'     : '正在忙 >_<',
+			'ntfloadimg'  : '正在加载图片',
+			'ntfnetmount' : '正在装载网络卷', // added 18.04.2012
+			'ntfnetunmount': '卸载网络卷', // from v2.1 added 30.04.2012
+			'ntfdim'      : '获取图像尺寸', // added 20.05.2013
+			'ntfreaddir'  : '正在读取文件夹信息', // from v2.1 added 01.07.2013
+			'ntfurl'      : '正在获取链接地址', // from v2.1 added 11.03.2014
+			'ntfchmod'    : '正在改变文件模式', // from v2.1 added 20.6.2015
+			'ntfpreupload': '正在验证上传文件名', // from v2.1 added 31.11.2015
+			'ntfzipdl'    : '正在创建一个下载文件', // from v2.1.7 added 23.1.2016
+			'ntfparents'  : '正在取得路径信息', // from v2.1.17 added 2.11.2016
+			'ntfchunkmerge': '正在处理上传文件', // from v2.1.17 added 2.11.2016
+
+			/************************************ dates **********************************/
+			'dateUnknown' : '未知',
+			'Today'       : '今天',
+			'Yesterday'   : '昨天',
+			'msJan'       : '一月',
+			'msFeb'       : '二月',
+			'msMar'       : '三月',
+			'msApr'       : '四月',
+			'msMay'       : '五月',
+			'msJun'       : '六月',
+			'msJul'       : '七月',
+			'msAug'       : '八月',
+			'msSep'       : '九月',
+			'msOct'       : '十月',
+			'msNov'       : '十一月',
+			'msDec'       : '十二月',
+			'January'     : '一月',
+			'February'    : '二月',
+			'March'       : '三月',
+			'April'       : '四月',
+			'May'         : '五月',
+			'June'        : '六月',
+			'July'        : '七月',
+			'August'      : '八月',
+			'September'   : '九月',
+			'October'     : '十月',
+			'November'    : '十一月',
+			'December'    : '十二月',
+			'Sunday'      : '星期日',
+			'Monday'      : '星期一',
+			'Tuesday'     : '星期二',
+			'Wednesday'   : '星期三',
+			'Thursday'    : '星期四',
+			'Friday'      : '星期五',
+			'Saturday'    : '星期六',
+			'Sun'         : '周日',
+			'Mon'         : '周一',
+			'Tue'         : '周二',
+			'Wed'         : '周三',
+			'Thu'         : '周四',
+			'Fri'         : '周五',
+			'Sat'         : '周六',
+
+			/******************************** sort variants ********************************/
+			'sortname'          : '按名称',
+			'sortkind'          : '按类型',
+			'sortsize'          : '按大小',
+			'sortdate'          : '按日期',
+			'sortFoldersFirst'  : '文件夹优先',
+			'sortperm'          : '按权限排序', // from v2.1.13 added 13.06.2016
+			'sortmode'          : '按属性排序',       // from v2.1.13 added 13.06.2016
+			'sortowner'         : '按所有者排序',      // from v2.1.13 added 13.06.2016
+			'sortgroup'         : '按组排序',      // from v2.1.13 added 13.06.2016
+			'sortAlsoTreeview'  : '同时刷新树状目录',  // from v2.1.15 added 01.08.2016
+
+			/********************************** new items **********************************/
+			'untitled file.txt' : '新文件.txt', // added 10.11.2015
+			'untitled folder'   : '新文件夹',   // added 10.11.2015
+			'Archive'           : '新压缩包',  // from v2.1 added 10.11.2015
+
+			/********************************** messages **********************************/
+			'confirmReq'      : '请确认',
+			'confirmRm'       : '确定要删除文件吗?<br/>该操作不可撤销!',
+			'confirmRepl'     : '用新的文件替换原有文件?',
+			'confirmConvUTF8' : '文件不是UTF-8格式.<br/>转换为UTF-8吗?<br/>通过在转换后保存,内容变为UTF-8.', // from v2.1 added 08.04.2014
+			'confirmNonUTF8'  : '无法检测到此文件的字符编码.需要暂时转换此文件为UTF-8编码以进行编辑.<br/>请选择此文件的字符编码.', // from v2.1.19 added 28.11.2016
+			'confirmNotSave'  : '文件已被编辑.<br/>如果不保存直接关闭,将丢失编辑内容.', // from v2.1 added 15.7.2015
+			'apllyAll'        : '全部应用',
+			'name'            : '名称',
+			'size'            : '大小',
+			'perms'           : '权限',
+			'modify'          : '修改于',
+			'kind'            : '类别',
+			'read'            : '读取',
+			'write'           : '写入',
+			'noaccess'        : '无权限',
+			'and'             : '和',
+			'unknown'         : '未知',
+			'selectall'       : '选择所有文件',
+			'selectfiles'     : '选择文件',
+			'selectffile'     : '选择第一个文件',
+			'selectlfile'     : '选择最后一个文件',
+			'viewlist'        : '列表视图',
+			'viewicons'       : '图标视图',
+			'places'          : '位置',
+			'calc'            : '计算',
+			'path'            : '路径',
+			'aliasfor'        : '别名',
+			'locked'          : '锁定',
+			'dim'             : '尺寸',
+			'files'           : '文件',
+			'folders'         : '文件夹',
+			'items'           : '项目',
+			'yes'             : '是',
+			'no'              : '否',
+			'link'            : '链接',
+			'searcresult'     : '搜索结果',
+			'selected'        : '选中的项目',
+			'about'           : '关于',
+			'shortcuts'       : '快捷键',
+			'help'            : '帮助',
+			'webfm'           : '网络文件管理器',
+			'ver'             : '版本',
+			'protocolver'     : '协议版本',
+			'homepage'        : '项目主页',
+			'docs'            : '文档',
+			'github'          : '复刻我们的Github',
+			'twitter'         : '关注我们的推特',
+			'facebook'        : '加入我们的脸书',
+			'team'            : '团队',
+			'chiefdev'        : '首席开发',
+			'developer'       : '开发',
+			'contributor'     : '贡献',
+			'maintainer'      : '维护',
+			'translator'      : '翻译',
+			'icons'           : '图标',
+			'dontforget'      : '别忘了带上你擦汗的毛巾',
+			'shortcutsof'     : '快捷键已禁用',
+			'dropFiles'       : '把文件拖到这里',
+			'or'              : '或者',
+			'selectForUpload' : '选择要上传的文件',
+			'moveFiles'       : '移动文件',
+			'copyFiles'       : '复制文件',
+			'rmFromPlaces'    : '从位置中删除',
+			'aspectRatio'     : '保持比例',
+			'scale'           : '高宽比',
+			'width'           : '宽',
+			'height'          : '高',
+			'resize'          : '重新调整大小',
+			'crop'            : '裁切',
+			'rotate'          : '旋转',
+			'rotate-cw'       : '顺时针旋转90度',
+			'rotate-ccw'      : '逆时针旋转90度',
+			'degree'          : '度',
+			'netMountDialogTitle' : '装载网络目录', // added 18.04.2012
+			'protocol'            : '协议', // added 18.04.2012
+			'host'                : '主机', // added 18.04.2012
+			'port'                : '端口', // added 18.04.2012
+			'user'                : '用户', // added 18.04.2012
+			'pass'                : '密码', // added 18.04.2012
+			'confirmUnmount'      : '确实要卸载 $1?',  // from v2.1 added 30.04.2012
+			'dropFilesBrowser': '从浏览器中拖放或粘贴文件', // from v2.1 added 30.05.2012
+			'dropPasteFiles'  : '拖放文件,粘贴网址或剪贴板图像', // from v2.1 added 07.04.2014
+			'encoding'        : '编码', // from v2.1 added 19.12.2014
+			'locale'          : '语言环境',   // from v2.1 added 19.12.2014
+			'searchTarget'    : '目标: $1',                // from v2.1 added 22.5.2015
+			'searchMime'      : '按输入MIME类型搜索', // from v2.1 added 22.5.2015
+			'owner'           : '所有者', // from v2.1 added 20.6.2015
+			'group'           : '组', // from v2.1 added 20.6.2015
+			'other'           : '其他', // from v2.1 added 20.6.2015
+			'execute'         : '执行', // from v2.1 added 20.6.2015
+			'perm'            : '许可', // from v2.1 added 20.6.2015
+			'mode'            : '属性', // from v2.1 added 20.6.2015
+			'emptyFolder'     : '文件夹是空的', // from v2.1.6 added 30.12.2015
+			'emptyFolderDrop' : '文件夹是空的\\A 拖放可追加项目', // from v2.1.6 added 30.12.2015
+			'emptyFolderLTap' : '文件夹是空的\\A 长按可添加项目', // from v2.1.6 added 30.12.2015
+			'quality'         : '品质', // from v2.1.6 added 5.1.2016
+			'autoSync'        : '自动同步',  // from v2.1.6 added 10.1.2016
+			'moveUp'          : '向上移动',  // from v2.1.6 added 18.1.2016
+			'getLink'         : '获取URL链接', // from v2.1.7 added 9.2.2016
+			'selectedItems'   : '已选择项目 ($1)', // from v2.1.7 added 2.19.2016
+			'folderId'        : '目录ID', // from v2.1.10 added 3.25.2016
+			'offlineAccess'   : '允许离线操作', // from v2.1.10 added 3.25.2016
+			'reAuth'          : '重新验证', // from v2.1.10 added 3.25.2016
+			'nowLoading'      : '正在加载...', // from v2.1.12 added 4.26.2016
+			'openMulti'       : '打开多个文件', // from v2.1.12 added 5.14.2016
+			'openMultiConfirm': '您正在尝试打开$1文件.您确定要在浏览器中打开吗?', // from v2.1.12 added 5.14.2016
+			'emptySearch'     : '搜索目标中没有匹配结果', // from v2.1.12 added 5.16.2016
+			'editingFile'     : '正在编辑文件.', // from v2.1.13 added 6.3.2016
+			'hasSelected'     : '已选择 $1 个项目.', // from v2.1.13 added 6.3.2016
+			'hasClipboard'    : '剪贴板里有 $1 个项目.', // from v2.1.13 added 6.3.2016
+			'incSearchOnly'   : '增量搜索仅来自当前视图.', // from v2.1.13 added 6.30.2016
+			'reinstate'       : '恢复', // from v2.1.15 added 3.8.2016
+			'complete'        : '$1 完成', // from v2.1.15 added 21.8.2016
+			'contextmenu'     : '上下文菜单', // from v2.1.15 added 9.9.2016
+			'pageTurning'     : '翻页', // from v2.1.15 added 10.9.2016
+			'volumeRoots'     : '根目录', // from v2.1.16 added 16.9.2016
+			'reset'           : '重置', // from v2.1.16 added 1.10.2016
+			'bgcolor'         : '背景色', // from v2.1.16 added 1.10.2016
+			'colorPicker'     : '颜色选择器', // from v2.1.16 added 1.10.2016
+			'8pxgrid'         : '8px 网格', // from v2.1.16 added 4.10.2016
+			'enabled'         : '活性', // from v2.1.16 added 4.10.2016
+			'disabled'        : '非活性', // from v2.1.16 added 4.10.2016
+			'emptyIncSearch'  : '当前视图下没有匹配结果', // from v2.1.16 added 5.10.2016
+			'textLabel'       : '文本标签', // from v2.1.17 added 13.10.2016
+			'minsLeft'        : '剩余 $1 分钟', // from v2.1.17 added 13.11.2016
+			'openAsEncoding'  : '使用所选编码重新打开', // from v2.1.19 added 2.12.2016
+			'saveAsEncoding'  : '使用所选编码保存', // from v2.1.19 added 2.12.2016
+			'selectFolder'    : '选择目录', // from v2.1.20 added 13.12.2016
+
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : '未知',
+			'kindRoot'        : '根目录', // from v2.1.16 added 16.10.2016
+			'kindFolder'      : '文件夹',
+			'kindAlias'       : '别名',
+			'kindAliasBroken' : '错误的别名',
+			// applications
+			'kindApp'         : '程序',
+			'kindPostscript'  : 'Postscript 文档',
+			'kindMsOffice'    : 'Microsoft Office 文档',
+			'kindMsWord'      : 'Microsoft Word 文档',
+			'kindMsExcel'     : 'Microsoft Excel 文档',
+			'kindMsPP'        : 'Microsoft Powerpoint 演示',
+			'kindOO'          : 'Open Office 文档',
+			'kindAppFlash'    : 'Flash 程序',
+			'kindPDF'         : 'Portable Document Format (PDF)',
+			'kindTorrent'     : 'Bittorrent 文件',
+			'kind7z'          : '7z 压缩包',
+			'kindTAR'         : 'TAR 压缩包',
+			'kindGZIP'        : 'GZIP 压缩包',
+			'kindBZIP'        : 'BZIP 压缩包',
+			'kindXZ'          : 'XZ 压缩包',
+			'kindZIP'         : 'ZIP 压缩包',
+			'kindRAR'         : 'RAR 压缩包',
+			'kindJAR'         : 'Java JAR 文件',
+			'kindTTF'         : 'True Type 字体',
+			'kindOTF'         : 'Open Type 字体',
+			'kindRPM'         : 'RPM 包',
+			// texts
+			'kindText'        : '文本文件',
+			'kindTextPlain'   : '纯文本',
+			'kindPHP'         : 'PHP 源代码',
+			'kindCSS'         : '层叠样式表(CSS)',
+			'kindHTML'        : 'HTML 文档',
+			'kindJS'          : 'Javascript 源代码',
+			'kindRTF'         : '富文本格式(RTF)',
+			'kindC'           : 'C 源代码',
+			'kindCHeader'     : 'C 头文件',
+			'kindCPP'         : 'C++ 源代码',
+			'kindCPPHeader'   : 'C++ 头文件',
+			'kindShell'       : 'Unix 外壳脚本',
+			'kindPython'      : 'Python 源代码',
+			'kindJava'        : 'Java 源代码',
+			'kindRuby'        : 'Ruby 源代码',
+			'kindPerl'        : 'Perl 源代码',
+			'kindSQL'         : 'SQL 脚本',
+			'kindXML'         : 'XML 文档',
+			'kindAWK'         : 'AWK 源代码',
+			'kindCSV'         : '逗号分隔值文件(CSV)',
+			'kindDOCBOOK'     : 'Docbook XML 文档',
+			'kindMarkdown'    : 'Markdown 文本', // added 20.7.2015
+			// images
+			'kindImage'       : '图片',
+			'kindBMP'         : 'BMP 图片',
+			'kindJPEG'        : 'JPEG 图片',
+			'kindGIF'         : 'GIF 图片',
+			'kindPNG'         : 'PNG 图片',
+			'kindTIFF'        : 'TIFF 图片',
+			'kindTGA'         : 'TGA 图片',
+			'kindPSD'         : 'Adobe Photoshop 图片',
+			'kindXBITMAP'     : 'X bitmap 图片',
+			'kindPXM'         : 'Pixelmator 图片',
+			// media
+			'kindAudio'       : '音频',
+			'kindAudioMPEG'   : 'MPEG 音频',
+			'kindAudioMPEG4'  : 'MPEG-4 音频',
+			'kindAudioMIDI'   : 'MIDI 音频',
+			'kindAudioOGG'    : 'Ogg Vorbis 音频',
+			'kindAudioWAV'    : 'WAV 音频',
+			'AudioPlaylist'   : 'MP3 播放列表',
+			'kindVideo'       : '视频',
+			'kindVideoDV'     : 'DV 视频',
+			'kindVideoMPEG'   : 'MPEG 视频',
+			'kindVideoMPEG4'  : 'MPEG-4 视频',
+			'kindVideoAVI'    : 'AVI 视频',
+			'kindVideoMOV'    : 'Quick Time 视频',
+			'kindVideoWM'     : 'Windows Media 视频',
+			'kindVideoFlash'  : 'Flash 视频',
+			'kindVideoMKV'    : 'Matroska 视频',
+			'kindVideoOGG'    : 'Ogg 视频'
+		}
+	};
+}));

+ 520 - 0
src/assets/js/i18n/elfinder.zh_TW.js

@@ -0,0 +1,520 @@
+/**
+ * Traditional Chinese translation
+ * @author Yuwei Chuang <ywchuang.tw@gmail.com>
+ * @author Danny Lin <danny0838@gmail.com>
+ * @author TCC <john987john987@gmail.com>
+ * @version 2017-09-28
+ */
+(function(root, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['elfinder'], factory);
+	} else if (typeof exports !== 'undefined') {
+		module.exports = factory(require('elfinder'));
+	} else {
+		factory(root.elFinder);
+	}
+}(this, function(elFinder) {
+	elFinder.prototype.i18.zh_TW = {
+		translator : 'Yuwei Chuang &lt;ywchuang.tw@gmail.com&gt;, Danny Lin &lt;danny0838@gmail.com&gt;, TCC &lt;john987john987@gmail.com&gt;',
+		language   : '正體中文',
+		direction  : 'ltr',
+		dateFormat : 'Y/m/d H:i', // Mar 13, 2012 05:27 PM
+		fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM
+		nonameDateFormat : 'ymd-His', // to apply if upload file is noname: 120513172700
+		messages   : {
+
+			/********************************** errors **********************************/
+			'error'                : '錯誤',
+			'errUnknown'           : '未知的錯誤.',
+			'errUnknownCmd'        : '未知的指令.',
+			'errJqui'              : '無效的 jQuery UI 設定. 必須包含 Selectable, draggable 以及 droppable 元件.',
+			'errNode'              : 'elFinder 需要能建立 DOM 元素.',
+			'errURL'               : '無效的 elFinder 設定! 尚未設定 URL 選項.',
+			'errAccess'            : '拒絕存取.',
+			'errConnect'           : '無法連線至後端.',
+			'errAbort'             : '連線中斷.',
+			'errTimeout'           : '連線逾時.',
+			'errNotFound'          : '後端不存在.',
+			'errResponse'          : '無效的後端回復.',
+			'errConf'              : '無效的後端設定.',
+			'errJSON'              : '未安裝 PHP JSON 模組.',
+			'errNoVolumes'         : '無可讀取的 volumes.',
+			'errCmdParams'         : '無效的參數, 指令: "$1".',
+			'errDataNotJSON'       : '資料不是 JSON 格式.',
+			'errDataEmpty'         : '沒有資料.',
+			'errCmdReq'            : '後端請求需要命令名稱.',
+			'errOpen'              : '無法開啟 "$1".',
+			'errNotFolder'         : '非資料夾.',
+			'errNotFile'           : '非檔案.',
+			'errRead'              : '無法讀取 "$1".',
+			'errWrite'             : '無法寫入 "$1".',
+			'errPerm'              : '無權限.',
+			'errLocked'            : '"$1" 被鎖定,不能重新命名, 移動或删除.',
+			'errExists'            : '檔案 "$1" 已經存在了.',
+			'errInvName'           : '無效的檔案名稱.',
+			'errInvDirname'        : '無效的資料夾名稱',  // from v2.1.24 added 12.4.2017
+			'errFolderNotFound'    : '未找到資料夾.',
+			'errFileNotFound'      : '未找到檔案.',
+			'errTrgFolderNotFound' : '未找到目標資料夾 "$1".',
+			'errPopup'             : '連覽器攔截了彈跳視窗. 請在瀏覽器選項允許彈跳視窗.',
+			'errMkdir'             : '不能建立資料夾 "$1".',
+			'errMkfile'            : '不能建立檔案 "$1".',
+			'errRename'            : '不能重新命名 "$1".',
+			'errCopyFrom'          : '不允許從磁碟 "$1" 複製.',
+			'errCopyTo'            : '不允複製到磁碟 "$1".',
+			'errMkOutLink'         : '無法建立連結到磁碟根目錄外面.', // from v2.1 added 03.10.2015
+			'errUpload'            : '上傳錯誤.',  // old name - errUploadCommon
+			'errUploadFile'        : '無法上傳 "$1".', // old name - errUpload
+			'errUploadNoFiles'     : '未找到要上傳的檔案.',
+			'errUploadTotalSize'   : '資料超過了最大允許大小.', // old name - errMaxSize
+			'errUploadFileSize'    : '檔案超過了最大允許大小.', //  old name - errFileMaxSize
+			'errUploadMime'        : '不允許的檔案類型.',
+			'errUploadTransfer'    : '"$1" 傳輸錯誤.',
+			'errUploadTemp'        : '無法建立暫存檔以供上傳.', // from v2.1 added 26.09.2015
+			'errNotReplace'        : '"$1" 已經存在此位置, 不能被其他的替换.', // new
+			'errReplace'           : '無法替换 "$1".',
+			'errSave'              : '無法保存 "$1".',
+			'errCopy'              : '無法複製 "$1".',
+			'errMove'              : '無法移動 "$1".',
+			'errCopyInItself'      : '無法移動 "$1" 到原有位置.',
+			'errRm'                : '無法删除 "$1".',
+			'errTrash'             : '無法丟入垃圾桶', // from v2.1.24 added 30.4.2017
+			'errRmSrc'             : '無法删除來源檔案.',
+			'errExtract'           : '無法從 "$1" 解壓縮檔案.',
+			'errArchive'           : '無法建立壓縮膽.',
+			'errArcType'           : '不支援的壓縮格式.',
+			'errNoArchive'         : '檔案不是壓縮檔, 或者不支援該壓缩格式.',
+			'errCmdNoSupport'      : '後端不支援該指令.',
+			'errReplByChild'       : '資料夾 “$1” 不能被它所包含的檔案(資料夾)替换.',
+			'errArcSymlinks'       : '由於安全考量,拒絕解壓縮符號連結或含有不允許檔名的檔案.', // edited 24.06.2012
+			'errArcMaxSize'        : '待壓縮檔案的大小超出上限.',
+			'errResize'            : '無法重新調整大小 "$1".',
+			'errResizeDegree'      : '無效的旋轉角度.',  // added 7.3.2013
+			'errResizeRotate'      : '無法旋轉圖片.',  // added 7.3.2013
+			'errResizeSize'        : '無效的圖片大小.',  // added 7.3.2013
+			'errResizeNoChange'    : '圖片大小未更改.',  // added 7.3.2013
+			'errUsupportType'      : '不支援的檔案格式.',
+			'errNotUTF8Content'    : '檔案 "$1" 不是 UTF-8 格式, 不能編輯.',  // added 9.11.2011
+			'errNetMount'          : '無法掛載 "$1".', // added 17.04.2012
+			'errNetMountNoDriver'  : '不支援該通訊協議.',     // added 17.04.2012
+			'errNetMountFailed'    : '掛載失敗.',         // added 17.04.2012
+			'errNetMountHostReq'   : '需要指定主機位置.', // added 18.04.2012
+			'errSessionExpires'    : '由於過久無活動, session 已過期.',
+			'errCreatingTempDir'   : '無法建立暫時目錄: "$1"',
+			'errFtpDownloadFile'   : '無法從 FTP 下載檔案: "$1"',
+			'errFtpUploadFile'     : '無法上傳檔案到 FTP: "$1"',
+			'errFtpMkdir'          : '無法在 FTP 建立遠端目錄: "$1"',
+			'errArchiveExec'       : '壓縮檔案時發生錯誤: "$1"',
+			'errExtractExec'       : '解壓縮檔案時發生錯誤: "$1"',
+			'errNetUnMount'        : '無法卸載', // from v2.1 added 30.04.2012
+			'errConvUTF8'          : '無法轉換為 UTF-8', // from v2.1 added 08.04.2014
+			'errFolderUpload'      : '如要上傳這個資料夾, 請嘗試 Google Chrome.', // from v2.1 added 26.6.2015
+			'errSearchTimeout'     : '搜尋 "$1" 逾時. 只列出部分搜尋結果.', // from v2.1 added 12.1.2016
+			'errReauthRequire'     : '需要重新驗證權限.', // from v2.1.10 added 24.3.2016
+			'errMaxTargets'        : '最多可選擇 $1 個物件.', // from v2.1.17 added 17.10.2016
+			'errRestore'           : '無法從垃圾桶恢復。 無法識別恢復目的地。', // from v2.1.24 added 3.5.2017
+			'errEditorNotFound'    : '編輯器找不到此文件類型。', // from v2.1.25 added 23.5.2017
+			'errServerError'       : '服務器發生錯誤。', // from v2.1.25 added 16.6.2017
+			'errEmpty'             : '無法清空"$1"文件夾', // from v2.1.25 added 22.6.2017
+
+			/******************************* commands names ********************************/
+			'cmdarchive'   : '建立壓縮檔',
+			'cmdback'      : '後退',
+			'cmdcopy'      : '複製',
+			'cmdcut'       : '剪下',
+			'cmddownload'  : '下載',
+			'cmdduplicate' : '建立副本',
+			'cmdedit'      : '編輯檔案',
+			'cmdextract'   : '從壓縮檔解壓縮',
+			'cmdforward'   : '前進',
+			'cmdgetfile'   : '選擇檔案',
+			'cmdhelp'      : '關於本軟體',
+			'cmdhome'      : '首頁',
+			'cmdinfo'      : '查看關於',
+			'cmdmkdir'     : '建立資料夾',
+			'cmdmkdirin'   : '移入新資料夾', // from v2.1.7 added 19.2.2016
+			'cmdmkfile'    : '建立文字檔',
+			'cmdopen'      : '開啟',
+			'cmdpaste'     : '貼上',
+			'cmdquicklook' : '預覽',
+			'cmdreload'    : '更新',
+			'cmdrename'    : '重新命名',
+			'cmdrm'        : '删除',
+			'cmdtrash'     : '丟到垃圾桶', //from v2.1.24 added 29.4.2017
+			'cmdrestore'   : '恢復', //from v2.1.24 added 3.5.2017
+			'cmdsearch'    : '搜尋檔案',
+			'cmdup'        : '移到上一層資料夾',
+			'cmdupload'    : '上傳檔案',
+			'cmdview'      : '檢視',
+			'cmdresize'    : '調整大小及旋轉',
+			'cmdsort'      : '排序',
+			'cmdnetmount'  : '掛載網路磁碟', // added 18.04.2012
+			'cmdnetunmount': '卸載', // from v2.1 added 30.04.2012
+			'cmdplaces'    : '加到"位置"', // added 28.12.2014
+			'cmdchmod'     : '更改權限', // from v2.1 added 20.6.2015
+			'cmdopendir'   : '開啟資料夾', // from v2.1 added 13.1.2016
+			'cmdcolwidth'  : '重設欄寬', // from v2.1.13 added 12.06.2016
+			'cmdfullscreen': '全螢幕', // from v2.1.15 added 03.08.2016
+			'cmdmove'      : '移動', // from v2.1.15 added 21.08.2016
+			'cmdempty'     : '清空資料夾', // from v2.1.25 added 22.06.2017
+			'cmdundo'      : '上一步', // from v2.1.27 added 31.07.2017
+			'cmdredo'      : '下一步', // from v2.1.27 added 31.07.2017
+			'cmdpreference': '優先權', // from v2.1.27 added 03.08.2017
+			'cmdselectall' : '全選', // from v2.1.28 added 15.08.2017
+			'cmdselectnone': '取消選取', // from v2.1.28 added 15.08.2017
+			'cmdselectinvert': '反向選取', // from v2.1.28 added 15.08.2017
+
+			/*********************************** buttons ***********************************/
+			'btnClose'  : '關閉',
+			'btnSave'   : '儲存',
+			'btnRm'     : '删除',
+			'btnApply'  : '使用',
+			'btnCancel' : '取消',
+			'btnNo'     : '否',
+			'btnYes'    : '是',
+			'btnMount'  : '掛載',  // added 18.04.2012
+			'btnApprove': '移到 $1 並批准', // from v2.1 added 26.04.2012
+			'btnUnmount': '卸載', // from v2.1 added 30.04.2012
+			'btnConv'   : '轉換', // from v2.1 added 08.04.2014
+			'btnCwd'    : '這裡',      // from v2.1 added 22.5.2015
+			'btnVolume' : '磁碟',    // from v2.1 added 22.5.2015
+			'btnAll'    : '全部',       // from v2.1 added 22.5.2015
+			'btnMime'   : 'MIME 類型', // from v2.1 added 22.5.2015
+			'btnFileName':'檔名',  // from v2.1 added 22.5.2015
+			'btnSaveClose': '儲存並關閉', // from v2.1 added 12.6.2015
+			'btnBackup' : '備份', // fromv2.1 added 28.11.2015
+			'btnRename'    : '重新命名',      // from v2.1.24 added 6.4.2017
+			'btnRenameAll' : '重新命名全部', // from v2.1.24 added 6.4.2017
+			'btnPrevious' : '上一頁 ($1/$2)', // from v2.1.24 added 11.5.2017
+			'btnNext'     : '下一頁 ($1/$2)', // from v2.1.24 added 11.5.2017
+			'btnSaveAs'   : '另存新檔', // from v2.1.25 added 24.5.2017
+
+			/******************************** notifications ********************************/
+			'ntfopen'     : '開啟資料夾',
+			'ntffile'     : '開啟檔案',
+			'ntfreload'   : '更新資料夾内容',
+			'ntfmkdir'    : '建立資料夾',
+			'ntfmkfile'   : '建立檔案',
+			'ntfrm'       : '删除檔案',
+			'ntfcopy'     : '複製檔案',
+			'ntfmove'     : '移動檔案',
+			'ntfprepare'  : '準備複製檔案',
+			'ntfrename'   : '重新命名檔案',
+			'ntfupload'   : '上傳檔案',
+			'ntfdownload' : '下載檔案',
+			'ntfsave'     : '儲存檔案',
+			'ntfarchive'  : '建立壓縮檔',
+			'ntfextract'  : '從壓縮檔解壓縮',
+			'ntfsearch'   : '搜尋檔案',
+			'ntfresize'   : '正在更改圖片大小',
+			'ntfsmth'     : '正在忙 >_<',
+			'ntfloadimg'  : '正在讀取圖片',
+			'ntfnetmount' : '正在掛載網路磁碟', // added 18.04.2012
+			'ntfnetunmount': '正在卸載網路磁碟', // from v2.1 added 30.04.2012
+			'ntfdim'      : '取得圖片大小', // added 20.05.2013
+			'ntfreaddir'  : '正在讀取資料夾資訊', // from v2.1 added 01.07.2013
+			'ntfurl'      : '正在取得連結 URL', // from v2.1 added 11.03.2014
+			'ntfchmod'    : '更改檔案模式', // from v2.1 added 20.6.2015
+			'ntfpreupload': '正在驗證上傳檔案名稱', // from v2.1 added 31.11.2015
+			'ntfzipdl'    : '正在建立縮檔以供下載', // from v2.1.7 added 23.1.2016
+			'ntfparents'  : '正在取得路徑資訊', // from v2.1.17 added 2.11.2016
+			'ntfchunkmerge': '正在處理上傳的檔案', // from v2.1.17 added 2.11.2016
+			'ntftrash'    : '正在丟到垃圾桶', // from v2.1.24 added 2.5.2017
+			'ntfrestore'  : '正從垃圾桶恢復', // from v2.1.24 added 3.5.2017
+			'ntfchkdir'   : '正在檢查目標資料夾', // from v2.1.24 added 3.5.2017
+			'ntfundo'     : '正在撤銷上一步動作', // from v2.1.27 added 31.07.2017
+			'ntfredo'     : '正在重做上一步動作', // from v2.1.27 added 31.07.2017
+
+			/*********************************** volumes *********************************/
+			'volume_Trash' : '垃圾桶', //from v2.1.24 added 29.4.2017
+
+			/************************************ dates **********************************/
+			'dateUnknown' : '未知',
+			'Today'       : '今天',
+			'Yesterday'   : '昨天',
+			'msJan'       : '一月',
+			'msFeb'       : '二月',
+			'msMar'       : '三月',
+			'msApr'       : '四月',
+			'msMay'       : '五月',
+			'msJun'       : '六月',
+			'msJul'       : '七月',
+			'msAug'       : '八月',
+			'msSep'       : '九月',
+			'msOct'       : '十月',
+			'msNov'       : '十一月',
+			'msDec'       : '十二月',
+			'January'     : '一月',
+			'February'    : '二月',
+			'March'       : '三月',
+			'April'       : '四月',
+			'May'         : '五月',
+			'June'        : '六月',
+			'July'        : '七月',
+			'August'      : '八月',
+			'September'   : '九月',
+			'October'     : '十月',
+			'November'    : '十一月',
+			'December'    : '十二月',
+			'Sunday'      : '星期日',
+			'Monday'      : '星期一',
+			'Tuesday'     : '星期二',
+			'Wednesday'   : '星期三',
+			'Thursday'    : '星期四',
+			'Friday'      : '星期五',
+			'Saturday'    : '星期六',
+			'Sun'         : '周日',
+			'Mon'         : '周一',
+			'Tue'         : '周二',
+			'Wed'         : '周三',
+			'Thu'         : '周四',
+			'Fri'         : '周五',
+			'Sat'         : '周六',
+
+			/******************************** sort variants ********************************/
+			'sortname'          : '按名稱',
+			'sortkind'          : '按類型',
+			'sortsize'          : '按大小',
+			'sortdate'          : '按日期',
+			'sortFoldersFirst'  : '資料夾置前',
+			'sortperm'          : '按權限', // from v2.1.13 added 13.06.2016
+			'sortmode'          : '按模式',       // from v2.1.13 added 13.06.2016
+			'sortowner'         : '按擁有者',      // from v2.1.13 added 13.06.2016
+			'sortgroup'         : '按群組',      // from v2.1.13 added 13.06.2016
+			'sortAlsoTreeview'  : '也套用於樹狀圖',  // from v2.1.15 added 01.08.2016
+
+			/********************************** new items **********************************/
+			'untitled file.txt' : '新檔案.txt', // added 10.11.2015
+			'untitled folder'   : '新資料夾',   // added 10.11.2015
+			'Archive'           : '新壓縮檔',  // from v2.1 added 10.11.2015
+
+			/********************************** messages **********************************/
+			'confirmReq'      : '請確認',
+			'confirmRm'       : '確定要删除檔案嗎?<br/>此操作無法回復!',
+			'confirmRepl'     : '用新檔案取代原檔案?',
+			'confirmRest'     : '用垃圾桶中的項目替換現有項目?', // fromv2.1.24 added 5.5.2017
+			'confirmConvUTF8' : '不是 UTF-8 檔案<br/>轉換為 UTF-8 嗎?<br/>轉換後儲存會把內容變成 UTF-8.', // from v2.1 added 08.04.2014
+			'confirmNonUTF8'  : '無法偵測此檔案的字元編碼, 須暫時轉換為 UTF-8 以供編輯.<br/>請選擇此檔案的字元編碼.', // from v2.1.19 added 28.11.2016
+			'confirmNotSave'  : '此檔案已修改.<br/>若未儲存將遺失目前的工作.', // from v2.1 added 15.7.2015
+			'confirmTrash'    : '確定要將項目丟到垃圾桶嗎?', //from v2.1.24 added 29.4.2017
+			'apllyAll'        : '全部套用',
+			'name'            : '名稱',
+			'size'            : '大小',
+			'perms'           : '權限',
+			'modify'          : '修改於',
+			'kind'            : '類別',
+			'read'            : '讀取',
+			'write'           : '寫入',
+			'noaccess'        : '無權限',
+			'and'             : '和',
+			'unknown'         : '未知',
+			'selectall'       : '選擇所有檔案',
+			'selectfiles'     : '選擇檔案',
+			'selectffile'     : '選擇第一個檔案',
+			'selectlfile'     : '選擇最後一個檔案',
+			'viewlist'        : '列表檢視',
+			'viewicons'       : '圖示檢視',
+			'places'          : '位置',
+			'calc'            : '計算',
+			'path'            : '路徑',
+			'aliasfor'        : '别名',
+			'locked'          : '鎖定',
+			'dim'             : '圖片大小',
+			'files'           : '檔案',
+			'folders'         : '資料夾',
+			'items'           : '項目',
+			'yes'             : '是',
+			'no'              : '否',
+			'link'            : '連結',
+			'searcresult'     : '搜尋结果',
+			'selected'        : '選取的項目',
+			'about'           : '關於',
+			'shortcuts'       : '快捷鍵',
+			'help'            : '協助',
+			'webfm'           : '網路檔案總管',
+			'ver'             : '版本',
+			'protocolver'     : '協定版本',
+			'homepage'        : '首頁',
+			'docs'            : '文件',
+			'github'          : '在 Github 建立我們的分支',
+			'twitter'         : '在 Twitter 追蹤我們',
+			'facebook'        : '在 Facebook 加入我們',
+			'team'            : '團隊',
+			'chiefdev'        : '主要開發者',
+			'developer'       : '開發者',
+			'contributor'     : '貢獻者',
+			'maintainer'      : '維護者',
+			'translator'      : '翻譯者',
+			'icons'           : '圖示',
+			'dontforget'      : '别忘了帶上你擦汗的毛巾',
+			'shortcutsof'     : '快捷鍵已停用',
+			'dropFiles'       : '把檔案拖到此處',
+			'or'              : '或',
+			'selectForUpload' : '選擇要上傳的檔案',
+			'moveFiles'       : '移動檔案',
+			'copyFiles'       : '複製檔案',
+			'restoreFiles'    : '恢復項目', // from v2.1.24 added 5.5.2017
+			'rmFromPlaces'    : '從"位置"中删除',
+			'aspectRatio'     : '保持比例',
+			'scale'           : '寬高比',
+			'width'           : '寬',
+			'height'          : '高',
+			'resize'          : '重新調整大小',
+			'crop'            : '裁切',
+			'rotate'          : '旋轉',
+			'rotate-cw'       : '順時針旋轉90度',
+			'rotate-ccw'      : '逆時針旋轉90度',
+			'degree'          : '度',
+			'netMountDialogTitle' : '掛載網路磁碟', // added 18.04.2012
+			'protocol'            : '通訊協定', // added 18.04.2012
+			'host'                : '主機', // added 18.04.2012
+			'port'                : '連接埠', // added 18.04.2012
+			'user'                : '使用者', // added 18.04.2012
+			'pass'                : '密碼', // added 18.04.2012
+			'confirmUnmount'      : '確定要卸載 $1?',  // from v2.1 added 30.04.2012
+			'dropFilesBrowser': '從瀏覽器拖放或貼上檔案', // from v2.1 added 30.05.2012
+			'dropPasteFiles'  : '拖放檔案或從剪貼簿貼上 URL 或圖片至此', // from v2.1 added 07.04.2014
+			'encoding'        : '編碼', // from v2.1 added 19.12.2014
+			'locale'          : '語系',   // from v2.1 added 19.12.2014
+			'searchTarget'    : '目標: $1',                // from v2.1 added 22.5.2015
+			'searchMime'      : '根據輸入的 MIME 類型搜尋', // from v2.1 added 22.5.2015
+			'owner'           : '擁有者', // from v2.1 added 20.6.2015
+			'group'           : '群組', // from v2.1 added 20.6.2015
+			'other'           : '其他', // from v2.1 added 20.6.2015
+			'execute'         : '執行', // from v2.1 added 20.6.2015
+			'perm'            : '權限', // from v2.1 added 20.6.2015
+			'mode'            : '模式', // from v2.1 added 20.6.2015
+			'emptyFolder'     : '資料夾是空的', // from v2.1.6 added 30.12.2015
+			'emptyFolderDrop' : '資料夾是空的\\A 拖曳以增加項目', // from v2.1.6 added 30.12.2015
+			'emptyFolderLTap' : '資料夾是空的\\A 長按以增加項目', // from v2.1.6 added 30.12.2015
+			'quality'         : '品質', // from v2.1.6 added 5.1.2016
+			'autoSync'        : '自動同步',  // from v2.1.6 added 10.1.2016
+			'moveUp'          : '上移',  // from v2.1.6 added 18.1.2016
+			'getLink'         : '取得 URL 連結', // from v2.1.7 added 9.2.2016
+			'selectedItems'   : '選取的項目 ($1)', // from v2.1.7 added 2.19.2016
+			'folderId'        : '資料夾 ID', // from v2.1.10 added 3.25.2016
+			'offlineAccess'   : '允許離線存取', // from v2.1.10 added 3.25.2016
+			'reAuth'          : '重新驗證權限', // from v2.1.10 added 3.25.2016
+			'nowLoading'      : '正在載入...', // from v2.1.12 added 4.26.2016
+			'openMulti'       : '開啟多個檔案', // from v2.1.12 added 5.14.2016
+			'openMultiConfirm': '確定要在瀏覽器開啟 $1 個檔案嗎?', // from v2.1.12 added 5.14.2016
+			'emptySearch'     : '在搜尋目標中的搜尋結果是空的.', // from v2.1.12 added 5.16.2016
+			'editingFile'     : '正在編輯檔案.', // from v2.1.13 added 6.3.2016
+			'hasSelected'     : '己選取 $1 個項目.', // from v2.1.13 added 6.3.2016
+			'hasClipboard'    : '剪貼簿裡有 $1 個項目.', // from v2.1.13 added 6.3.2016
+			'incSearchOnly'   : '增量搜尋只來自目前視圖.', // from v2.1.13 added 6.30.2016
+			'reinstate'       : '恢復原狀', // from v2.1.15 added 3.8.2016
+			'complete'        : '$1完成', // from v2.1.15 added 21.8.2016
+			'contextmenu'     : '情境選單', // from v2.1.15 added 9.9.2016
+			'pageTurning'     : '正在換頁', // from v2.1.15 added 10.9.2016
+			'volumeRoots'     : '磁碟根目錄', // from v2.1.16 added 16.9.2016
+			'reset'           : '重設', // from v2.1.16 added 1.10.2016
+			'bgcolor'         : '背景頻色', // from v2.1.16 added 1.10.2016
+			'colorPicker'     : '顏色選擇器', // from v2.1.16 added 1.10.2016
+			'8pxgrid'         : '8px 網格', // from v2.1.16 added 4.10.2016
+			'enabled'         : '啟用', // from v2.1.16 added 4.10.2016
+			'disabled'        : '停用', // from v2.1.16 added 4.10.2016
+			'emptyIncSearch'  : '目前視圖的搜尋結果是空的.\\A按 [Enter] 擴大搜尋目標.', // from v2.1.16 added 5.10.2016
+			'emptyLetSearch'  : '目前視圖中的第一個字母的搜索結果是空的。', // from v2.1.23 added 24.3.2017
+			'textLabel'       : '文字標示', // from v2.1.17 added 13.10.2016
+			'minsLeft'        : '剩下 $1 分鐘', // from v2.1.17 added 13.11.2016
+			'openAsEncoding'  : '以選擇的編碼重新開啟', // from v2.1.19 added 2.12.2016
+			'saveAsEncoding'  : '以選擇的編碼儲存', // from v2.1.19 added 2.12.2016
+			'selectFolder'    : '選擇資料夾', // from v2.1.20 added 13.12.2016
+			'firstLetterSearch': '首字母搜索', // from v2.1.23 added 24.3.2017
+			'presets'         : '預置', // from v2.1.25 added 26.5.2017
+			'tooManyToTrash'  : '有太多項目,所以不能丟入垃圾桶。', // from v2.1.25 added 9.6.2017
+			'TextArea'        : '文字區域', // from v2.1.25 added 14.6.2017
+			'folderToEmpty'   : '$1" 資料夾是空的', // from v2.1.25 added 22.6.2017
+			'filderIsEmpty'   : '"$1" 資料夾中沒有任何項目', // from v2.1.25 added 22.6.2017
+			'preference'      : '偏好', // from v2.1.26 added 28.6.2017
+			'language'        : '語言設置', // from v2.1.26 added 28.6.2017
+			'clearBrowserData': '初始化保存在此瀏覽器中的設置', // from v2.1.26 added 28.6.2017
+			'toolbarPref'     : '工具欄設置', // from v2.1.27 added 2.8.2017
+			'charsLeft'       : '... 剩下 $1 個字元',  // from v2.1.29 added 30.8.2017
+
+			/********************************** mimetypes **********************************/
+			'kindUnknown'     : '未知',
+			'kindRoot'        : '磁碟根目錄', // from v2.1.16 added 16.10.2016
+			'kindFolder'      : '資料夾',
+			'kindSelects'     : '選擇', // from v2.1.29 added 29.8.2017
+			'kindAlias'       : '别名',
+			'kindAliasBroken' : '毀損的别名',
+			// applications
+			'kindApp'         : '應用程式',
+			'kindPostscript'  : 'Postscript 文件',
+			'kindMsOffice'    : 'Microsoft Office 文件',
+			'kindMsWord'      : 'Microsoft Word 文件',
+			'kindMsExcel'     : 'Microsoft Excel 文件',
+			'kindMsPP'        : 'Microsoft Powerpoint 簡報',
+			'kindOO'          : 'Open Office 文件',
+			'kindAppFlash'    : 'Flash 應用程式',
+			'kindPDF'         : '可攜式文件格式(PDF)',
+			'kindTorrent'     : 'Bittorrent 檔案',
+			'kind7z'          : '7z 壓縮檔',
+			'kindTAR'         : 'TAR 壓縮檔',
+			'kindGZIP'        : 'GZIP 壓縮檔',
+			'kindBZIP'        : 'BZIP 壓縮檔',
+			'kindXZ'          : 'XZ 壓縮檔',
+			'kindZIP'         : 'ZIP 壓縮檔',
+			'kindRAR'         : 'RAR 壓縮檔',
+			'kindJAR'         : 'Java JAR 檔案',
+			'kindTTF'         : 'True Type 字體',
+			'kindOTF'         : 'Open Type 字體',
+			'kindRPM'         : 'RPM 封裝檔',
+			// texts
+			'kindText'        : '文字檔案',
+			'kindTextPlain'   : '純文字',
+			'kindPHP'         : 'PHP 原始碼',
+			'kindCSS'         : '階層樣式表(CSS)',
+			'kindHTML'        : 'HTML 文件',
+			'kindJS'          : 'Javascript 原始碼',
+			'kindRTF'         : '富文本(RTF)',
+			'kindC'           : 'C 原始碼',
+			'kindCHeader'     : 'C 標頭原始碼',
+			'kindCPP'         : 'C++ 原始碼',
+			'kindCPPHeader'   : 'C++ 標頭原始碼',
+			'kindShell'       : 'Unix Shell 脚本',
+			'kindPython'      : 'Python 原始碼',
+			'kindJava'        : 'Java 原始碼',
+			'kindRuby'        : 'Ruby 原始碼',
+			'kindPerl'        : 'Perl 原始碼',
+			'kindSQL'         : 'SQL 原始碼',
+			'kindXML'         : 'XML 文件',
+			'kindAWK'         : 'AWK 原始碼',
+			'kindCSV'         : '逗號分隔值(CSV)',
+			'kindDOCBOOK'     : 'Docbook XML 文件',
+			'kindMarkdown'    : 'Markdown 文本', // added 20.7.2015
+			// images
+			'kindImage'       : '圖片',
+			'kindBMP'         : 'BMP 圖片',
+			'kindJPEG'        : 'JPEG 圖片',
+			'kindGIF'         : 'GIF 圖片',
+			'kindPNG'         : 'PNG 圖片',
+			'kindTIFF'        : 'TIFF 圖片',
+			'kindTGA'         : 'TGA 圖片',
+			'kindPSD'         : 'Adobe Photoshop 圖片',
+			'kindXBITMAP'     : 'X bitmap 圖片',
+			'kindPXM'         : 'Pixelmator 圖片',
+			// media
+			'kindAudio'       : '音訊',
+			'kindAudioMPEG'   : 'MPEG 音訊',
+			'kindAudioMPEG4'  : 'MPEG-4 音訊',
+			'kindAudioMIDI'   : 'MIDI 音訊',
+			'kindAudioOGG'    : 'Ogg Vorbis 音訊',
+			'kindAudioWAV'    : 'WAV 音訊',
+			'AudioPlaylist'   : 'MP3 播放清單',
+			'kindVideo'       : '影片',
+			'kindVideoDV'     : 'DV 影片',
+			'kindVideoMPEG'   : 'MPEG 影片',
+			'kindVideoMPEG4'  : 'MPEG-4 影片',
+			'kindVideoAVI'    : 'AVI 影片',
+			'kindVideoMOV'    : 'Quick Time 影片',
+			'kindVideoWM'     : 'Windows Media 影片',
+			'kindVideoFlash'  : 'Flash 影片',
+			'kindVideoMKV'    : 'Matroska 影片',
+			'kindVideoOGG'    : 'Ogg 影片'
+		}
+	};
+}));
+

+ 10 - 0
src/assets/js/i18n/help/cs.html.js

@@ -0,0 +1,10 @@
+<h2>Tipy na obsluhu</h2>
+<p>Obsluha na uživatelském rozhraní je podobná standardnímu správci souborů operačního systému. Drag and Drop však není možné používat s mobilními prohlížeči. </p>
+<ul>
+	<li>Kliknutím pravým tlačítkem nebo dlouhým klepnutím zobrazíte kontextové menu.</li>
+	<li>Přetáhněte do stromu složek nebo do aktuálního pracovního prostoru a přetáhněte / kopírujte položky.</li>
+	<li>Výběr položky v pracovním prostoru můžete rozšířit pomocí kláves Shift nebo Alt (Možnost).</li>
+	<li>Přemístěte soubory a složky do cílové složky nebo do pracovního prostoru.</li>
+	<li>Dialog předávání může přijímat data schránky nebo seznamy adres URL a přitáhnout a odejít z jiných prohlížečů nebo správců souborů.</li>
+	<li>Zatažením spusťte stisknutím klávesy Alt (Možnost) přetáhněte do vnějšího prohlížeče. Tato funkce se převezme pomocí prohlížeče Google Chrome.</li>
+</ul>

+ 10 - 0
src/assets/js/i18n/help/en.html.js

@@ -0,0 +1,10 @@
+<h2>Operation Tips</h2>
+<p>Operation on the UI is similar to operating system&#39;s standard file manager. However, Drag and Drop is not possible with mobile browsers. </p>
+<ul>
+	<li>Right click or long tap to show the context menu.</li>
+	<li>Drag and drop into the folder tree or the current workspace to move/copy items.</li>
+	<li>Item selection in the workspace can be extended selection with Shift or Alt (Option) key.</li>
+	<li>Drag and Drop to the destination folder or workspace to upload files and folders.</li>
+	<li>The upload dialog can accept paste/drop clipboard data or URL lists and Drag and Drop from other browser or file managers etc.</li>
+	<li>Drag start with pressing Alt(Option) key to drag out to outside browser. It will became download operation with Google Chrome.</li>
+</ul>

+ 10 - 0
src/assets/js/i18n/help/jp.html.js

@@ -0,0 +1,10 @@
+<h2>操作のヒント</h2>
+<p>UIの操作は、オペレーティングシステムの標準ファイルマネージャにほぼ準拠しています。ただし、モバイルブラウザではドラッグ&ドロップはできません。</p>
+<ul>
+	<li>右クリックまたはロングタップでコンテキストメニューを表示します。</li>
+	<li>アイテムを移動/コピーするには、フォルダツリーまたはワークスペースにドラッグ&ドロップします。</li>
+	<li>ワークスペース内のアイテムの選択は、ShiftキーまたはAltキー(Optionキー)で選択範囲を拡張できます。</li>
+	<li>コピー先のフォルダまたはワークスペースにドラッグアンドドロップして、ファイルとフォルダをアップロードします。</li>
+	<li>アップロードダイアログでは、クリップボードのデータやURLリストのペースト/ドロップ、他のブラウザやファイルマネージャからのドラッグ&ドロップなどを受け入れることができます。</li>
+	<li>Altキー(Optionキー)を押しながらドラッグすると、ブラウザの外にドラッグできます。Google Chromeでダウンロード操作になります。</li>
+</ul>

+ 10 - 0
src/assets/js/i18n/help/pl.html.js

@@ -0,0 +1,10 @@
+<h2>Wskazówki Obsługi</h2>
+<p>Działanie w interfejsie użytkownika jest podobne do standardowego menedżera plików systemu operacyjnego. Jednak Przeciąganie i Upuszczanie nie jest możliwe w przeglądarkach mobilnych. </p>
+<ul>
+	<li>Kliknij prawym przyciskiem myszy lub dłużej, aby wyświetlić menu kontekstowe.</li>
+	<li>Przeciągnij i upuść w drzewie folderów lub bieżącym obszarze roboczym, aby przenieść/kopiować elementy.</li>
+	<li>Wybór elementu w obszarze roboczym można rozszerzyć wybór z klawiszem Shift lub Alt(Opcja).</li>
+	<li>Przeciągnij i Upuść do folderu docelowego lub obszaru roboczego, aby przesłać pliki i foldery.</li>
+	<li>W oknie dialogowym przesyłania można zaakceptować wklejanie/upuszczanie danych schowka lub listy adresów URL, i Przeciągnij i Upuść z innych przeglądarek lub menedżerów plików, itp.</li>
+	<li>Rozpocznij Przeciąganie naciskając Alt (Opcja), aby przeciągnąć na zewnątrz przeglądarki. Stanie się operacją pobierania z Google Chrome. </li>
+</ul>

+ 10 - 0
src/assets/js/i18n/help/sk.html.js

@@ -0,0 +1,10 @@
+<h2>Tipy na obsluhu</h2>
+<p>Obsluha na používateľskom rozhraní je podobná štandardnému správcovi súborov operačného systému. Drag and Drop však nie je možné používať s mobilnými prehliadačmi. </p>
+<ul>
+	<li>Kliknutím pravým tlačidlom alebo dlhým klepnutím zobrazíte kontextové menu.</li>
+	<li>Presuňte myšou do stromu priečinkov alebo do aktuálneho pracovného priestoru a presuňte / kopírujte položky.</li>
+	<li>Výber položky v pracovnom priestore môžete rozšíriť pomocou klávesov Shift alebo Alt (Možnosť).</li>
+	<li>Premiestnite súbory a priečinky do cieľovej zložky alebo do pracovného priestoru.</li>
+	<li>Dialog odovzdávania môže prijímať dáta schránky alebo zoznamy adries URL a pritiahnuť a odísť z iných prehliadačov alebo správcov súborov.</li>
+	<li>Potiahnutím spustite stlačením klávesu Alt (Možnosť) pretiahnite do vonkajšieho prehliadača. Táto funkcia sa prevezme pomocou prehliadača Google Chrome.</li>
+</ul>

+ 414 - 0
src/assets/js/proxy/elFinderSupportVer1.js

@@ -0,0 +1,414 @@
+"use strict";
+/**
+ * elFinder transport to support old protocol.
+ *
+ * @example
+ * $('selector').elfinder({
+ *   .... 
+ *   transport : new elFinderSupportVer1()
+ * })
+ *
+ * @author Dmitry (dio) Levashov
+ **/
+window.elFinderSupportVer1 = function(upload) {
+	var self = this,
+		dateObj, today, yesterday,
+		getDateString = function(date) {
+			return date.replace('Today', today).replace('Yesterday', yesterday);
+		};
+	
+	dateObj = new Date();
+	today = dateObj.getFullYear() + '/' + (dateObj.getMonth() + 1) + '/' + dateObj.getDate();
+	dateObj = new Date(Date.now() - 86400000);
+	yesterday = dateObj.getFullYear() + '/' + (dateObj.getMonth() + 1) + '/' + dateObj.getDate();
+	
+	this.upload = upload || 'auto';
+	
+	this.init = function(fm) {
+		this.fm = fm;
+		this.fm.parseUploadData = function(text) {
+			var data;
+
+			if (!$.trim(text)) {
+				return {error : ['errResponse', 'errDataEmpty']};
+			}
+
+			try {
+				data = JSON.parse(text);
+			} catch (e) {
+				return {error : ['errResponse', 'errDataNotJSON']}
+			}
+			
+			return self.normalize('upload', data);
+		}
+	}
+	
+	
+	this.send = function(opts) {
+		var self = this,
+			fm = this.fm,
+			dfrd = $.Deferred(),
+			cmd = opts.data.cmd,
+			args = [],
+			_opts = {},
+			data,
+			xhr;
+			
+		dfrd.abort = function() {
+			if (xhr.state() == 'pending') {
+				xhr.quiet = true;
+				xhr.abort();
+			}
+		}
+		
+		switch (cmd) {
+			case 'open':
+				opts.data.tree = 1;
+				break;
+			case 'parents':
+			case 'tree':
+				return dfrd.resolve({tree : []});
+				break;
+			case 'get':
+				opts.data.cmd = 'read';
+				opts.data.current = fm.file(opts.data.target).phash;
+				break;
+			case 'put':
+				opts.data.cmd = 'edit';
+				opts.data.current = fm.file(opts.data.target).phash;
+				break;
+			case 'archive':
+			case 'rm':
+				opts.data.current = fm.file(opts.data.targets[0]).phash;
+				break;
+			case 'extract':
+			case 'rename':
+			case 'resize':
+				opts.data.current = fm.file(opts.data.target).phash;
+				break;
+			case 'duplicate':
+				_opts = $.extend(true, {}, opts);
+
+				$.each(opts.data.targets, function(i, hash) {
+					$.ajax(Object.assign(_opts, {data : {cmd : 'duplicate', target : hash, current : fm.file(hash).phash}}))
+						.fail(function(error) {
+							fm.error(fm.res('error', 'connect'));
+						})
+						.done(function(data) {
+							data = self.normalize('duplicate', data);
+							if (data.error) {
+								fm.error(data.error);
+							} else if (data.added) {
+								fm.trigger('add', {added : data.added});
+							}
+						})
+				});
+				return dfrd.resolve({})
+				break;
+				
+			case 'mkdir':
+			case 'mkfile':
+				opts.data.current = opts.data.target;
+				break;
+			case 'paste':
+				opts.data.current = opts.data.dst;
+				if (! opts.data.tree) {
+					$.each(opts.data.targets, function(i, h) {
+						if (fm.file(h) && fm.file(h).mime === 'directory') {
+							opts.data.tree = '1';
+							return false;
+						}
+					});
+				}
+				break;
+				
+			case 'size':
+				return dfrd.resolve({error : fm.res('error', 'cmdsupport')});
+				break;
+			case 'search':
+				return dfrd.resolve({error : fm.res('error', 'cmdsupport')});
+				break;
+				
+			case 'file':
+				opts.data.cmd = 'open';
+				opts.data.current = fm.file(opts.data.target).phash;
+				break;
+		}
+		// cmd = opts.data.cmd
+		
+		xhr = $.ajax(opts)
+			.fail(function(error) {
+				dfrd.reject(error)
+			})
+			.done(function(raw) {
+				data = self.normalize(cmd, raw);
+				dfrd.resolve(data);
+			})
+			
+		return dfrd;
+	}
+	
+	// fix old connectors errors messages as possible
+	// this.errors = {
+	// 	'Unknown command'                                  : 'Unknown command.',
+	// 	'Invalid backend configuration'                    : 'Invalid backend configuration.',
+	// 	'Access denied'                                    : 'Access denied.',
+	// 	'PHP JSON module not installed'                    : 'PHP JSON module not installed.',
+	// 	'File not found'                                   : 'File not found.',
+	// 	'Invalid name'                                     : 'Invalid file name.',
+	// 	'File or folder with the same name already exists' : 'File named "$1" already exists in this location.',
+	// 	'Not allowed file type'                            : 'Not allowed file type.',
+	// 	'File exceeds the maximum allowed filesize'        : 'File exceeds maximum allowed size.',
+	// 	'Unable to copy into itself'                       : 'Unable to copy "$1" into itself.',
+	// 	'Unable to create archive'                         : 'Unable to create archive.',
+	// 	'Unable to extract files from archive'             : 'Unable to extract files from "$1".'
+	// }
+	
+	this.normalize = function(cmd, data) {
+		var self = this,
+			fm   = this.fm,
+			files = {}, 
+			filter = function(file) { return file && file.hash && file.name && file.mime ? file : null; },
+			getDirs = function(items) {
+				return $.map(items, function(i) {
+					return i && i.mime && i.mime === 'directory'? i : null;
+				});
+			},
+			getTreeDiff = function(files) {
+				var dirs = getDirs(files);
+				treeDiff = fm.diff(dirs, null, ['date', 'ts']);
+				if (treeDiff.added.length) {
+					treeDiff.added = getDirs(treeDiff.added);
+				}
+				if (treeDiff.changed.length) {
+					treeDiff.changed = getDirs(treeDiff.changed);
+				}
+				if (treeDiff.removed.length) {
+					var removed = [];
+					$.each(treeDiff.removed, function(i, h) {
+						var item;
+						if ((item = fm.file(h)) && item.mime === 'directory') {
+							removed.push(h);
+						}
+					});
+					treeDiff.removed = removed;
+				}
+				return treeDiff;
+			},
+			phash, diff, isCwd, treeDiff;
+
+		if ((cmd == 'tmb' || cmd == 'get')) {
+			return data;
+		}
+		
+		// if (data.error) {
+		// 	$.each(data.error, function(i, msg) {
+		// 		if (self.errors[msg]) {
+		// 			data.error[i] = self.errors[msg];
+		// 		}
+		// 	});
+		// }
+		
+		if (cmd == 'upload' && data.error && data.cwd) {
+			data.warning = Object.assign({}, data.error);
+			data.error = false;
+		}
+		
+		
+		if (data.error) {
+			return data;
+		}
+		
+		if (cmd == 'put') {
+
+			phash = fm.file(data.target.hash).phash;
+			return {changed : [this.normalizeFile(data.target, phash)]};
+		}
+		
+		phash = data.cwd.hash;
+
+		isCwd = (phash == fm.cwd().hash);
+		
+		if (data.tree) {
+			$.each(this.normalizeTree(data.tree), function(i, file) {
+				files[file.hash] = file;
+			});
+		}
+		
+		$.each(data.cdc||[], function(i, file) {
+			var hash = file.hash,
+				mcts;
+
+			if (files[hash]) {
+				if (file.date) {
+					mcts = Date.parse(getDateString(file.date));
+					if (mcts && !isNaN(mcts)) {
+						files[hash].ts = Math.floor(mcts / 1000);
+					} else {
+						files[hash].date = file.date || fm.formatDate(file);
+					}
+				}
+				files[hash].locked = file.hash == phash ? true : file.rm === void(0) ? false : !file.rm;
+			} else {
+				files[hash] = self.normalizeFile(file, phash, data.tmb);
+			}
+		});
+		
+		if (!data.tree) {
+			$.each(fm.files(), function(hash, file) {
+				if (!files[hash] && file.phash != phash && file.mime == 'directory') {
+					files[hash] = file;
+				}
+			});
+		}
+		
+		if (cmd == 'open') {
+			return {
+					cwd     : files[phash] || this.normalizeFile(data.cwd),
+					files   : $.map(files, function(f) { return f }),
+					options : self.normalizeOptions(data),
+					init    : !!data.params,
+					debug   : data.debug
+				};
+		}
+		
+		if (isCwd) {
+			diff = fm.diff($.map(files, filter));
+		} else {
+			if (data.tree) {
+				diff = getTreeDiff(files);
+			} else {
+				diff = {
+					added   : [],
+					removed : [],
+					changed : []
+				};
+			}
+			if (cmd === 'paste') {
+				diff.sync = true;
+			}
+		}
+		
+		return Object.assign({
+			current : data.cwd.hash,
+			error   : data.error,
+			warning : data.warning,
+			options : {tmb : !!data.tmb}
+		}, diff);
+		
+	}
+	
+	/**
+	 * Convert old api tree into plain array of dirs
+	 *
+	 * @param  Object  root dir
+	 * @return Array
+	 */
+	this.normalizeTree = function(root) {
+		var self     = this,
+			result   = [],
+			traverse = function(dirs, phash) {
+				var i, dir;
+				
+				for (i = 0; i < dirs.length; i++) {
+					dir = dirs[i];
+					result.push(self.normalizeFile(dir, phash))
+					dir.dirs.length && traverse(dir.dirs, dir.hash);
+				}
+			};
+
+		traverse([root]);
+
+		return result;
+	}
+	
+	/**
+	 * Convert file info from old api format into new one
+	 *
+	 * @param  Object  file
+	 * @param  String  parent dir hash
+	 * @return Object
+	 */
+	this.normalizeFile = function(file, phash, tmb) {
+		var mime = file.mime || 'directory',
+			size = mime == 'directory' && !file.linkTo ? 0 : file.size,
+			mcts = file.date? Date.parse(getDateString(file.date)) : void 0,
+			info = {
+				url    : file.url,
+				hash   : file.hash,
+				phash  : phash,
+				name   : file.name,
+				mime   : mime,
+				ts     : file.ts,
+				size   : size,
+				read   : file.read,
+				write  : file.write,
+				locked : !phash ? true : file.rm === void(0) ? false : !file.rm
+			};
+		
+		if (! info.ts) {
+			if (mcts && !isNaN(mcts)) {
+				info.ts = Math.floor(mcts / 1000);
+			} else {
+				info.date = file.date || this.fm.formatDate(file);
+			}
+		}
+		
+		if (file.mime == 'application/x-empty' || file.mime == 'inode/x-empty') {
+			info.mime = 'text/plain';
+		}
+		
+		if (file.linkTo) {
+			info.alias = file.linkTo;
+		}
+
+		if (file.linkTo) {
+			info.linkTo = file.linkTo;
+		}
+		
+		if (file.tmb) {
+			info.tmb = file.tmb;
+		} else if (info.mime.indexOf('image/') === 0 && tmb) {
+			info.tmb = 1;
+			
+		}
+
+		if (file.dirs && file.dirs.length) {
+			info.dirs = true;
+		}
+		if (file.dim) {
+			info.dim = file.dim;
+		}
+		if (file.resize) {
+			info.resize = file.resize;
+		}
+		return info;
+	}
+	
+	this.normalizeOptions = function(data) {
+		var opts = {
+				path          : data.cwd.rel,
+				disabled      : $.merge((data.disabled || []), [ 'search', 'netmount', 'zipdl' ]),
+				tmb           : !!data.tmb,
+				copyOverwrite : true
+			};
+		
+		if (data.params) {
+			opts.api      = 1;
+			opts.url      = data.params.url;
+			opts.archivers = {
+				create  : data.params.archives || [],
+				extract : data.params.extract || []
+			}
+		}
+		
+		if (opts.path.indexOf('/') !== -1) {
+			opts.separator = '/';
+		} else if (opts.path.indexOf('\\') !== -1) {
+			opts.separator = '\\';
+		}
+		return opts;
+	}
+	
+	
+};

二進制
src/assets/sounds/rm.wav


+ 22 - 0
src/elfinder.html

@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>elFinder 2.1.x source version with PHP connector</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2"/>
+
+    <!-- Require JS (REQUIRED) -->
+    <!-- Rename "main.default.js" to "main.js" and edit it if you need configure elFInder options or any things -->
+    <script data-main="{assetUrl}/main.default.js"
+            src="//cdnjs.cloudflare.com/ajax/libs/require.js/2.3.5/require.min.js"></script>
+    <script>
+        define('elFinderConfig', {config});
+    </script>
+</head>
+<body>
+
+<!-- Element where elFinder will be created (REQUIRED) -->
+<div id="elfinder"></div>
+
+</body>
+</html>

+ 2 - 0
src/php/.tmp/.htaccess

@@ -0,0 +1,2 @@
+order deny,allow
+deny from all

+ 23 - 0
src/php/MySQLStorage.sql

@@ -0,0 +1,23 @@
+DROP TABLE IF EXISTS `elfinder_file`;
+CREATE TABLE IF NOT EXISTS `elfinder_file` (
+  `id`        int(7) unsigned NOT NULL auto_increment,
+  `parent_id` int(7) unsigned NOT NULL,
+  `name`      varchar(256) NOT NULL,
+  `content`   longblob NOT NULL,
+  `size`      int(10) unsigned NOT NULL default '0',
+  `mtime`     int(10) unsigned NOT NULL default '0',
+  `mime`      varchar(256) NOT NULL default 'unknown',
+  `read`      enum('1', '0') NOT NULL default '1',
+  `write`     enum('1', '0') NOT NULL default '1',
+  `locked`    enum('1', '0') NOT NULL default '0',
+  `hidden`    enum('1', '0') NOT NULL default '0',
+  `width`     int(5) NOT NULL default '0',
+  `height`    int(5) NOT NULL default '0',
+  PRIMARY KEY (`id`),
+  UNIQUE KEY  `parent_name` (`parent_id`, `name`),
+  KEY         `parent_id`   (`parent_id`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
+
+INSERT INTO `elfinder_file`
+(`id`, `parent_id`, `name`,     `content`, `size`, `mtime`, `mime`,      `read`, `write`, `locked`, `hidden`, `width`, `height`) VALUES 
+('1',  '0',         'DATABASE', '',        '0',    '0',     'directory', '1',    '1',     '0',      '0',      '0',     '0');

+ 50 - 0
src/php/autoload.php

@@ -0,0 +1,50 @@
+<?php
+
+define('ELFINDER_PHP_ROOT_PATH', dirname(__FILE__));
+
+function elFinderAutoloader($name) {
+	$map = array(
+		'elFinder' => ELFINDER_PHP_ROOT_PATH . '/elFinder.class.php',
+		'elFinderConnector' => ELFINDER_PHP_ROOT_PATH . '/elFinderConnector.class.php',
+		'elFinderLibGdBmp' => ELFINDER_PHP_ROOT_PATH . '/libs/GdBmp.php',
+		'elFinderPlugin' => ELFINDER_PHP_ROOT_PATH . '/elFinderPlugin.php',
+		'elFinderPluginAutoResize' => ELFINDER_PHP_ROOT_PATH . '/plugins/AutoResize/plugin.php',
+		'elFinderPluginAutoRotate' => ELFINDER_PHP_ROOT_PATH . '/plugins/AutoRotate/plugin.php',
+		'elFinderPluginNormalizer' => ELFINDER_PHP_ROOT_PATH . '/plugins/Normalizer/plugin.php',
+		'elFinderPluginSanitizer' => ELFINDER_PHP_ROOT_PATH . '/plugins/Sanitizer/plugin.php',
+		'elFinderPluginWatermark' => ELFINDER_PHP_ROOT_PATH . '/plugins/Watermark/plugin.php',
+		'elFinderSession' => ELFINDER_PHP_ROOT_PATH . '/elFinderSession.php',
+		'elFinderSessionInterface' => ELFINDER_PHP_ROOT_PATH . '/elFinderSessionInterface.php',
+		'elFinderVolumeDriver' => ELFINDER_PHP_ROOT_PATH . '/elFinderVolumeDriver.class.php',
+		'elFinderVolumeDropbox2' => ELFINDER_PHP_ROOT_PATH . '/elFinderVolumeDropbox2.class.php',
+		'elFinderVolumeFTP' => ELFINDER_PHP_ROOT_PATH . '/elFinderVolumeFTP.class.php',
+		'elFinderVolumeFlysystemGoogleDriveCache' => ELFINDER_PHP_ROOT_PATH . '/elFinderFlysystemGoogleDriveNetmount.php',
+		'elFinderVolumeFlysystemGoogleDriveNetmount' => ELFINDER_PHP_ROOT_PATH . '/elFinderFlysystemGoogleDriveNetmount.php',
+		'elFinderVolumeGoogleDrive' => ELFINDER_PHP_ROOT_PATH . '/elFinderVolumeGoogleDrive.class.php',
+		'elFinderVolumeGroup' => ELFINDER_PHP_ROOT_PATH . '/elFinderVolumeGroup.class.php',
+		'elFinderVolumeLocalFileSystem' => ELFINDER_PHP_ROOT_PATH . '/elFinderVolumeLocalFileSystem.class.php',
+		'elFinderVolumeMySQL' => ELFINDER_PHP_ROOT_PATH . '/elFinderVolumeMySQL.class.php',
+		'elFinderVolumeTrash' => ELFINDER_PHP_ROOT_PATH . '/elFinderVolumeTrash.class.php',
+	);
+	if (isset($map[$name])) {
+		return include_once($map[$name]);
+	}
+	$prefix = substr($name, 0, 14);
+	if (substr($prefix, 0, 8) === 'elFinder') {
+		if ($prefix === 'elFinderVolume') {
+			$file = ELFINDER_PHP_ROOT_PATH . '/' . $name . '.class.php';
+			return (is_file($file) && include_once($file));
+		} else if ($prefix === 'elFinderPlugin') {
+			$file = ELFINDER_PHP_ROOT_PATH . '/plugins/' . substr($name, 14) . '/plugin.php';
+			return (is_file($file) && include_once($file));
+		}
+	}
+	return false;
+}
+
+if (version_compare(PHP_VERSION, '5.3', '<')) {
+	spl_autoload_register('elFinderAutoloader');
+} else {
+	spl_autoload_register('elFinderAutoloader', true, true);
+}
+

+ 128 - 0
src/php/connector.minimal.php-dist

@@ -0,0 +1,128 @@
+<?php
+
+error_reporting(0); // Set E_ALL for debuging
+
+// load composer autoload before load elFinder autoload If you need composer
+//require './vendor/autoload.php';
+
+// elFinder autoload
+require './autoload.php';
+// ===============================================
+
+// Enable FTP connector netmount
+elFinder::$netDrivers['ftp'] = 'FTP';
+// ===============================================
+
+// // Required for Dropbox network mount
+// // Installation by composer
+// // `composer require kunalvarma05/dropbox-php-sdk`
+// // Enable network mount
+// elFinder::$netDrivers['dropbox2'] = 'Dropbox2';
+// // Dropbox2 Netmount driver need next two settings. You can get at https://www.dropbox.com/developers/apps
+// // AND reuire regist redirect url to "YOUR_CONNECTOR_URL?cmd=netmount&protocol=dropbox2&host=1"
+// define('ELFINDER_DROPBOX_APPKEY',    '');
+// define('ELFINDER_DROPBOX_APPSECRET', '');
+// ===============================================
+
+// // Required for Google Drive network mount
+// // Installation by composer
+// // `composer require google/apiclient:^2.0`
+// // Enable network mount
+// elFinder::$netDrivers['googledrive'] = 'GoogleDrive';
+// // GoogleDrive Netmount driver need next two settings. You can get at https://console.developers.google.com
+// // AND reuire regist redirect url to "YOUR_CONNECTOR_URL?cmd=netmount&protocol=googledrive&host=1"
+// define('ELFINDER_GOOGLEDRIVE_CLIENTID',     '');
+// define('ELFINDER_GOOGLEDRIVE_CLIENTSECRET', '');
+// // Required case of without composer
+// define('ELFINDER_GOOGLEDRIVE_GOOGLEAPICLIENT', '/path/to/google-api-php-client/vendor/autoload.php');
+// ===============================================
+
+// // Required for Google Drive network mount with Flysystem
+// // Installation by composer
+// // `composer require nao-pon/flysystem-google-drive:~1.1 nao-pon/elfinder-flysystem-driver-ext`
+// // Enable network mount
+// elFinder::$netDrivers['googledrive'] = 'FlysystemGoogleDriveNetmount';
+// // GoogleDrive Netmount driver need next two settings. You can get at https://console.developers.google.com
+// // AND reuire regist redirect url to "YOUR_CONNECTOR_URL?cmd=netmount&protocol=googledrive&host=1"
+// define('ELFINDER_GOOGLEDRIVE_CLIENTID',     '');
+// define('ELFINDER_GOOGLEDRIVE_CLIENTSECRET', '');
+// ===============================================
+
+// // Required for One Drive network mount
+// //  * cURL PHP extension required
+// //  * HTTP server PATH_INFO supports required
+// // Enable network mount
+// elFinder::$netDrivers['onedrive'] = 'OneDrive';
+// // GoogleDrive Netmount driver need next two settings. You can get at https://dev.onedrive.com
+// // AND reuire regist redirect url to "YOUR_CONNECTOR_URL/netmount/onedrive/1"
+// define('ELFINDER_ONEDRIVE_CLIENTID',     '');
+// define('ELFINDER_ONEDRIVE_CLIENTSECRET', '');
+// ===============================================
+
+// // Required for Box network mount
+// //  * cURL PHP extension required
+// // Enable network mount
+// elFinder::$netDrivers['box'] = 'Box';
+// // Box Netmount driver need next two settings. You can get at https://developer.box.com
+// // AND reuire regist redirect url to "YOUR_CONNECTOR_URL"
+// define('ELFINDER_BOX_CLIENTID',     '');
+// define('ELFINDER_BOX_CLIENTSECRET', '');
+// ===============================================
+
+/**
+ * Simple function to demonstrate how to control file access using "accessControl" callback.
+ * This method will disable accessing files/folders starting from '.' (dot)
+ *
+ * @param  string    $attr    attribute name (read|write|locked|hidden)
+ * @param  string    $path    absolute file path
+ * @param  string    $data    value of volume option `accessControlData`
+ * @param  object    $volume  elFinder volume driver object
+ * @param  bool|null $isDir   path is directory (true: directory, false: file, null: unknown)
+ * @param  string    $relpath file path relative to volume root directory started with directory separator
+ * @return bool|null
+ **/
+function access($attr, $path, $data, $volume, $isDir, $relpath) {
+	$basename = basename($path);
+	return $basename[0] === '.'                  // if file/folder begins with '.' (dot)
+			 && strlen($relpath) !== 1           // but with out volume root
+		? !($attr == 'read' || $attr == 'write') // set read+write to false, other (locked+hidden) set to true
+		:  null;                                 // else elFinder decide it itself
+}
+
+
+// Documentation for connector options:
+// https://github.com/Studio-42/elFinder/wiki/Connector-configuration-options
+$opts = array(
+	// 'debug' => true,
+	'roots' => array(
+		// Items volume
+		array(
+			'driver'        => 'LocalFileSystem',           // driver for accessing file system (REQUIRED)
+			'path'          => '../files/',                 // path to files (REQUIRED)
+			'URL'           => dirname($_SERVER['PHP_SELF']) . '/../files/', // URL to files (REQUIRED)
+			'trashHash'     => 't1_Lw',                     // elFinder's hash of trash folder
+			'winHashFix'    => DIRECTORY_SEPARATOR !== '/', // to make hash same to Linux one on windows too
+			'uploadDeny'    => array('all'),                // All Mimetypes not allowed to upload
+			'uploadAllow'   => array('image', 'text/plain'),// Mimetype `image` and `text/plain` allowed to upload
+			'uploadOrder'   => array('deny', 'allow'),      // allowed Mimetype `image` and `text/plain` only
+			'accessControl' => 'access'                     // disable and hide dot starting files (OPTIONAL)
+		),
+		// Trash volume
+		array(
+			'id'            => '1',
+			'driver'        => 'Trash',
+			'path'          => '../files/.trash/',
+			'tmbURL'        => dirname($_SERVER['PHP_SELF']) . '/../files/.trash/.tmb/',
+			'winHashFix'    => DIRECTORY_SEPARATOR !== '/', // to make hash same to Linux one on windows too
+			'uploadDeny'    => array('all'),                // Recomend the same settings as the original volume that uses the trash
+			'uploadAllow'   => array('image', 'text/plain'),// Same as above
+			'uploadOrder'   => array('deny', 'allow'),      // Same as above
+			'accessControl' => 'access',                    // Same as above
+		)
+	)
+);
+
+// run elFinder
+$connector = new elFinderConnector(new elFinder($opts));
+$connector->run();
+

+ 4008 - 0
src/php/elFinder.class.php

@@ -0,0 +1,4008 @@
+<?php
+
+/**
+ * elFinder - file manager for web.
+ * Core class.
+ *
+ * @package elfinder
+ * @author Dmitry (dio) Levashov
+ * @author Troex Nevelin
+ * @author Alexey Sukhotin
+ **/
+class elFinder {
+	
+	const ERROR_UNKNOWN           = 'errUnknown';
+	const ERROR_UNKNOWN_CMD       = 'errUnknownCmd';
+	const ERROR_CONF              = 'errConf';
+	const ERROR_CONF_NO_JSON      = 'errJSON';
+	const ERROR_CONF_NO_VOL       = 'errNoVolumes';
+	const ERROR_INV_PARAMS        = 'errCmdParams';
+	const ERROR_OPEN              = 'errOpen';
+	const ERROR_DIR_NOT_FOUND     = 'errFolderNotFound';
+const ERROR_FILE_NOT_FOUND    = 'errFileNotFound';
+const ERROR_TRGDIR_NOT_FOUND  = 'errTrgFolderNotFound';
+	const ERROR_NOT_DIR           = 'errNotFolder';
+	const ERROR_NOT_FILE          = 'errNotFile';
+	const ERROR_PERM_DENIED       = 'errPerm';
+const ERROR_LOCKED            = 'errLocked';
+const ERROR_EXISTS            = 'errExists';
+const ERROR_INVALID_NAME      = 'errInvName';
+const ERROR_INVALID_DIRNAME   = 'errInvDirname';
+	const ERROR_MKDIR             = 'errMkdir';
+	const ERROR_MKFILE            = 'errMkfile';
+	const ERROR_RENAME            = 'errRename';
+	const ERROR_COPY              = 'errCopy';
+	const ERROR_MOVE              = 'errMove';
+	const ERROR_COPY_FROM         = 'errCopyFrom';
+	const ERROR_COPY_TO           = 'errCopyTo';
+	const ERROR_COPY_ITSELF       = 'errCopyInItself';
+const ERROR_REPLACE           = 'errReplace';
+const ERROR_RM                = 'errRm';
+const ERROR_RM_SRC            = 'errRmSrc';
+const ERROR_MKOUTLINK         = 'errMkOutLink';
+const ERROR_UPLOAD            = 'errUpload';
+const ERROR_UPLOAD_FILE       = 'errUploadFile';
+const ERROR_UPLOAD_NO_FILES   = 'errUploadNoFiles';
+const ERROR_UPLOAD_TOTAL_SIZE = 'errUploadTotalSize';
+const ERROR_UPLOAD_FILE_SIZE  = 'errUploadFileSize';
+const ERROR_UPLOAD_FILE_MIME  = 'errUploadMime';
+const ERROR_UPLOAD_TRANSFER   = 'errUploadTransfer';
+const ERROR_UPLOAD_TEMP       = 'errUploadTemp';
+	const ERROR_ACCESS_DENIED     = 'errAccess';
+const ERROR_NOT_REPLACE       = 'errNotReplace';
+	const ERROR_SAVE              = 'errSave';
+	const ERROR_EXTRACT           = 'errExtract';
+	
+	// Errors messages
+	const ERROR_ARCHIVE           = 'errArchive';
+	const ERROR_NOT_ARCHIVE       = 'errNoArchive';
+	const ERROR_ARCHIVE_TYPE      = 'errArcType';
+	const ERROR_ARC_SYMLINKS      = 'errArcSymlinks';
+	const ERROR_ARC_MAXSIZE       = 'errArcMaxSize';
+	const ERROR_RESIZE            = 'errResize';
+	const ERROR_RESIZESIZE        = 'errResizeSize';
+	const ERROR_UNSUPPORT_TYPE    = 'errUsupportType';
+		const ERROR_CONV_UTF8         = 'errConvUTF8';     // 'File not found.'
+		const ERROR_NOT_UTF8_CONTENT  = 'errNotUTF8Content'; // 'Target folder "$1" not found.'
+	const ERROR_NETMOUNT          = 'errNetMount';
+	const ERROR_NETUNMOUNT        = 'errNetUnMount';
+	const ERROR_NETMOUNT_NO_DRIVER = 'errNetMountNoDriver';
+		const ERROR_NETMOUNT_FAILED   = 'errNetMountFailed';        // '"$1" is locked and can not be renamed, moved or removed.'
+		const ERROR_SESSION_EXPIRES   = 'errSessionExpires';        // 'File named "$1" already exists.'
+		const ERROR_CREATING_TEMP_DIR = 'errCreatingTempDir';       // 'Invalid file name.'
+		const ERROR_FTP_DOWNLOAD_FILE = 'errFtpDownloadFile';    // 'Invalid folder name.'
+	const ERROR_FTP_UPLOAD_FILE   = 'errFtpUploadFile';
+	const ERROR_FTP_MKDIR         = 'errFtpMkdir';
+	const ERROR_ARCHIVE_EXEC      = 'errArchiveExec';
+	const ERROR_EXTRACT_EXEC      = 'errExtractExec';
+const ERROR_SEARCH_TIMEOUT    = 'errSearchTimeout';
+const ERROR_REAUTH_REQUIRE    = 'errReauthRequire';
+const ERROR_MAX_TARGTES       = 'errMaxTargets';
+	/**
+	 * elFinder instance
+	 *
+	 * @var object
+	 */
+	public static $instance = null;
+		/**
+	 * Network mount drivers
+	 *
+	 * @var array
+	 */
+	public static $netDrivers = array();          // 'Unable to replace "$1".'
+		/**
+	 * elFinder global locale
+	 *
+	 * @var string
+	 */
+	public static $locale = '';               // 'Unable to remove "$1".'
+		/**
+	 * elFinderVolumeDriver default mime.type file path
+	 *
+	 * @var string
+	 */
+	public static $defaultMimefile = '';            // 'Unable remove source file(s)'
+		/**
+	 * A file save destination path when a temporary content URL is required
+	 * on a network volume or the like
+	 * It can be overwritten by volume route setting
+	 *
+	 * @var string
+	 */
+	public static $tmpLinkPath = '';        // 'Unable to create a link to outside the volume root.'
+		/**
+	 * A file save destination URL when a temporary content URL is required
+	 * on a network volume or the like
+	 * It can be overwritten by volume route setting
+	 *
+	 * @var string
+	 */
+	public static $tmpLinkUrl = '';           // 'Upload error.'
+		/**
+	 * Temporary content URL lifetime (seconds)
+	 *
+	 * @var integer
+	 */
+	public static $tmpLinkLifeTime = 3600;       // 'Unable to upload "$1".'
+		/**
+	 * MIME type list handled as a text file
+	 *
+	 * @var array
+	 */
+	public static $textMimes = array(
+		'application/x-empty',
+		'application/javascript',
+		'application/json',
+		'application/xhtml+xml',
+		'audio/x-mp3-playlist',
+		'application/x-web-config',
+		'application/docbook+xml',
+		'application/x-php',
+		'application/x-perl',
+		'application/x-awk',
+		'application/x-config',
+		'application/x-csh',
+		'application/xml',
+		'application/sql'
+	);    // 'No files found for upload.'
+		/**
+	 * elFinder global sessionCacheKey
+	 *
+	 * @deprecated
+	 * @var string
+	 */
+	public static $sessionCacheKey = '';  // 'Data exceeds the maximum allowed size.'
+		/**
+	 * Mounted volumes count
+	 * Required to create unique volume id
+	 *
+	 * @var int
+	 **/
+	public static $volumesCnt = 1;   // 'File exceeds maximum allowed size.'
+		/**
+	 * Errors from PHP
+	 *
+	 * @var array
+	 **/
+	public static $phpErrors = array();       // 'File type not allowed.'
+		/**
+	 * API version number
+	 *
+	 * @var float
+	 **/
+	protected static $ApiVersion = 2.1;   // '"$1" transfer error.'
+		/**
+	 * API revision that this connector supports all functions
+	 *
+	 * @var integer
+	 */
+	protected static $ApiRevision = 29;       // 'Unable to make temporary file for upload.'
+	/**
+	 * Path of current request flag file for abort check
+	 *
+	 * @var string
+	 */
+	protected static $abortCheckFile = null;
+		/**
+	 * elFinder base64encodeSessionData
+	 * elFinder save session data as `UTF-8`
+	 * If the session storage mechanism of the system does not allow `UTF-8`
+	 * And it must be `true` option 'base64encodeSessionData' of elFinder
+	 *
+	 * @var bool
+	 */
+	protected static $base64encodeSessionData = false;       // Object "$1" already exists at this location and can not be replaced with object of another type.
+	/**
+	 * elFinder common tempraly path
+	 *
+	 * @var string
+	 * @default "./.tmp" or sys_get_temp_dir()
+	 **/
+	protected static $commonTempPath = '';
+	/**
+	 * Connection flag files path that connection check of current request
+	 *
+	 * @var string
+	 * @default value of $commonTempPath
+	 */
+	protected static $connectionFlagsPath = '';
+	/**
+	 * Is session closed
+	 *
+	 * @deprecated
+	 * @var bool
+	 */
+	private static $sessionClosed = false;
+	/**
+	 * Max allowed numbar of @var targets (0 - no limit)
+	 *
+	 * @var integer
+	 */
+	public $maxTargets = 1000;
+	/**
+	 * Errors from not mounted volumes
+	 *
+	 * @var array
+	 **/
+	public $mountErrors = array();
+	/**
+	 * API version number
+	 *
+	 * @deprecated
+	 * @var string
+	 **/
+	protected $version;
+	/**
+	 * Storages (root dirs)
+	 *
+	 * @var array
+	 **/
+	protected $volumes = array();
+	/**
+	 * elFinder session wrapper object
+	 *
+	 * @var elFinderSessionInterface
+	 */
+	protected $session;
+	/**
+	 * Additional volume root options for network mounting volume
+	 *
+	 * @var array
+	 */
+	protected $optionsNetVolumes = array();
+	/**
+	 * Session key of net mount volumes
+	 *
+	 * @deprecated
+	 * @var string
+	 */
+	protected $netVolumesSessionKey = '';
+	/**
+	 * Default root (storage)
+	 *
+	 * @var elFinderStorageDriver
+	 **/
+	protected $default = null;
+	/**
+	 * Commands and required arguments list
+	 *
+	 * @var array
+	 **/
+	protected $commands = array(
+		'open'      => array('target' => false, 'tree' => false, 'init' => false, 'mimes' => false, 'compare' => false, 'reqid' => false),
+		'ls'        => array('target' => true, 'mimes' => false, 'intersect' => false, 'reqid' => false),
+		'tree'      => array('target' => true, 'reqid' => false),
+		'parents'   => array('target' => true, 'until' => false, 'reqid' => false),
+		'tmb'       => array('targets' => true, 'reqid' => false),
+		'file'      => array('target' => true, 'download' => false, 'reqid' => false),
+		'zipdl'     => array('targets' => true, 'download' => false, 'reqid' => false),
+		'size'      => array('targets' => true, 'reqid' => false),
+		'mkdir'     => array('target' => true, 'name' => false, 'dirs' => false, 'reqid' => false),
+		'mkfile'    => array('target' => true, 'name' => true, 'mimes' => false, 'reqid' => false),
+		'rm'        => array('targets' => true, 'reqid' => false),
+		'rename'    => array('target' => true, 'name' => true, 'mimes' => false, 'reqid' => false),
+		'duplicate' => array('targets' => true, 'suffix' => false, 'reqid' => false),
+		'paste'     => array('dst' => true, 'targets' => true, 'cut' => false, 'mimes' => false, 'renames' => false, 'hashes' => false, 'suffix' => false, 'reqid' => false),
+		'upload'    => array('target' => true, 'FILES' => true, 'mimes' => false, 'html' => false, 'upload' => false, 'name' => false, 'upload_path' => false, 'chunk' => false, 'cid' => false, 'node' => false, 'renames' => false, 'hashes' => false, 'suffix' => false, 'mtime' => false, 'overwrite' => false, 'reqid' => false),
+		'get'       => array('target' => true, 'conv' => false, 'reqid' => false),
+		'put'       => array('target' => true, 'content' => '', 'mimes' => false, 'encoding' => false, 'reqid' => false),
+		'archive'   => array('targets' => true, 'type' => true, 'mimes' => false, 'name' => false, 'reqid' => false),
+		'extract'   => array('target' => true, 'mimes' => false, 'makedir' => false, 'reqid' => false),
+		'search'    => array('q' => true, 'mimes' => false, 'target' => false, 'reqid' => false),
+		'info'      => array('targets' => true, 'compare' => false, 'reqid' => false),
+		'dim'       => array('target' => true, 'reqid' => false),
+		'resize'    => array('target' => true, 'width' => false, 'height' => false, 'mode' => false, 'x' => false, 'y' => false, 'degree' => false, 'quality' => false, 'bg' => false, 'reqid' => false),
+		'netmount'  => array('protocol' => true, 'host' => true, 'path' => false, 'port' => false, 'user' => false, 'pass' => false, 'alias' => false, 'options' => false, 'reqid' => false),
+		'url'       => array('target' => true, 'options' => false, 'reqid' => false),
+		'callback'  => array('node' => true, 'json' => false, 'bind' => false, 'done' => false, 'reqid' => false),
+		'chmod'     => array('targets' => true, 'mode' => true, 'reqid' => false),
+		'subdirs'   => array('targets' => true, 'reqid' => false),
+		'abort'     => array('id' => true, 'reqid' => false)
+	);
+	/**
+	 * Plugins instance
+	 *
+	 * @var array
+	 **/
+	protected $plugins = array();
+	/**
+	 * Commands listeners
+	 *
+	 * @var array
+	 **/
+	protected $listeners = array();
+	/**
+	 * script work time for debug
+	 *
+	 * @var string
+	 **/
+	protected $time = 0;
+	/**
+	 * Is elFinder init correctly?
+	 *
+	 * @var bool
+	 **/
+	protected $loaded = false;
+	/**
+	 * Send debug to client?
+	 *
+	 * @var string
+	 **/
+	protected $debug = false;
+	/**
+	 * Call `session_write_close()` before exec command?
+	 *
+	 * @var bool
+	 */
+	protected $sessionCloseEarlier = true;
+	/**
+	 * SESSION use commands @see __construct()
+	 *
+	 * @var array
+	 */
+	protected $sessionUseCmds = array();
+	/**
+	 * session expires timeout
+	 *
+	 * @var int
+	 **/
+	protected $timeout = 0;
+	/**
+	 * Temp dir path for Upload
+	 *
+	 * @var string
+	 */
+	protected $uploadTempPath = '';
+	/**
+	 * Max allowed archive files size (0 - no limit)
+	 *
+	 * @var integer
+	 */
+	protected $maxArcFilesSize = 0;
+	/**
+	 * undocumented class variable
+	 *
+	 * @var string
+	 **/
+	protected $uploadDebug = '';
+		/**
+	 * URL for callback output window for CORS
+	 * redirect to this URL when callback output
+	 *
+	 * @var string URL
+	 */
+	protected $callbackWindowURL = '';    // 'Timed out while searching "$1". Search result is partial.'
+		/**
+	 * hash of items to unlock on command completion
+	 *
+	 * @var array hashes
+	 */
+	protected $autoUnlocks = array();  // 'Re-authorization is required.'
+		/**
+	 * Item locking expiration (seconds)
+	 * Default: 3600 secs
+	 *
+	 * @var integer
+	 */
+	protected $itemLockExpire = 3600; // 'Max number of selectable items is $1.'
+
+	/**
+	 * Constructor
+	 *
+	 * @param  array  elFinder and roots configurations
+	 * @author Dmitry (dio) Levashov
+	 */
+	public function __construct($opts) {
+		// define accept constant of server commands path
+		! defined('ELFINDER_TAR_PATH')      && define('ELFINDER_TAR_PATH',      'tar');
+		! defined('ELFINDER_GZIP_PATH')     && define('ELFINDER_GZIP_PATH',     'gzip');
+		! defined('ELFINDER_BZIP2_PATH')    && define('ELFINDER_BZIP2_PATH',    'bzip2');
+		! defined('ELFINDER_XZ_PATH')       && define('ELFINDER_XZ_PATH',       'xz');
+		! defined('ELFINDER_ZIP_PATH')      && define('ELFINDER_ZIP_PATH',      'zip');
+		! defined('ELFINDER_UNZIP_PATH')    && define('ELFINDER_UNZIP_PATH',    'unzip');
+		! defined('ELFINDER_RAR_PATH')      && define('ELFINDER_RAR_PATH',      'rar');
+		! defined('ELFINDER_UNRAR_PATH')    && define('ELFINDER_UNRAR_PATH',    'unrar');
+		! defined('ELFINDER_7Z_PATH')       && define('ELFINDER_7Z_PATH', (substr(PHP_OS, 0, 3) === 'WIN')? '7z' : '7za');
+		! defined('ELFINDER_CONVERT_PATH')  && define('ELFINDER_CONVERT_PATH',  'convert');
+		! defined('ELFINDER_EXIFTRAN_PATH') && define('ELFINDER_EXIFTRAN_PATH', 'exiftran');
+		! defined('ELFINDER_JPEGTRAN_PATH') && define('ELFINDER_JPEGTRAN_PATH', 'jpegtran');
+		! defined('ELFINDER_FFMPEG_PATH')   && define('ELFINDER_FFMPEG_PATH',   'ffmpeg');
+		
+		// for backward compat
+		$this->version = (string)self::$ApiVersion;
+		
+		// set error handler of WARNING, NOTICE
+		$errLevel = E_WARNING | E_NOTICE | E_USER_WARNING | E_USER_NOTICE | E_STRICT | E_RECOVERABLE_ERROR;
+		if (defined('E_DEPRECATED')) {
+			$errLevel |= E_DEPRECATED | E_USER_DEPRECATED;
+		}
+		set_error_handler('elFinder::phpErrorHandler', $errLevel);
+		
+		// Associative array of files to delete at the end of script: ['temp file path' => true]
+		$GLOBALS['elFinderTempFiles'] = array();
+		// regist Shutdown function
+		register_shutdown_function(array('elFinder', 'onShutdown'));
+		
+		// convert PATH_INFO to GET query
+		if (! empty($_SERVER['PATH_INFO'])) {
+			$_ps = explode('/', trim($_SERVER['PATH_INFO'], '/'));
+			if (! isset($_GET['cmd'])) {
+				$_cmd = $_ps[0];
+				if (isset($this->commands[$_cmd])) {
+					$_GET['cmd'] = $_cmd;
+					$_i = 1;
+					foreach(array_keys($this->commands[$_cmd]) as $_k) {
+						if (isset($_ps[$_i])) {
+							if (! isset($_GET[$_k])) {
+								$_GET[$_k] = $_ps[$_i];
+							}
+						} else {
+							break;
+						}
+					}
+				}
+			}
+		}
+		
+		// set elFinder instance
+		elFinder::$instance = $this;
+		
+		// setup debug mode
+		$this->debug = (isset($opts['debug']) && $opts['debug'] ? true : false);
+		if ($this->debug) {
+			error_reporting(defined('ELFINDER_DEBUG_ERRORLEVEL')? ELFINDER_DEBUG_ERRORLEVEL : -1);
+			ini_set('diaplay_errors', '1');
+			// clear output buffer and stop output filters
+			while(ob_get_level() && ob_end_clean()){}
+		}
+
+		if (! interface_exists('elFinderSessionInterface')) {
+			include_once dirname(__FILE__).'/elFinderSessionInterface.php';
+		}
+		
+		// session handler
+		if (!empty($opts['session']) && $opts['session'] instanceof elFinderSessionInterface) {
+			$this->session = $opts['session'];
+		} else {
+			$sessionOpts = array(
+				'base64encode' => !empty($opts['base64encodeSessionData']),
+				'keys' => array(
+					'default'   => !empty($opts['sessionCacheKey']) ? $opts['sessionCacheKey'] : 'elFinderCaches',
+					'netvolume' => !empty($opts['netVolumesSessionKey'])? $opts['netVolumesSessionKey'] : 'elFinderNetVolumes'
+				)
+			);
+			if (! class_exists('elFinderSession')) {
+				include_once dirname(__FILE__) . '/elFinderSession.php';
+			}
+			$this->session = new elFinderSession($sessionOpts);
+		}
+		// try session start | restart
+		$this->session->start();
+		
+		$sessionUseCmds = array();
+		if (isset($opts['sessionUseCmds']) && is_array($opts['sessionUseCmds'])) {
+			$sessionUseCmds = $opts['sessionUseCmds'];
+		}
+
+		// set self::$volumesCnt by HTTP header "X-elFinder-VolumesCntStart"
+		if (isset($_SERVER['HTTP_X_ELFINDER_VOLUMESCNTSTART']) && ($volumesCntStart = intval($_SERVER['HTTP_X_ELFINDER_VOLUMESCNTSTART']))) {
+			self::$volumesCnt = $volumesCntStart;
+		}
+		
+		$this->time  = $this->utime();
+		$this->sessionCloseEarlier = isset($opts['sessionCloseEarlier'])? (bool)$opts['sessionCloseEarlier'] : true;
+		$this->sessionUseCmds = array_flip($sessionUseCmds);
+		$this->timeout = (isset($opts['timeout']) ? $opts['timeout'] : 0);
+		$this->uploadTempPath = (isset($opts['uploadTempPath']) ? $opts['uploadTempPath'] : '');
+		$this->callbackWindowURL = (isset($opts['callbackWindowURL']) ? $opts['callbackWindowURL'] : '');
+		$this->maxTargets = (isset($opts['maxTargets']) ? intval($opts['maxTargets']) : $this->maxTargets);
+		elFinder::$commonTempPath = (isset($opts['commonTempPath']) ? $opts['commonTempPath'] : './.tmp');
+		if (!is_writable(elFinder::$commonTempPath)) {
+			elFinder::$commonTempPath = sys_get_temp_dir();
+			if (!is_writable(elFinder::$commonTempPath)) {
+				elFinder::$commonTempPath = '';
+			}
+		}
+		if (isset($opts['connectionFlagsPath']) && is_writable($opts['connectionFlagsPath'])) {
+			elFinder::$connectionFlagsPath = $opts['connectionFlagsPath'];
+		} else {
+			elFinder::$connectionFlagsPath = elFinder::$commonTempPath;
+		}
+		
+		if (! empty($opts['tmpLinkPath'])) {
+			elFinder::$tmpLinkPath = $opts['tmpLinkPath'];
+		}
+		if (! empty($opts['tmpLinkUrl'])) {
+			elFinder::$tmpLinkUrl = $opts['tmpLinkUrl'];
+		}
+		if (! empty($opts['tmpLinkLifeTime'])) {
+			elFinder::$tmpLinkLifeTime = $opts['tmpLinkLifeTime'];
+		}
+		if (! empty($opts['textMimes']) && is_array($opts['textMimes'])) {
+			elfinder::$textMimes = $opts['textMimes'];
+		}
+		$this->maxArcFilesSize = isset($opts['maxArcFilesSize'])? intval($opts['maxArcFilesSize']) : 0;
+		$this->optionsNetVolumes = (isset($opts['optionsNetVolumes']) && is_array($opts['optionsNetVolumes']))? $opts['optionsNetVolumes'] : array();
+		if (isset($opts['itemLockExpire'])) {
+			$this->itemLockExpire = intval($opts['itemLockExpire']);
+		}
+		
+		// deprecated settings
+		$this->netVolumesSessionKey = !empty($opts['netVolumesSessionKey'])? $opts['netVolumesSessionKey'] : 'elFinderNetVolumes';
+		self::$sessionCacheKey = !empty($opts['sessionCacheKey']) ? $opts['sessionCacheKey'] : 'elFinderCaches';
+		
+		// check session cache
+		$_optsMD5 = md5(json_encode($opts['roots']));
+		if ($this->session->get('_optsMD5') !== $_optsMD5) {
+			$this->session->set('_optsMD5', $_optsMD5);
+		}
+		
+		// setlocale and global locale regists to elFinder::locale
+		self::$locale = !empty($opts['locale']) ? $opts['locale'] : 'en_US.UTF-8';
+		if (false === setlocale(LC_ALL, self::$locale)) {
+			self::$locale = setlocale(LC_ALL, '');
+		}
+
+		// set defaultMimefile
+		elFinder::$defaultMimefile = (isset($opts['defaultMimefile']) ? $opts['defaultMimefile'] : '');
+
+		// bind events listeners
+		if (!empty($opts['bind']) && is_array($opts['bind'])) {
+			$_req = $_SERVER["REQUEST_METHOD"] == 'POST' ? $_POST : $_GET;
+			$_reqCmd = isset($_req['cmd']) ? $_req['cmd'] : '';
+			foreach ($opts['bind'] as $cmd => $handlers) {
+				$doRegist = (strpos($cmd, '*') !== false);
+				if (! $doRegist) {
+					$doRegist = ($_reqCmd && in_array($_reqCmd, array_map('self::getCmdOfBind', explode(' ', $cmd))));
+				}
+				if ($doRegist) {
+					// for backward compatibility
+					if (! is_array($handlers)) {
+						$handlers = array($handlers);
+					} else {
+						if (count($handlers) === 2 && is_object($handlers[0])) {
+							$handlers = array($handlers);
+						}
+					}
+					foreach($handlers as $handler) {
+						if ($handler) {
+							if (is_string($handler) && strpos($handler, '.')) {
+								list($_domain, $_name, $_method) = array_pad(explode('.', $handler), 3, '');
+								if (strcasecmp($_domain, 'plugin') === 0) {
+									if ($plugin = $this->getPluginInstance($_name, isset($opts['plugin'][$_name])? $opts['plugin'][$_name] : array())
+											and method_exists($plugin, $_method)) {
+										$this->bind($cmd, array($plugin, $_method));
+									}
+								}
+							} else {
+								$this->bind($cmd, $handler);
+							}
+						}
+					}
+				}
+			}
+		}
+
+		if (!isset($opts['roots']) || !is_array($opts['roots'])) {
+			$opts['roots'] = array();
+		}
+
+		// check for net volumes stored in session
+		$netVolumes = $this->getNetVolumes();
+		foreach ($netVolumes as $key => $root) {
+			if (! isset($root['id'])) {
+				// given fixed unique id
+				if (! $root['id'] = $this->getNetVolumeUniqueId($netVolumes)) {
+					$this->mountErrors[] = 'Netmount Driver "'.$root['driver'].'" : Could\'t given volume id.';
+					continue;
+				}
+			}
+			$opts['roots'][$key] = $root;
+		}
+
+		// "mount" volumes
+		foreach ($opts['roots'] as $i => $o) {
+			$class = 'elFinderVolume'.(isset($o['driver']) ? $o['driver'] : '');
+
+			if (class_exists($class)) {
+				$volume = new $class();
+
+				try {
+					if ($this->maxArcFilesSize && (empty($o['maxArcFilesSize']) || $this->maxArcFilesSize < $o['maxArcFilesSize'])) {
+						$o['maxArcFilesSize'] = $this->maxArcFilesSize;
+					}
+					// pass session handler
+					$volume->setSession($this->session);
+					if ($volume->mount($o)) {
+						// unique volume id (ends on "_") - used as prefix to files hash
+						$id = $volume->id();
+						
+						$this->volumes[$id] = $volume;
+						if ((!$this->default || $volume->root() !== $volume->defaultPath()) && $volume->isReadable()) {
+							$this->default = $this->volumes[$id]; 
+						}
+					} else {
+						$this->removeNetVolume($i, $volume);
+						$this->mountErrors[] = 'Driver "'.$class.'" : '.implode(' ', $volume->error());
+					}
+				} catch (Exception $e) {
+					$this->removeNetVolume($i, $volume);
+					$this->mountErrors[] = 'Driver "'.$class.'" : '.$e->getMessage();
+				}
+			} else {
+				$this->removeNetVolume($i, $volume);
+				$this->mountErrors[] = 'Driver "'.$class.'" does not exist';
+			}
+		}
+
+		// if at least one readable volume - ii desu >_<
+		$this->loaded = !empty($this->default);
+		
+		// restore error handler for now
+		restore_error_handler();
+	}
+	
+	protected function utime() {
+		$time = explode(" ", microtime());
+		return (double)$time[1] + (double)$time[0];
+	}
+	
+	/**
+	 * Get plugin instance & set to $this->plugins
+	 *
+	 * @param  string $name   Plugin name (dirctory name)
+	 * @param  array  $opts   Plugin options (optional)
+	 * @return object | bool Plugin object instance Or false
+	 * @author Naoki Sawada
+	 */
+	protected function getPluginInstance($name, $opts = array()) {
+		$key = strtolower($name);
+		if (! isset($this->plugins[$key])) {
+			$class = 'elFinderPlugin' . $name;
+			// to try auto load
+			if (! class_exists($class)) {
+				$p_file = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . $name . DIRECTORY_SEPARATOR . 'plugin.php';
+				if (is_file($p_file)) {
+					include_once $p_file;
+				}
+			}
+			if (class_exists($class, false)) {
+				$this->plugins[$key] = new $class($opts);
+			} else {
+				$this->plugins[$key] = false;
+			}
+		}
+		return $this->plugins[$key];
+	}
+	
+	/**
+	 * Add handler to elFinder command
+	 *
+	 * @param  string  command name
+	 * @param  string|array  callback name or array(object, method)
+	 * @return elFinder
+	 * @author Dmitry (dio) Levashov
+	 **/
+	public function bind($cmd, $handler) {
+		$allCmds = array_keys($this->commands);
+		$cmds = array();
+		foreach(explode(' ', $cmd) as $_cmd) {
+			if ($_cmd !== '') {
+				if ($all = strpos($_cmd, '*') !== false) {
+					list(, $sub) = array_pad(explode('.', $_cmd), 2, '');
+					if ($sub) {
+						$sub = str_replace('\'', '\\\'', $sub);
+						$subs = array_fill(0, count($allCmds), $sub);
+						$cmds = array_merge($cmds, array_map(array('elFinder', 'addSubToBindName'), $allCmds, $subs));
+					} else {
+						$cmds = array_merge($cmds, $allCmds);
+					}
+				} else {
+					$cmds[] = $_cmd;
+				}
+			}
+		}
+		$cmds = array_unique($cmds);
+
+		foreach ($cmds as $cmd) {
+			if (!isset($this->listeners[$cmd])) {
+				$this->listeners[$cmd] = array();
+			}
+
+			if (is_callable($handler)) {
+				$this->listeners[$cmd][] = $handler;
+			}
+		}
+
+		return $this;
+	}
+	
+	/**
+	 * Return network volumes config.
+	 *
+	 * @return array
+	 * @author Dmitry (dio) Levashov
+	 */
+	protected function getNetVolumes() {
+		if ($data = $this->session->get('netvolume', array())) {
+			return $data;
+		}
+		return array();
+	}
+	
+	/**
+	 * Return Network mount volume unique ID
+	 *
+	 * @param  array   $netVolumes  Saved netvolumes array
+	 * @param  string  $prefix      Id prefix
+	 * @return string|false
+	 * @author Naoki Sawada
+	 **/
+	protected function getNetVolumeUniqueId($netVolumes = null, $prefix = 'nm') {
+		$id = false;
+		if (is_null($netVolumes)) {
+			$netVolumes = $this->getNetVolumes();
+		}
+		$ids = array();
+		foreach($netVolumes as $vOps) {
+			if (isset($vOps['id']) && strpos($vOps['id'], $prefix) === 0) {
+				$ids[$vOps['id']] = true;
+			}
+		}
+		if (! $ids) {
+			$id = $prefix.'1';
+		} else {
+			$i = 0;
+			while(isset($ids[$prefix.++$i]) && $i < 10000);
+			$id = $prefix.$i;
+			if (isset($ids[$id])) {
+				$id = false;
+			}
+		}
+		return $id;
+	}
+	
+	/**
+	 * Remove netmount volume
+	 *
+	 * @param string $key netvolume key
+	 * @param object $volume volume driver instance
+	 * @return bool
+	 */
+	protected function removeNetVolume($key, $volume) {
+		$netVolumes = $this->getNetVolumes();
+		$res = true;
+		if (is_object($volume) && method_exists($volume, 'netunmount')) {
+			$res = $volume->netunmount($netVolumes, $key);
+			$volume->clearSessionCache();
+		}
+		if ($res) {
+			if (is_string($key) && isset($netVolumes[$key])) {
+				unset($netVolumes[$key]);
+				$this->saveNetVolumes($netVolumes);
+				return true;
+			}
+		}
+		return false;
+	}
+	
+	/**
+	 * Save network volumes config.
+	 *
+	 * @param  array  $volumes  volumes config
+	 * @return void
+	 * @author Dmitry (dio) Levashov
+	 */
+	protected function saveNetVolumes($volumes) {
+		$this->session->set('netvolume', $volumes);
+	}
+	
+	/**
+	 * PHP error handler, catch error types only E_WARNING | E_NOTICE | E_USER_WARNING | E_USER_NOTICE
+	 *
+	 * @param int    $errno
+	 * @param string $errstr
+	 * @param string $errfile
+	 * @param int    $errline
+	 * @return void|boolean
+	 */
+	public static function phpErrorHandler($errno, $errstr, $errfile, $errline) {
+		static $base = null;
+
+		if (is_null($base)) {
+			$base = dirname(__FILE__) . DIRECTORY_SEPARATOR;
+		}
+
+		if (! (error_reporting() & $errno)) {
+			return;
+		}
+
+		$errfile = str_replace($base, '', $errfile);
+
+		$proc = false;
+		switch ($errno) {
+			case E_WARNING:
+			case E_USER_WARNING:
+				elFinder::$phpErrors[] = "WARNING: $errstr in $errfile line $errline.";
+				$proc = true;
+				break;
+
+			case E_NOTICE:
+			case E_USER_NOTICE:
+				elFinder::$phpErrors[] = "NOTICE: $errstr in $errfile line $errline.";
+				$proc = true;
+				break;
+
+			case E_STRICT:
+				elFinder::$phpErrors[] = "STRICT: $errstr in $errfile line $errline.";
+				$proc = true;
+				break;
+
+			case E_RECOVERABLE_ERROR:
+				elFinder::$phpErrors[] = "RECOVERABLE_ERROR: $errstr in $errfile line $errline.";
+				$proc = true;
+				break;
+		}
+
+		if (defined('E_DEPRECATED')) {
+			switch ($errno) {
+				case E_DEPRECATED:
+				case E_USER_DEPRECATED:
+					elFinder::$phpErrors[] = "DEPRECATED: $errstr in $errfile line $errline.";
+					$proc = true;
+					break;
+			}
+		}
+
+		return $proc;
+	}
+	
+	/**
+	 * Return full version of API that this connector supports all functions
+	 *
+	 * @return string
+	 */
+	public static function getApiFullVersion() {
+		return (string)self::$ApiVersion . '.' . (string)self::$ApiRevision;
+	}
+
+	/**
+	 * Return Is Animation Gif
+	 *
+	 * @param  string $path server local path of target image
+	 * @return bool
+	 */
+	public static function isAnimationGif($path) {
+		list($width, $height, $type, $attr) = getimagesize($path);
+		switch ($type) {
+			case IMAGETYPE_GIF:
+				break;
+			default:
+				return false;
+		}
+
+		$imgcnt = 0;
+		$fp = fopen($path, 'rb');
+		fread($fp, 4);
+		$c = fread($fp,1);
+		if (ord($c) != 0x39) {  // GIF89a
+			return false;
+		}
+
+		while (!feof($fp)) {
+			do {
+				$c = fread($fp, 1);
+			} while(ord($c) != 0x21 && !feof($fp));
+
+			if (feof($fp)) {
+				break;
+			}
+
+			$c2 = fread($fp,2);
+			if (bin2hex($c2) == "f904") {
+				$imgcnt++;
+			}
+
+			if (feof($fp)) {
+				break;
+			}
+		}
+
+		if ($imgcnt > 1) {
+			return true;
+		} else {
+			return false;
+		}
+	}
+	
+	/**
+	 * Return Is Animation Png
+	 *
+	 * @param  string $path server local path of target image
+	 * @return bool
+	 */
+	public static function isAnimationPng($path) {
+		list($width, $height, $type, $attr) = getimagesize($path);
+		switch ($type) {
+			case IMAGETYPE_PNG:
+				break;
+			default:
+				return false;
+		}
+
+		$fp = fopen($path, 'rb');
+		$img_bytes = fread($fp, 1024);
+		fclose($fp);
+		if ($img_bytes) {
+			if (strpos(substr($img_bytes, 0, strpos($img_bytes, 'IDAT')), 'acTL') !== false) {
+				return true;
+			}
+		}
+		return false;
+	}
+	
+	/**
+	 * Rewind stream resource
+	 *
+	 * @param resource $resource
+	 * @return void
+	 */
+	public static function rewind($resource) {
+		self::isSeekableStream($resource) && rewind($resource);
+	}
+	
+	/**
+	 * Return Is seekable stream resource
+	 *
+	 * @param resource $resource
+	 * @return bool
+	 */
+	public static function isSeekableStream($resource) {
+		$metadata = stream_get_meta_data($resource);
+		return $metadata['seekable'];
+	}
+	
+	/**
+	 * serialize and base64_encode of session data (If needed)
+	 *
+	 * @deprecated
+	 * @param  mixed $var target variable
+	 * @author Naoki Sawada
+	 * @return mixed|string
+	 */
+	public static function sessionDataEncode($var) {
+		if (self::$base64encodeSessionData) {
+			$var = base64_encode(serialize($var));
+		}
+		return $var;
+	}
+
+	/**
+	 * base64_decode and unserialize of session data  (If needed)
+	 *
+	 * @deprecated
+	 * @param  mixed $var target variable
+	 * @param  bool $checkIs data type for check (array|string|object|int)
+	 * @author Naoki Sawada
+	 * @return bool|mixed
+	 */
+	public static function sessionDataDecode(&$var, $checkIs = null) {
+		if (self::$base64encodeSessionData) {
+			$data = unserialize(base64_decode($var));
+		} else {
+			$data = $var;
+		}
+		$chk = true;
+		if ($checkIs) {
+			switch ($checkIs) {
+				case 'array':
+					$chk = is_array($data);
+					break;
+				case 'string':
+					$chk = is_string($data);
+					break;
+				case 'object':
+					$chk = is_object($data);
+					break;
+				case 'int':
+					$chk = is_int($data);
+					break;
+			}
+		}
+		if (!$chk) {
+			unset($var);
+			return false;
+		}
+		return $data;
+	}
+
+	/**
+	 * Call session_write_close() if session is restarted
+	 *
+	 * @deprecated
+	 * @return void
+	 */
+	public static function sessionWrite() {
+		if (session_id()) {
+			session_write_close();
+		}
+	}
+
+	/**
+	 * Return elFinder static variable
+	 *
+	 * @param $key
+	 * @return mixed|null
+	 */
+	public static function getStaticVar($key) {
+		return isset(elFinder::$$key)? elFinder::$$key : null;
+	}
+
+	/***************************************************************************/
+	/*                                 commands                                */
+	/***************************************************************************/
+	
+	/**
+	 * Return bytes from php.ini value
+	 *
+	 * @param string $iniName
+	 * @param string $val
+	 * @return number
+	 */
+	public static function getIniBytes($iniName = '', $val = '') {
+		if ($iniName !== '') {
+			$val = ini_get($iniName);
+			if ($val === false) {
+				return 0;
+			}
+		}
+		$val = trim($val, "bB \t\n\r\0\x0B");
+		$last = strtolower($val[strlen($val) - 1]);
+		$val = (int)$val;
+		switch($last) {
+			case 't':
+				$val *= 1024;
+			case 'g':
+				$val *= 1024;
+			case 'm':
+				$val *= 1024;
+			case 'k':
+				$val *= 1024;
+		}
+		return $val;
+	}
+	
+	/**
+	 * Get script url.
+	 *
+	 * @return string full URL
+	 *
+	 * @author Naoki Sawada
+	 */
+	public static function getConnectorUrl() {
+		$https = (isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off');
+		$url = ($https ? 'https://' : 'http://')
+			.$_SERVER['SERVER_NAME']                                              // host
+			.(((! $https && $_SERVER['SERVER_PORT'] == 80) || ($https && $_SERVER['SERVER_PORT'] == 443)) ? '' : (':' . $_SERVER['SERVER_PORT']))  // port
+			.$_SERVER['REQUEST_URI'];                                             // path & query
+		list($url) = explode('?', $url);
+
+		return $url;
+	}
+
+	/**
+	 * Call curl_exec() with supported redirect on `safe_mode` or `open_basedir`
+	 *
+	 * @param resource    $curl
+	 * @param array       $options
+	 * @param array       $headers
+	 *
+	 * @throws \Exception
+	 *
+	 * @return mixed
+	 *
+	 * @author Naoki Sawada
+	 */
+	public static function curlExec($curl, $options = array(), $headers = array()) {
+		if ($followLocation = (!ini_get('safe_mode') && !ini_get('open_basedir'))) {
+			curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
+		}
+
+		if ($options) {
+			curl_setopt_array($curl, $options);
+		}
+
+		if ($headers) {
+			curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
+		}
+
+		$result = curl_exec($curl);
+
+		if (! $followLocation && $redirect = curl_getinfo($curl, CURLINFO_REDIRECT_URL)) {
+			if ($stream = self::getStreamByUrl(array('target' => $redirect, 'headers' => $headers))) {
+				$result = stream_get_contents($stream);
+			}
+		}
+
+		if ($result === false) {
+			if (curl_errno($curl)) {
+				throw new \Exception('curl_exec() failed: '.curl_error($curl));
+			} else {
+				throw new \Exception('curl_exec(): empty response');
+			}
+		}
+
+		curl_close($curl);
+
+		return $result;
+	}
+	
+	/**
+	 * Get stream resource pointer by URL
+	 *
+	 * @param array  $data  array('target'=>'URL', 'headers' => array())
+	 * @param number $redirectLimit
+	 * @return resource|boolean
+	 *
+	 * @author Naoki Sawada
+	 */
+	public static function getStreamByUrl($data, $redirectLimit = 5) {
+		if (isset($data['target'])) {
+			$data = array(
+				'cnt' => 0,
+				'url' => $data['target'],
+				'headers' => isset($data['headers'])? $data['headers'] : array(),
+				'cookies' => array(),
+			);
+		}
+		if ($data['cnt'] > $redirectLimit) {
+			return false;
+		}
+		$dlurl = $data['url'];
+		$data['url'] = '';
+		$headers = $data['headers'];
+
+		if ($dlurl) {
+			$url = parse_url($dlurl);
+			$ports = array(
+				'http'  => '80',
+				'ssl'   => '443',
+				'ftp'   => '21'
+			);
+			$url['scheme'] = strtolower($url['scheme']);
+			if ($url['scheme'] === 'https') {
+				$url['scheme'] = 'ssl';
+			}
+			if (! isset($url['port']) && isset($ports[$url['scheme']])) {
+				$url['port'] = $ports[$url['scheme']];
+			}
+			if (! isset($url['port'])) {
+				return false;
+			}
+			$cookies = array();
+			if ($data['cookies']) {
+				foreach ($data['cookies'] as $d => $c) {
+					if (strpos($url['host'], $d) !== false) {
+						$cookies[] = $c;
+					}
+				}
+			}
+
+			$query = isset($url['query']) ? '?'.$url['query'] : '';
+			$stream = stream_socket_client($url['scheme'].'://'.$url['host'].':'.$url['port']);
+			stream_set_timeout($stream, 300);
+			fputs($stream, "GET {$url['path']}{$query} HTTP/1.1\r\n");
+			fputs($stream, "Host: {$url['host']}\r\n");
+			foreach($headers as $header) {
+				fputs($stream, trim($header, "\r\n")."\r\n");
+			}
+			fputs($stream, "Connection: Close\r\n");
+			if ($cookies) {
+				fputs($stream, 'Cookie: '.implode('; ', $cookies)."\r\n");
+			}
+			fputs($stream, "\r\n");
+			while (($res = trim(fgets($stream))) !== '') {
+				// find redirect
+				if (preg_match('/^Location: (.+)$/', $res, $m)) {
+					$data['url'] = $m[1];
+				}
+				// fetch cookie
+				if (strpos($res, 'Set-Cookie:') === 0) {
+					$domain = $url['host'];
+					if (preg_match('/^Set-Cookie:(.+)(?:domain=\s*([^ ;]+))?/i', $res, $c1)) {
+						if (!empty($c1[2])) {
+							$domain = trim($c1[2]);
+						}
+						if (preg_match('/([^ ]+=[^;]+)/', $c1[1], $c2)) {
+							$data['cookies'][$domain] = $c2[1];
+						}
+					}
+				}
+			}
+			if ($data['url']) {
+				++$data['cnt'];
+				fclose($stream);
+
+				return self::getStreamByUrl($data, $redirectLimit);
+			}
+
+			return $stream;
+		}
+
+		return false;
+	}
+	
+	/**
+	 * Remove a file if connection is disconnected
+	 *
+	 * @param string $file
+	 */
+	public static function rmFileInDisconnected($file) {
+		(connection_aborted() || connection_status() !== CONNECTION_NORMAL) && is_file($file) && unlink($file);
+	}
+	
+	/**
+	 * Call back function on shutdown
+	 *  - delete files in $GLOBALS['elFinderTempFiles']
+	 *
+	 */
+	public static function onShutdown() {
+		self::$abortCheckFile = null;
+		if (! empty($GLOBALS['elFinderTempFiles'])) {
+			foreach(array_keys($GLOBALS['elFinderTempFiles']) as $f){
+				is_file($f) && unlink($f);
+			}
+		}
+	}
+	
+	/**
+	 * Get command name of binded "commandName.subName"
+	 *
+	 * @param string $cmd
+	 * @return string
+	 */
+	protected static function getCmdOfBind($cmd) {
+		list($ret) = explode('.', $cmd);
+		return trim($ret);
+	}
+	
+	/**
+	 * Add subName to commandName
+	 *
+	 * @param string $cmd
+	 * @param string $sub
+	 * @return string
+	 */
+	protected static function addSubToBindName($cmd, $sub) {
+		return $cmd . '.' . trim($sub);
+	}
+	
+	/**
+	 * Return elFinder session wrapper instance
+	 *
+	 * @return  object  elFinderSessionInterface
+	 **/
+	public function getSession() {
+		return $this->session;
+	}
+	
+	/**
+	 * Return true if fm init correctly
+	 *
+	 * @return bool
+	 * @author Dmitry (dio) Levashov
+	 **/
+	public function loaded() {
+		return $this->loaded;
+	}
+	
+	/**
+	 * Return version (api) number
+	 *
+	 * @return string
+	 * @author Dmitry (dio) Levashov
+	 **/
+	public function version() {
+		return self::$ApiVersion;
+	}
+	
+	/**
+	 * Return revision (api) number
+	 *
+	 * @return string
+	 * @author Naoki Sawada
+	 **/
+	public function revision() {
+		return self::$ApiRevision;
+	}
+	
+	/**
+	 * Remove event (command exec) handler
+	 *
+	 * @param  string  command name
+	 * @param  string|array  callback name or array(object, method)
+	 * @return elFinder
+	 * @author Dmitry (dio) Levashov
+	 **/
+	public function unbind($cmd, $handler) {
+		if (!empty($this->listeners[$cmd])) {
+			foreach ($this->listeners[$cmd] as $i => $h) {
+				if ($h === $handler) {
+					unset($this->listeners[$cmd][$i]);
+					return $this;
+				}
+			}
+		}
+		return $this;
+	}
+	
+	/**
+	 * Return root - file's owner (public func of volume())
+	 *
+	 * @param  string  file hash
+	 * @return elFinderStorageDriver
+	 * @author Naoki Sawada
+	 */
+	public function getVolume($hash) {
+		return $this->volume($hash);
+	}
+		
+	/**
+	 * Return root - file's owner
+	 *
+	 * @param  string  file hash
+	 * @return elFinderStorageDriver
+	 * @author Dmitry (dio) Levashov
+	 **/
+	protected function volume($hash) {
+		foreach ($this->volumes as $id => $v) {
+			if (strpos(''.$hash, $id) === 0) {
+				return $this->volumes[$id];
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * Return command required arguments info
+	 *
+	 * @param  string  command name
+	 * @return array
+	 * @author Dmitry (dio) Levashov
+	 **/
+	public function commandArgsList($cmd) {
+		return $this->commandExists($cmd) ? $this->commands[$cmd] : array();
+	}
+
+	/**
+	 * Return true if command exists
+	 *
+	 * @param  string  command name
+	 * @return bool
+	 * @author Dmitry (dio) Levashov
+	 **/
+	public function commandExists($cmd) {
+		return $this->loaded && isset($this->commands[$cmd]) && method_exists($this, $cmd);
+	}
+	
+	/**
+	 * Exec command and return result
+	 *
+	 * @param  string  $cmd  command name
+	 * @param  array   $args command arguments
+	 * @return array
+	 * @author Dmitry (dio) Levashov
+	 **/
+	public function exec($cmd, $args) {
+		// set error handler of WARNING, NOTICE
+		set_error_handler('elFinder::phpErrorHandler', E_WARNING | E_NOTICE | E_USER_WARNING | E_USER_NOTICE);
+
+		if (!$this->loaded) {
+			return array('error' => $this->error(self::ERROR_CONF, self::ERROR_CONF_NO_VOL));
+		}
+
+		if ($this->session_expires()) {
+			return array('error' => $this->error(self::ERROR_SESSION_EXPIRES));
+		}
+
+		if (!$this->commandExists($cmd)) {
+			return array('error' => $this->error(self::ERROR_UNKNOWN_CMD));
+		}
+
+		// to abort this request
+		if ($cmd === 'abort') {
+			$this->abort($args);
+			return array('error' => 0);
+		}
+
+		// make flag file and set self::$abortCheckFile
+		if (! empty($args['reqid'])) {
+			$this->abort(array('makeFile' => $args['reqid']));
+		}
+
+		if (!empty($args['mimes']) && is_array($args['mimes'])) {
+			foreach ($this->volumes as $id => $v) {
+				$this->volumes[$id]->setMimesFilter($args['mimes']);
+			}
+		}
+
+		// regist shutdown function as fallback
+		register_shutdown_function(array($this, 'itemAutoUnlock'));
+
+		// detect destination dirHash and volume
+		$dstVolume = false;
+		$dst = ! empty($args['target'])? $args['target'] : (! empty($args['dst'])? $args['dst'] : '');
+		if ($dst) {
+			$dstVolume = $this->volume($dst);
+		} else if (isset($args['targets']) && is_array($args['targets']) && isset($args['targets'][0])) {
+			$dst = $args['targets'][0];
+			$dstVolume = $this->volume($dst);
+			if ($dstVolume && ($_stat = $dstVolume->file($dst)) && ! empty($_stat['phash'])) {
+				$dst = $_stat['phash'];
+			} else {
+				$dst = '';
+			}
+		} else if ($cmd === 'open') {
+			// for initial open without args `target`
+			$dstVolume = $this->default;
+			$dst = $dstVolume->defaultPath();
+		}
+
+		$result = null;
+
+		// call pre handlers for this command
+		$args['sessionCloseEarlier'] = isset($this->sessionUseCmds[$cmd])? false : $this->sessionCloseEarlier;
+		if (!empty($this->listeners[$cmd.'.pre'])) {
+			foreach ($this->listeners[$cmd.'.pre'] as $handler) {
+				$_res = call_user_func_array($handler, array($cmd, &$args, $this, $dstVolume));
+				if (is_array($_res)) {
+					if (! empty($_res['preventexec'])) {
+						$result = array('error' => true);
+						if ($cmd === 'upload' & ! empty($args['node'])) {
+							$result['callback'] = array(
+								'node' => $args['node'],
+								'bind' => $cmd
+							);
+						}
+						if (! empty($_res['results']) && is_array($_res['results'])) {
+							$result = array_merge($result, $_res['results']);
+						}
+						break;
+					}
+				}
+			}
+		}
+
+		// unlock session data for multiple access
+		if ($this->sessionCloseEarlier && $args['sessionCloseEarlier']) {
+			$this->session->close();
+			// deprecated property
+			elFinder::$sessionClosed = true;
+		}
+
+		if (substr(PHP_OS,0,3) === 'WIN') {
+			// set time out
+			elFinder::extendTimeLimit(300);
+		}
+
+		if (! is_array($result)) {
+			try {
+				$result = $this->$cmd($args);
+			} catch (elFinderAbortException $e) {
+				throw $e;
+			} catch (Exception $e) {
+				$result = array(
+					'error' => htmlspecialchars($e->getMessage()),
+					'sync' => true
+				);
+			}
+		}
+
+		// check change dstDir
+		$changeDst = false;
+		if ($dst && $dstVolume && (! empty($result['added']) || ! empty($result['removed']))) {
+			$changeDst = true;
+		}
+
+		foreach ($this->volumes as $volume) {
+			$removed = $volume->removed();
+			if (! empty($removed)) {
+				if (! isset($result['removed'])) {
+					$result['removed'] = array();
+				}
+				$result['removed'] = array_merge($result['removed'], $removed);
+				if (! $changeDst && $dst && $dstVolume && $volume === $dstVolume) {
+					$changeDst = true;
+				}
+			}
+			$added = $volume->added();
+			if (! empty($added)) {
+				if (! isset($result['added'])) {
+					$result['added'] = array();
+				}
+				$result['added'] = array_merge($result['added'], $added);
+				if (! $changeDst && $dst && $dstVolume && $volume === $dstVolume) {
+					$changeDst = true;
+				}
+			}
+			$volume->resetResultStat();
+		}
+
+		// dstDir is changed
+		if ($changeDst) {
+			if ($dstDir = $dstVolume->dir($dst)) {
+				if (! isset($result['changed'])) {
+					$result['changed'] = array();
+				}
+				$result['changed'][] = $dstDir;
+			}
+		}
+
+		// call handlers for this command
+		if (!empty($this->listeners[$cmd])) {
+			foreach ($this->listeners[$cmd] as $handler) {
+				if (call_user_func_array($handler,array($cmd, &$result, $args, $this, $dstVolume))) {
+					// handler return true to force sync client after command completed
+					$result['sync'] = true;
+				}
+			}
+		}
+
+		// replace removed files info with removed files hashes
+		if (!empty($result['removed'])) {
+			$removed = array();
+			foreach ($result['removed'] as $file) {
+				$removed[] = $file['hash'];
+			}
+			$result['removed'] = array_unique($removed);
+		}
+		// remove hidden files and filter files by mimetypes
+		if (!empty($result['added'])) {
+			$result['added'] = $this->filter($result['added']);
+		}
+		// remove hidden files and filter files by mimetypes
+		if (!empty($result['changed'])) {
+			$result['changed'] = $this->filter($result['changed']);
+		}
+
+		if ($this->debug || !empty($args['debug'])) {
+			$result['debug'] = array(
+				'connector' => 'php',
+				'phpver'    => PHP_VERSION,
+				'time'      => $this->utime() - $this->time,
+				'memory'    => (function_exists('memory_get_peak_usage') ? ceil(memory_get_peak_usage()/1024).'Kb / ' : '').ceil(memory_get_usage()/1024).'Kb / '.ini_get('memory_limit'),
+				'upload'    => $this->uploadDebug,
+				'volumes'   => array(),
+				'mountErrors' => $this->mountErrors,
+				'phpErrors' => elFinder::$phpErrors
+			);
+			elFinder::$phpErrors = array();
+
+			foreach ($this->volumes as $id => $volume) {
+				$result['debug']['volumes'][] = $volume->debug();
+			}
+		}
+
+		foreach ($this->volumes as $volume) {
+			$volume->saveSessionCache();
+			$volume->umount();
+		}
+
+		// unlock locked items
+		$this->itemAutoUnlock();
+
+		// remove self::$abortCheckFile
+		$this->abort();
+
+		if (!empty($result['callback'])) {
+			$result['callback']['json'] = json_encode($result);
+			$this->callback($result['callback']);
+		} else {
+			return $result;
+		}
+	}
+	
+	/**
+	 * Normalize error messages
+	 *
+	 * @return array
+	 * @author Dmitry (dio) Levashov
+	 **/
+	public function error() {
+		$errors = array();
+
+		foreach (func_get_args() as $msg) {
+			if (is_array($msg)) {
+				$errors = array_merge($errors, $msg);
+			} else {
+				$errors[] = $msg;
+			}
+		}
+
+		return count($errors) ? $errors : array(self::ERROR_UNKNOWN);
+	}
+	
+	private function session_expires() {
+
+		if (! $last = $this->session->get(':LAST_ACTIVITY')) {
+			$this->session->set(':LAST_ACTIVITY', time());
+			return false;
+		}
+
+		if ( ($this->timeout > 0) && (time() - $last > $this->timeout) ) {
+			return true;
+		}
+
+		$this->session->set(':LAST_ACTIVITY', time());
+		return false;
+	}
+	
+	/**
+	 * Abort current request and make flag file to running check
+	 *
+	 * @param array $args
+	 * @return void
+	 */
+	protected function abort($args = array()) {
+		if (! elFinder::$connectionFlagsPath) {
+			return;
+		}
+		$flagFile = elFinder::$connectionFlagsPath . DIRECTORY_SEPARATOR . 'elfreq%s';
+		if (! empty($args['makeFile'])) {
+			self::$abortCheckFile = sprintf($flagFile, $args['makeFile']);
+			touch(self::$abortCheckFile);
+			$GLOBALS['elFinderTempFiles'][self::$abortCheckFile] = true;
+			return;
+		}
+
+		$file = ! empty($args['id'])? sprintf($flagFile, $args['id']) : self::$abortCheckFile;
+		$file && is_file($file) && unlink($file);
+	}
+	
+	/**
+	 * Extend PHP execution time limit and also check connection is aborted
+	 *
+	 * @param Int $time
+	 * @return void
+	 */
+	public static function extendTimeLimit($time = null) {
+		static $defLimit = null;
+		if (! self::aborted()) {
+			if (is_null($defLimit)) {
+				$defLimit = ini_get('max_execution_time');
+			}
+			if ($defLimit != 0) {
+				$time = is_null($time)? $defLimit : max($defLimit, $time);
+				set_time_limit($time);
+			}
+		} else {
+			throw new elFinderAbortException();
+		}
+	}
+	
+	/**
+	 * Return bool that current request was aborted by client side
+	 *
+	 * @return boolean
+	 */
+	public static function aborted() {
+		if ($file = self::$abortCheckFile) {
+			(version_compare(PHP_VERSION, '5.3.0') >= 0) ? clearstatcache(true, $file) : clearstatcache();
+			if (! is_file($file)) {
+				// GC (expire 12h)
+				list($ptn) = explode('elfreq', $file);
+				self::GlobGC($ptn . 'elfreq*', 43200);
+				return true;
+			}
+		}
+		return false;
+	}
+	
+	/**
+	 * Garbage collection with glob
+	 *
+	 * @param string $pattern
+	 * @param integer $time
+	 */
+	public static function GlobGC($pattern, $time) {
+		$now = time();
+		foreach(glob($pattern) as $file) {
+			(filemtime($file) < ($now - $time)) && unlink($file);
+		}
+	}
+	
+	/**
+	 * Remove from files list hidden files and files with required mime types
+	 *
+	 * @param  array  $files  files info
+	 * @return array
+	 * @author Dmitry (dio) Levashov
+	 **/
+	protected function filter($files) {
+		$exists = array();
+		foreach ($files as $i => $file) {
+			if (isset($exists[$file['hash']]) || !empty($file['hidden']) || !$this->default->mimeAccepted($file['mime'])) {
+				unset($files[$i]);
+			}
+			$exists[$file['hash']] = true;
+		}
+		return array_values($files);
+	}
+
+	/**
+	 * unlock locked items on command completion
+	 *
+	 * @return void
+	 */
+	public function itemAutoUnlock() {
+		if ($this->autoUnlocks) {
+			foreach($this->autoUnlocks as $hash) {
+				$this->itemUnlock($hash);
+			}
+			$this->autoUnlocks = array();
+		}
+	}
+	
+	/**
+	 * Do unlock target item
+	 *
+	 * @param string $hash
+	 * @return boolean
+	 */
+	protected function itemUnlock($hash) {
+		if (! $this->itemLocked($hash)) {
+			return true;
+		}
+		$lock = elFinder::$commonTempPath . DIRECTORY_SEPARATOR . $hash . '.lock';
+		$cnt = file_get_contents($lock);
+		if (--$cnt < 1) {
+			unlink($lock);
+		} else {
+			file_put_contents($lock, $cnt, LOCK_EX);
+		}
+	}
+		
+	/**
+	 * Is item locked?
+	 *
+	 * @param string $hash
+	 * @return boolean
+	 */
+	protected function itemLocked($hash) {
+		if (! elFinder::$commonTempPath) {
+			return false;
+		}
+		$lock = elFinder::$commonTempPath . DIRECTORY_SEPARATOR . $hash . '.lock';
+		if (file_exists($lock)) {
+			if (filemtime($lock) + $this->itemLockExpire < time()) {
+				unlink($lock);
+				return false;
+			}
+			return true;
+		}
+
+		return false;
+	}
+	
+	/**
+	 * Output callback result with JavaScript that control elFinder
+	 * or HTTP redirect to callbackWindowURL
+	 *
+	 * @param  array  command arguments
+	 * @author Naoki Sawada
+	 */
+	protected function callback($args) {
+		$checkReg = '/[^a-zA-Z0-9;._-]/';
+		$node = (isset($args['node']) && !preg_match($checkReg, $args['node']))? $args['node'] : '';
+		$json = (isset($args['json']) && json_decode($args['json']))? $args['json'] : '{}';
+		$bind  = (isset($args['bind']) && !preg_match($checkReg, $args['bind']))? $args['bind'] : '';
+		$done = (!empty($args['done']));
+
+		while( ob_get_level() ) {
+			if (! ob_end_clean()) {
+				break;
+			}
+		}
+
+		if ($done || ! $this->callbackWindowURL) {
+			$script = '';
+			if ($node) {
+				if ($bind) {
+					$trigger = 'elf.trigger(\''.$bind.'\', data);';
+					$triggerdone = 'elf.trigger(\''.$bind.'done\');';
+					$triggerfail = 'elf.trigger(\''.$bind.'fail\', data);';
+				} else {
+					$trigger = $triggerdone = $triggerfail = '';
+				}
+				$script .= '
+					var w = window.opener || window.parent || window;
+					try {
+						var elf = w.document.getElementById(\''.$node.'\').elfinder;
+						if (elf) {
+							var data = '.$json.';
+							if (data.error) {
+								'.$triggerfail.'
+								elf.error(data.error);
+							} else {
+								data.warning && elf.error(data.warning);
+								data.removed && data.removed.length && elf.remove(data);
+								data.added   && data.added.length   && elf.add(data);
+								data.changed && data.changed.length && elf.change(data);
+								'.$trigger.'
+								'.$triggerdone.'
+								data.sync && elf.sync();
+							}
+						}
+					} catch(e) {
+						// for CORS
+						w.postMessage && w.postMessage(JSON.stringify({bind:\''.$bind.'\',data:'.$json.'}), \'*\');
+					}';
+			}
+			$script .= 'window.close();';
+
+			$out = '<!DOCTYPE html><html><head><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><script>'.$script.'</script></head><body><a href="#" onlick="window.close();return false;">Close this window</a></body></html>';
+
+			header('Content-Type: text/html; charset=utf-8');
+			header('Content-Length: '.strlen($out));
+			header('Cache-Control: private');
+			header('Pragma: no-cache');
+
+			echo $out;
+
+		} else {
+			$url = $this->callbackWindowURL;
+			$url .= ((strpos($url, '?') === false)? '?' : '&')
+				 . '&node=' . rawurlencode($node)
+				 . (($json !== '{}')? ('&json=' . rawurlencode($json)) : '')
+				 . ($bind? ('&bind=' .  rawurlencode($bind)) : '')
+				 . '&done=1';
+
+			header('Location: ' . $url);
+
+		}
+		throw new elFinderAbortException();
+	}
+
+	/**
+	 * Return file real path
+	 *
+	 * @param  string  $hash  file hash
+	 * @return string
+	 * @author Dmitry (dio) Levashov
+	 **/
+	public function realpath($hash)	{
+		if (($volume = $this->volume($hash)) == false) {
+			return false;
+		}
+		return $volume->realpath($hash);
+	}
+
+	/**
+	 * Update sesstion value of a NetVolume option
+	 *
+	 * @param string $netKey
+	 * @param string $optionKey
+	 * @param mixed  $val
+	 */
+	public function updateNetVolumeOption($netKey, $optionKey, $val) {
+		$netVolumes = $this->getNetVolumes();
+		if (is_string($netKey) && isset($netVolumes[$netKey]) && is_string($optionKey)) {
+			$netVolumes[$netKey][$optionKey] = $val;
+			$this->saveNetVolumes($netVolumes);
+		}
+	}
+	
+	protected function netmount($args) {
+		$options  = array();
+		$protocol = $args['protocol'];
+
+		if ($protocol === 'netunmount') {
+			if (! empty($args['user']) && $volume = $this->volume($args['user'])) {
+				if ($this->removeNetVolume($args['host'], $volume)) {
+					return array('removed' => array(array('hash' => $volume->root())));
+				}
+			}
+			return array('sync' => true, 'error' => $this->error(self::ERROR_NETUNMOUNT));
+		}
+
+		$driver   = isset(self::$netDrivers[$protocol]) ? self::$netDrivers[$protocol] : '';
+		$class    = 'elFinderVolume'.$driver;
+
+		if (!class_exists($class)) {
+			return array('error' => $this->error(self::ERROR_NETMOUNT, $args['host'], self::ERROR_NETMOUNT_NO_DRIVER));
+		}
+
+		if (!$args['path']) {
+			$args['path'] = '/';
+		}
+
+		foreach ($args as $k => $v) {
+			if ($k != 'options' && $k != 'protocol' && $v) {
+				$options[$k] = $v;
+			}
+		}
+
+		if (is_array($args['options'])) {
+			foreach ($args['options'] as $key => $value) {
+				$options[$key] = $value;
+			}
+		}
+
+		$volume = new $class();
+
+		// pass session handler
+		$volume->setSession($this->session);
+
+		if (method_exists($volume, 'netmountPrepare')) {
+			$options = $volume->netmountPrepare($options);
+			if (isset($options['exit'])) {
+				if ($options['exit'] === 'callback') {
+					$this->callback($options['out']);
+				}
+				return $options;
+			}
+		}
+
+		$netVolumes = $this->getNetVolumes();
+
+		if (! isset($options['id'])) {
+			// given fixed unique id
+			if (! $options['id'] = $this->getNetVolumeUniqueId($netVolumes)) {
+				return array('error' => $this->error(self::ERROR_NETMOUNT, $args['host'], 'Could\'t given volume id.'));
+			}
+		}
+
+		// load additional volume root options
+		if (! empty($this->optionsNetVolumes['*'])) {
+			$options = array_merge($options, $this->optionsNetVolumes['*']);
+		}
+		if (! empty($this->optionsNetVolumes[$protocol])) {
+			$options = array_merge($options, $this->optionsNetVolumes[$protocol]);
+		}
+
+		if (! $key =  $volume->netMountKey) {
+			$key = md5($protocol . '-' . serialize($options));
+		}
+		$options['netkey'] = $key;
+
+		if ($volume->mount($options)) {
+			$options['driver'] = $driver;
+			$netVolumes[$key]  = $options;
+			$this->saveNetVolumes($netVolumes);
+			$rootstat = $volume->file($volume->root());
+			return array('added' => array($rootstat));
+		} else {
+			$this->removeNetVolume(null, $volume);
+			return array('error' => $this->error(self::ERROR_NETMOUNT, $args['host'], implode(' ', $volume->error())));
+		}
+	}
+	
+	/**
+	 * "Open" directory
+	 * Return array with following elements
+	 *  - cwd          - opened dir info
+	 *  - files        - opened dir content [and dirs tree if $args[tree]]
+	 *  - api          - api version (if $args[init])
+	 *  - uplMaxSize   - if $args[init]
+	 *  - error        - on failed
+	 *
+	 * @param  array  command arguments
+	 * @return array
+	 * @author Dmitry (dio) Levashov
+	 **/
+	protected function open($args) {
+		$target = $args['target'];
+		$init   = !empty($args['init']);
+		$tree   = !empty($args['tree']);
+		$volume = $this->volume($target);
+		$cwd    = $volume ? $volume->dir($target) : false;
+		$hash   = $init ? 'default folder' : '#'.$target;
+		$sleep  = 0;
+		$compare = '';
+
+		// on init request we can get invalid dir hash -
+		// dir which can not be opened now, but remembered by client,
+		// so open default dir
+		if ((!$cwd || !$cwd['read']) && $init) {
+			$volume = $this->default;
+			$target = $volume->defaultPath();
+			$cwd    = $volume->dir($target);
+		}
+
+		if (!$cwd) {
+			return array('error' => $this->error(self::ERROR_OPEN, $hash, self::ERROR_DIR_NOT_FOUND));
+		}
+		if (!$cwd['read']) {
+			return array('error' => $this->error(self::ERROR_OPEN, $hash, self::ERROR_PERM_DENIED));
+		}
+
+		$files = array();
+
+		// get current working directory files list
+		if (($ls = $volume->scandir($cwd['hash'])) === false) {
+			return array('error' => $this->error(self::ERROR_OPEN, $cwd['name'], $volume->error()));
+		}
+
+		if (isset($cwd['dirs']) && $cwd['dirs'] != 1) {
+			$cwd = $volume->dir($target);
+		}
+
+		// get other volume root
+		if ($tree) {
+			foreach ($this->volumes as $id => $v) {
+				$files[] = $v->file($v->root());
+			}
+		}
+
+		// long polling mode
+		if ($args['compare']) {
+			$sleep = max(1, (int)$volume->getOption('lsPlSleep'));
+			$standby = (int)$volume->getOption('plStandby');
+			if ($standby > 0 && $sleep > $standby) {
+				$standby = $sleep;
+			}
+			$limit = max(0, floor($standby / $sleep)) + 1;
+			do {
+				elFinder::extendTimeLimit(30 + $sleep);
+				$_mtime = 0;
+				foreach($ls as $_f) {
+					$_mtime = max($_mtime, $_f['ts']);
+				}
+				$compare = strval(count($ls)).':'.strval($_mtime);
+				if ($compare !== $args['compare']) {
+					break;
+				}
+				if (--$limit) {
+					sleep($sleep);
+					$volume->clearstatcache();
+					if (($ls = $volume->scandir($cwd['hash'])) === false) {
+						break;
+					}
+				}
+			} while($limit);
+			if ($ls === false) {
+				return array('error' => $this->error(self::ERROR_OPEN, $cwd['name'], $volume->error()));
+			}
+		}
+
+		if ($ls) {
+			if ($files) {
+				$files = array_merge($files, $ls);
+			} else {
+				$files = $ls;
+			}
+		}
+
+		$result = array(
+			'cwd'     => $cwd,
+			'options' => $volume->options($cwd['hash']),
+			'files'   => $files
+		);
+
+		if ($compare) {
+			$result['cwd']['compare'] = $compare;
+		}
+
+		if (!empty($args['init'])) {
+			$result['api'] = sprintf('%.1F%03d', self::$ApiVersion, self::$ApiRevision);
+			$result['uplMaxSize'] = ini_get('upload_max_filesize');
+			$result['uplMaxFile'] = ini_get('max_file_uploads');
+			$result['netDrivers'] = array_keys(self::$netDrivers);
+			$result['maxTargets'] = $this->maxTargets;
+			if ($volume) {
+				$result['cwd']['root'] = $volume->root();
+			}
+			if (elfinder::$textMimes) {
+				$result['textMimes'] = elfinder::$textMimes;
+			}
+		}
+
+		return $result;
+	}
+	
+	/**
+	 * Return dir files names list
+	 *
+	 * @param  array  command arguments
+	 * @return array
+	 * @author Dmitry (dio) Levashov
+	 **/
+	protected function ls($args) {
+		$target = $args['target'];
+		$intersect = isset($args['intersect'])? $args['intersect'] : array();
+
+		if (($volume = $this->volume($target)) == false
+		|| ($list = $volume->ls($target, $intersect)) === false) {
+			return array('error' => $this->error(self::ERROR_OPEN, '#'.$target));
+		}
+		return array('list' => $list);
+	}
+	
+	/**
+	 * Return subdirs for required directory
+	 *
+	 * @param  array  command arguments
+	 * @return array
+	 * @author Dmitry (dio) Levashov
+	 **/
+	protected function tree($args) {
+		$target = $args['target'];
+
+		if (($volume = $this->volume($target)) == false
+		|| ($tree = $volume->tree($target)) == false) {
+			return array('error' => $this->error(self::ERROR_OPEN, '#'.$target));
+		}
+
+		return array('tree' => $tree);
+	}
+	
+	/**
+	 * Return parents dir for required directory
+	 *
+	 * @param  array  command arguments
+	 * @return array
+	 * @author Dmitry (dio) Levashov
+	 **/
+	protected function parents($args) {
+		$target = $args['target'];
+		$until = $args['until'];
+
+		if (($volume = $this->volume($target)) == false
+		|| ($tree = $volume->parents($target, false, $until)) == false) {
+			return array('error' => $this->error(self::ERROR_OPEN, '#'.$target));
+		}
+
+		return array('tree' => $tree);
+	}
+	
+	/**
+	 * Return new created thumbnails list
+	 *
+	 * @param  array  command arguments
+	 * @return array
+	 * @author Dmitry (dio) Levashov
+	 **/
+	protected function tmb($args) {
+
+		$result  = array('images' => array());
+		$targets = $args['targets'];
+
+		foreach ($targets as $target) {
+			elFinder::extendTimeLimit();
+
+			if (($volume = $this->volume($target)) != false
+			&& (($tmb = $volume->tmb($target)) != false)) {
+				$result['images'][$target] = $tmb;
+			}
+		}
+		return $result;
+	}
+
+	/**
+	 * Download files/folders as an archive file
+	 *
+	 * 1st: Return srrsy contains download archive file info
+	 * 2nd: Return array contains opened file pointer, root itself and required headers
+	 *
+	 * @param  array  command arguments
+	 * @return array
+	 * @author Naoki Sawada
+	 **/
+	protected function zipdl($args) {
+		$targets = $args['targets'];
+		$download = !empty($args['download']);
+		$h404    = 'HTTP/1.x 404 Not Found';
+
+		if (!$download) {
+			//1st: Return srrsy contains download archive file info
+			$error = array(self::ERROR_ARCHIVE);
+			if (($volume = $this->volume($targets[0])) !== false) {
+				if ($dlres = $volume->zipdl($targets)) {
+					$path = $dlres['path'];
+					register_shutdown_function(array('elFinder', 'rmFileInDisconnected'), $path);
+					if (count($targets) === 1) {
+						$name = basename($volume->path($targets[0]));
+					} else {
+						$name = $dlres['prefix'].'_Files';
+					}
+					$name .= '.'.$dlres['ext'];
+					$result = array(
+						'zipdl' => array(
+							'file' => basename($path),
+							'name' => $name,
+							'mime' => $dlres['mime']
+						)
+					);
+					return $result;
+				}
+				$error = array_merge($error, $volume->error());
+			}
+			return array('error' => $error);
+		} else {
+			// 2nd: Return array contains opened file pointer, root itself and required headers
+			if (count($targets) !== 4 || ($volume = $this->volume($targets[0])) == false) {
+				return array('error' => 'File not found', 'header' => $h404, 'raw' => true);
+			}
+			$file = $targets[1];
+			$path = $volume->getTempPath().DIRECTORY_SEPARATOR.$file;
+			// register auto delete on shutdown
+			$GLOBALS['elFinderTempFiles'][$path] = true;
+			if (!is_readable($path)) {
+				return array('error' => 'File not found', 'header' => $h404, 'raw' => true);
+			}
+			$name = $targets[2];
+			$mime = $targets[3];
+
+			$filenameEncoded = rawurlencode($name);
+			if (strpos($filenameEncoded, '%') === false) { // ASCII only
+				$filename = 'filename="'.$name.'"';
+			} else {
+				$ua = $_SERVER['HTTP_USER_AGENT'];
+				if (preg_match('/MSIE [4-8]/', $ua)) { // IE < 9 do not support RFC 6266 (RFC 2231/RFC 5987)
+					$filename = 'filename="'.$filenameEncoded.'"';
+				} elseif (strpos($ua, 'Chrome') === false && strpos($ua, 'Safari') !== false && preg_match('#Version/[3-5]#', $ua)) { // Safari < 6
+					$filename = 'filename="'.str_replace('"', '', $name).'"';
+				} else { // RFC 6266 (RFC 2231/RFC 5987)
+					$filename = 'filename*=UTF-8\'\''.$filenameEncoded;
+				}
+			}
+
+			$fp = fopen($path, 'rb');
+			$file = fstat($fp);
+			$result = array(
+				'pointer' => $fp,
+				'header'  => array(
+					'Content-Type: '.$mime,
+					'Content-Disposition: attachment; '.$filename,
+					'Content-Transfer-Encoding: binary',
+					'Content-Length: '.$file['size'],
+					'Accept-Ranges: none',
+					'Connection: close'
+				)
+			);
+			return $result;
+		}
+	}
+
+	/**
+	 * Required to output file in browser when volume URL is not set
+	 * Return array contains opened file pointer, root itself and required headers
+	 *
+	 * @param  array  command arguments
+	 * @return array
+	 * @author Dmitry (dio) Levashov
+	 **/
+	protected function file($args) {
+		$target   = $args['target'];
+		$download = !empty($args['download']);
+		$h403     = 'HTTP/1.x 403 Access Denied';
+		$h404     = 'HTTP/1.x 404 Not Found';
+
+		if (($volume = $this->volume($target)) == false) {
+			return array('error' => 'File not found', 'header' => $h404, 'raw' => true);
+		}
+
+		if (($file = $volume->file($target)) == false) {
+			return array('error' => 'File not found', 'header' => $h404, 'raw' => true);
+		}
+
+		if (!$file['read']) {
+			return array('error' => 'Access denied', 'header' => $h403, 'raw' => true);
+		}
+
+		if (($fp = $volume->open($target)) == false) {
+			return array('error' => 'File not found', 'header' => $h404, 'raw' => true);
+		}
+
+		// allow change MIME type by 'file.pre' callback functions
+		$mime = isset($args['mime'])? $args['mime'] : $file['mime'];
+		if ($download) {
+			$disp = 'attachment';
+		} else {
+			$dispInlineRegex = $volume->getOption('dispInlineRegex');
+			$inlineRegex = false;
+			if ($dispInlineRegex) {
+				$inlineRegex = '#' . str_replace('#', '\\#', $dispInlineRegex) . '#';
+				try {
+					preg_match($inlineRegex, '');
+				} catch(Exception $e) {
+					$inlineRegex = false;
+				}
+			}
+			if (!$inlineRegex) {
+				$inlineRegex = '#^(?:(?:image|text)|application/x-shockwave-flash$)#';
+			}
+			$disp  = preg_match($inlineRegex, $mime)? 'inline' : 'attachment';
+		}
+
+		$filenameEncoded = rawurlencode($file['name']);
+		if (strpos($filenameEncoded, '%') === false) { // ASCII only
+			$filename = 'filename="'.$file['name'].'"';
+		} else {
+			$ua = $_SERVER['HTTP_USER_AGENT'];
+			if (preg_match('/MSIE [4-8]/', $ua)) { // IE < 9 do not support RFC 6266 (RFC 2231/RFC 5987)
+				$filename = 'filename="'.$filenameEncoded.'"';
+			} elseif (strpos($ua, 'Chrome') === false && strpos($ua, 'Safari') !== false && preg_match('#Version/[3-5]#', $ua)) { // Safari < 6
+				$filename = 'filename="'.str_replace('"', '', $file['name']).'"';
+			} else { // RFC 6266 (RFC 2231/RFC 5987)
+				$filename = 'filename*=UTF-8\'\''.$filenameEncoded;
+			}
+		}
+
+		$result = array(
+			'volume'  => $volume,
+			'pointer' => $fp,
+			'info'    => $file,
+			'header'  => array(
+				'Content-Type: '.$mime,
+				'Content-Disposition: '.$disp.'; '.$filename,
+				'Content-Transfer-Encoding: binary',
+				'Content-Length: '.$file['size'],
+				'Connection: close'
+			)
+		);
+
+		// add cache control headers
+		if ($cacheHeaders = $volume->getOption('cacheHeaders')) {
+			$result['header'] = array_merge($result['header'], $cacheHeaders);
+		}
+
+		// check 'xsendfile'
+		$xsendfile = $volume->getOption('xsendfile');
+		$path = null;
+		if ($xsendfile) {
+			$info = stream_get_meta_data($fp);
+			if ($path = empty($info['uri'])? null : $info['uri']) {
+				$basePath = rtrim($volume->getOption('xsendfilePath'), DIRECTORY_SEPARATOR);
+				if ($basePath) {
+					$root = rtrim($volume->getRootPath(), DIRECTORY_SEPARATOR);
+					if (strpos($path, $root) === 0) {
+						$path = $basePath . substr($path, strlen($root));
+					} else {
+						$path = null;
+					}
+				}
+			}
+		}
+		if ($path) {
+			$result['header'][] = $xsendfile . ': ' . $path;
+			$result['info']['xsendfile'] = $xsendfile;
+		}
+
+		// add "Content-Location" if file has url data
+		if (isset($file['url']) && $file['url'] && $file['url'] != 1) {
+			$result['header'][] = 'Content-Location: '.$file['url'];
+		}
+		return $result;
+	}
+
+	/***************************************************************************/
+	/*                                   utils                                 */
+	/***************************************************************************/
+	
+	/**
+	 * Count total files size
+	 *
+	 * @param  array  command arguments
+	 * @return array
+	 * @author Dmitry (dio) Levashov
+	 **/
+	protected function size($args) {
+		$size = 0;
+		$files = 0;
+		$dirs = 0;
+		$itemCount = true;
+
+		foreach ($args['targets'] as $target) {
+			if (($volume = $this->volume($target)) == false
+			|| ($file = $volume->file($target)) == false
+			|| !$file['read']) {
+				return array('error' => $this->error(self::ERROR_OPEN, '#'.$target));
+			}
+
+			$volRes = $volume->size($target);
+			if (is_array($volRes)) {
+				if (! empty($volRes['size'])) {
+					$size += $volRes['size'];
+				}
+				if ($itemCount) {
+					if (! empty($volRes['files'])) {
+						$files += $volRes['files'];
+					}
+					if (! empty($volRes['dirs'])) {
+						$dirs += $volRes['dirs'];
+					}
+				}
+			} else if (is_numeric($volRes)) {
+				$size += $volRes;
+				$files = $dirs = 'unknown';
+				$itemCount = false;
+			}
+		}
+		return array('size' => $size, 'fileCnt' => $files, 'dirCnt' => $dirs);
+	}
+	
+	/**
+	 * Create directory
+	 *
+	 * @param  array  command arguments
+	 * @return array
+	 * @author Dmitry (dio) Levashov
+	 **/
+	protected function mkdir($args) {
+		$target = $args['target'];
+		$name   = $args['name'];
+		$dirs   = $args['dirs'];
+		if ($name === '' && !$dirs) {
+			return array('error' => $this->error(self::ERROR_INV_PARAMS, 'mkdir'));
+		}
+
+		if (($volume = $this->volume($target)) == false) {
+			return array('error' => $this->error(self::ERROR_MKDIR, $name, self::ERROR_TRGDIR_NOT_FOUND, '#'.$target));
+		}
+		if ($dirs) {
+			sort($dirs);
+			$reset = null;
+			$mkdirs = array();
+			foreach($dirs as $dir) {
+				$tgt =& $mkdirs;
+				$_names = explode('/', trim($dir, '/'));
+				foreach($_names as $_key => $_name) {
+					if (! isset($tgt[$_name])) {
+						$tgt[$_name] = array();
+					}
+					$tgt =& $tgt[$_name];
+				}
+				$tgt =& $reset;
+			}
+			$res = $this->ensureDirsRecursively($volume, $target, $mkdirs);
+			if ($res['error']) {
+				$errors = $volume->error();
+				if ($res['makes']) {
+					$this->rm(array('targets' => $res['makes']));
+				}
+				return array('error' => $this->error(self::ERROR_MKDIR, $res['error'][0], $errors));
+			} else {
+				return array('added' => $res['stats'], 'hashes' => $res['hashes']);
+			}
+		} else {
+			return ($dir = $volume->mkdir($target, $name)) == false
+				? array('error' => $this->error(self::ERROR_MKDIR, $name, $volume->error()))
+				: array('added' => array($dir));
+		}
+	}
+	
+	/**
+	 * Ensure directories recursively
+	 *
+	 * @param  object  $volume  Volume object
+	 * @param  string  $target  Target hash
+	 * @param  string  $dirs    Array of directory tree to ensure
+	 * @param  string  $path    Relative path form target hash
+	 * @return array|false      array('stats' => array([stat of maked directory]), 'hashes' => array('[path]' => '[hash]'), 'makes' => array([New directory hashes]), 'error' => array([Error name]))
+	 * @author Naoki Sawada
+	 **/
+	protected function ensureDirsRecursively($volume, $target, $dirs, $path = '') {
+		$res = array('stats' => array(), 'hashes' => array(), 'makes' => array(), 'error' => array());
+		foreach($dirs as $name => $sub) {
+			$name = (string)$name;
+			$newDir = null;
+			if ((($parent = $volume->realpath($target)) && ($dir = $volume->dir($volume->getHash($parent, $name)))) || ($newDir = $volume->mkdir($target, $name))) {
+				$_path = $path . '/' . $name;
+				if ($newDir) {
+					$res['makes'][] = $newDir['hash'];
+					$dir = $newDir;
+				}
+				$res['stats'][] = $dir;
+				$res['hashes'][$_path] = $dir['hash'];
+				if (count($sub)) {
+					$res = array_merge_recursive($res, $this->ensureDirsRecursively($volume, $dir['hash'], $sub, $_path));
+					if ($res['error']) {
+						break;
+					}
+				}
+			} else {
+				$res['error'][] = $name;
+			}
+		}
+		return $res;
+	}
+	
+	/**
+	 * Remove dirs/files
+	 *
+	 * @param array  command arguments
+	 * @return array
+	 * @author Dmitry (dio) Levashov
+	 **/
+	protected function rm($args) {
+		$targets = is_array($args['targets']) ? $args['targets'] : array();
+		$result  = array('removed' => array());
+
+		foreach ($targets as $target) {
+			elFinder::extendTimeLimit();
+
+			if (($volume = $this->volume($target)) == false) {
+				$result['warning'] = $this->error(self::ERROR_RM, '#'.$target, self::ERROR_FILE_NOT_FOUND);
+				break;
+			}
+
+			if ($this->itemLocked($target)) {
+				$rm = $volume->file($target);
+				$result['warning'] = $this->error(self::ERROR_LOCKED, $rm['name']);
+				break;
+			}
+
+			if (!$volume->rm($target)) {
+				$result['warning'] = $this->error($volume->error());
+				break;
+			}
+		}
+
+		return $result;
+	}
+	
+	/**
+	 * Create empty file
+	 *
+	 * @param  array  command arguments
+	 * @return array
+	 * @author Dmitry (dio) Levashov
+	 **/
+	protected function mkfile($args) {
+		$target = $args['target'];
+		$name   = $args['name'];
+
+		if (($volume = $this->volume($target)) == false) {
+			return array('error' => $this->error(self::ERROR_MKFILE, $name, self::ERROR_TRGDIR_NOT_FOUND, '#'.$target));
+		}
+
+		return ($file = $volume->mkfile($target, $args['name'])) == false
+			? array('error' => $this->error(self::ERROR_MKFILE, $name, $volume->error()))
+			: array('added' => array($file));
+	}
+	
+	/**
+	 * Duplicate file - create copy with "copy %d" suffix
+	 *
+	 * @param array  $args  command arguments
+	 * @return array
+	 * @author Dmitry (dio) Levashov
+	 **/
+	protected function duplicate($args) {
+		$targets = is_array($args['targets']) ? $args['targets'] : array();
+		$result  = array('added' => array());
+		$suffix  = empty($args['suffix']) ? 'copy' : $args['suffix'];
+
+		$this->itemLock($targets);
+
+		foreach ($targets as $target) {
+			elFinder::extendTimeLimit();
+
+			if (($volume = $this->volume($target)) == false
+			|| ($src = $volume->file($target)) == false) {
+				$result['warning'] = $this->error(self::ERROR_COPY, '#'.$target, self::ERROR_FILE_NOT_FOUND);
+				break;
+			}
+
+			if (($file = $volume->duplicate($target, $suffix)) == false) {
+				$result['warning'] = $this->error($volume->error());
+				break;
+			}
+
+			$result['added'][] = $file;
+		}
+
+		return $result;
+	}
+	
+	/**
+	 * Do lock target item
+	 *
+	 * @param array|string $hashes
+	 * @param boolean $autoUnlock
+	 * @return boolean
+	 */
+	protected function itemLock($hashes, $autoUnlock = true) {
+		if (! elFinder::$commonTempPath) {
+			return false;
+		}
+		if (! is_array($hashes)) {
+			$hashes = array($hashes);
+		}
+		foreach($hashes as $hash) {
+			$lock = elFinder::$commonTempPath . DIRECTORY_SEPARATOR . $hash . '.lock';
+			if ($this->itemLocked($hash)) {
+				$cnt = file_get_contents($lock) + 1;
+			} else {
+				$cnt = 1;
+			}
+			if (file_put_contents($lock, $cnt, LOCK_EX)) {
+				if ($autoUnlock) {
+					$this->autoUnlocks[] = $hash;
+				}
+			}
+		}
+	}
+	
+	/**
+	 * Return has subdirs
+	 *
+	 * @param  array  command arguments
+	 * @return array
+	 * @author Dmitry Naoki Sawada
+	 **/
+	protected function subdirs($args) {
+
+		$result  = array('subdirs' => array());
+		$targets = $args['targets'];
+
+		foreach ($targets as $target) {
+			if (($volume = $this->volume($target)) !== false) {
+				$result['subdirs'][$target] = $volume->subdirs($target)? 1 : 0;
+			}
+		}
+		return $result;
+	}
+	
+	/**
+	 * Get remote contents with cURL
+	 *
+	 * @param  string   $url     target url
+	 * @param  int      $timeout timeout (sec)
+	 * @param  int      $redirect_max redirect max count
+	 * @param  string   $ua
+	 * @param  resource $outfp
+	 * @return string or bool(false)
+	 * @retval string contents
+	 * @retval false  error
+	 * @author Naoki Sawada
+	 **/
+	 protected function curl_get_contents( &$url, $timeout, $redirect_max, $ua, $outfp ){
+		$ch = curl_init();
+		curl_setopt( $ch, CURLOPT_URL, $url );
+		curl_setopt( $ch, CURLOPT_HEADER, false );
+		if ($outfp) {
+			curl_setopt( $ch, CURLOPT_FILE, $outfp );
+		} else {
+			curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
+			curl_setopt( $ch, CURLOPT_BINARYTRANSFER, true );
+		}
+		curl_setopt( $ch, CURLOPT_LOW_SPEED_LIMIT, 1 );
+		curl_setopt( $ch, CURLOPT_LOW_SPEED_TIME, $timeout );
+		curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
+		curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1);
+		curl_setopt( $ch, CURLOPT_MAXREDIRS, $redirect_max);
+		curl_setopt( $ch, CURLOPT_USERAGENT, $ua);
+		$result = curl_exec( $ch );
+		$url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
+		curl_close( $ch );
+		return $outfp? $outfp : $result;
+	}
+	
+	/**
+	 * Get remote contents with fsockopen()
+	 *
+	 * @param  string   $url          url
+	 * @param  int      $timeout      timeout (sec)
+	 * @param  int      $redirect_max redirect max count
+	 * @param  string   $ua
+	 * @param  resource $outfp
+	 * @return string or bool(false)
+	 * @retval string contents
+	 * @retval false  error
+	 * @author Naoki Sawada
+	 */
+	protected function fsock_get_contents( &$url, $timeout, $redirect_max, $ua, $outfp ) {
+
+		$connect_timeout = 3;
+		$connect_try = 3;
+		$method = 'GET';
+		$readsize = 4096;
+		$ssl = '';
+
+		$getSize = null;
+		$headers = '';
+
+		$arr = parse_url($url);
+		if (!$arr){
+			// Bad request
+			return false;
+		}
+		if ($arr['scheme'] === 'https') {
+			$ssl = 'ssl://';
+		}
+
+		// query
+		$arr['query'] = isset($arr['query']) ? '?'.$arr['query'] : '';
+		// port
+		$arr['port'] = isset($arr['port']) ? $arr['port'] : ($ssl? 443 : 80);
+
+		$url_base = $arr['scheme'].'://'.$arr['host'].':'.$arr['port'];
+		$url_path = isset($arr['path']) ? $arr['path'] : '/';
+		$uri = $url_path.$arr['query'];
+
+		$query = $method.' '.$uri." HTTP/1.0\r\n";
+		$query .= "Host: ".$arr['host']."\r\n";
+		$query .= "Accept: */*\r\n";
+		$query .= "Connection: close\r\n";
+		if (!empty($ua)) $query .= "User-Agent: ".$ua."\r\n";
+		if (!is_null($getSize)) $query .= 'Range: bytes=0-' . ($getSize - 1) . "\r\n";
+
+		$query .= $headers;
+
+		$query .= "\r\n";
+
+		$fp = $connect_try_count = 0;
+		while( !$fp && $connect_try_count < $connect_try ) {
+
+			$errno = 0;
+			$errstr = "";
+			$fp =  fsockopen(
+				$ssl.$arr['host'],
+				$arr['port'],
+				$errno,$errstr,$connect_timeout);
+			if ($fp) break;
+			$connect_try_count++;
+			if (connection_aborted()) {
+				throw new elFinderAbortException();
+			}
+			sleep(1); // wait 1sec
+		}
+
+		$fwrite = 0;
+		for ($written = 0; $written < strlen($query); $written += $fwrite) {
+			$fwrite = fwrite($fp, substr($query, $written));
+			if (!$fwrite) {
+				break;
+			}
+		}
+
+		$response = '';
+
+		if ($timeout) {
+			socket_set_timeout($fp, $timeout);
+		}
+
+		$_response = '';
+		$header = '';
+		while($_response !== "\r\n"){
+			$_response = fgets($fp, $readsize);
+			$header .= $_response;
+		};
+
+		$rccd = array_pad(explode(' ',$header,2), 2, ''); // array('HTTP/1.1','200')
+		$rc = (int)$rccd[1];
+
+		$ret = false;
+		// Redirect
+		switch ($rc) {
+			case 307: // Temporary Redirect
+			case 303: // See Other
+			case 302: // Moved Temporarily
+			case 301: // Moved Permanently
+				$matches = array();
+				if (preg_match('/^Location: (.+?)(#.+)?$/im',$header,$matches) && --$redirect_max > 0) {
+					$_url = $url;
+					$url = trim($matches[1]);
+					$hash = isset($matches[2])? trim($matches[2]) : '';
+					if (!preg_match('/^https?:\//',$url)) { // no scheme
+						if ($url{0} != '/') { // Relative path
+							// to Absolute path
+							$url = substr($url_path,0,strrpos($url_path,'/')).'/'.$url;
+						}
+						// add sheme,host
+						$url = $url_base.$url;
+					}
+					if ($_url !== $url) {
+						fclose($fp);
+						return $this->fsock_get_contents( $url, $timeout, $redirect_max, $ua, $outfp );
+					}
+				}
+				break;
+			case 200:
+				$ret = true;
+		}
+		if (! $ret) {
+			fclose($fp);
+			return false;
+		}
+
+		$body = '';
+		if (!$outfp) {
+			$outfp = fopen('php://temp', 'rwb');
+			$body = true;
+		}
+		while(fwrite($outfp, fread($fp, $readsize))) {
+			if ($timeout) {
+				$_status = socket_get_status($fp);
+				if ($_status['timed_out']) {
+					fclose($outfp);
+					fclose($fp);
+					return false; // Request Time-out
+				}
+			}
+		}
+		if ($body) {
+			rewind($outfp);
+			$body = stream_get_contents($outfp);
+			fclose($outfp);
+			$outfp = null;
+		}
+
+		fclose($fp);
+
+		return $outfp? $outfp : $body; // Data
+	}
+	
+	/**
+	 * chmod
+	 *
+	 * @param array  command arguments
+	 * @return array
+	 * @author David Bartle
+	 **/
+	protected function chmod($args) {
+		$targets = $args['targets'];
+		$mode    = intval((string)$args['mode'], 8);
+
+		if (!is_array($targets)) {
+			$targets = array($targets);
+		}
+
+		$result = array();
+
+		if (($volume = $this->volume($targets[0])) == false) {
+			$result['error'] = $this->error(self::ERROR_CONF_NO_VOL);
+			return $result;
+		}
+
+		$this->itemLock($targets);
+
+		$files = array();
+		$errors = array();
+		foreach($targets as $target) {
+			elFinder::extendTimeLimit();
+
+			$file = $volume->chmod($target, $mode);
+			if ($file) {
+				$files = array_merge($files, is_array($file)? $file : array($file));
+			} else {
+				$errors = array_merge($errors, $volume->error());
+			}
+		}
+
+		if ($files) {
+			$result['changed'] = $files;
+			if ($errors) {
+				$result['warning'] = $this->error($errors);
+			}
+		} else {
+			$result['error'] = $this->error($errors);
+		}
+
+		return $result;
+	}
+	
+	/***************************************************************************/
+	/*                           static  utils                                 */
+	/***************************************************************************/
+	
+	/**
+	 * Save uploaded files
+	 *
+	 * @param  array
+	 * @return array
+	 * @author Dmitry (dio) Levashov
+	 **/
+	protected function upload($args) {
+		$ngReg  = '/[\/\\?*:|"<>]/';
+		$target = $args['target'];
+		$volume = $this->volume($target);
+		$files  = isset($args['FILES']['upload']) && is_array($args['FILES']['upload']) ? $args['FILES']['upload'] : array();
+		$header = empty($args['html']) ? array() : array('header' => 'Content-Type: text/html; charset=utf-8');
+		$result = array_merge(array('added' => array()), $header);
+		$paths  = $args['upload_path']? $args['upload_path'] : array();
+		$chunk  = $args['chunk']? $args['chunk'] : '';
+		$cid    = $args['cid']? (int)$args['cid'] : '';
+		$mtimes = $args['mtime']? $args['mtime'] : array();
+
+		if (!$volume) {
+			return array_merge(array('error' => $this->error(self::ERROR_UPLOAD, self::ERROR_TRGDIR_NOT_FOUND, '#'.$target)), $header);
+		}
+
+		// check $chunk
+		if (strpos($chunk, '/') !== false || strpos($chunk, '\\') !== false) {
+			return array('error' => $this->error(self::ERROR_UPLOAD));
+		}
+
+		if ($args['overwrite'] !== '') {
+			$volume->setUploadOverwrite($args['overwrite']);
+		}
+
+		$renames = $hashes = array();
+		$suffix = '~';
+		if ($args['renames'] && is_array($args['renames'])) {
+			$renames = array_flip($args['renames']);
+			if (is_string($args['suffix']) && ! preg_match($ngReg, $args['suffix'])) {
+				$suffix = $args['suffix'];
+			}
+		}
+		if ($args['hashes'] && is_array($args['hashes'])) {
+			$hashes = array_flip($args['hashes']);
+		}
+
+		$this->itemLock($target);
+
+		// file extentions table by MIME
+		$extTable = array_flip(array_unique($volume->getMimeTable()));
+
+		if (empty($files)) {
+			if (isset($args['upload']) && is_array($args['upload']) && ($tempDir = $this->getTempDir($volume->getTempPath()))) {
+				$names = array();
+				foreach($args['upload'] as $i => $url) {
+					// check chunked file upload commit
+					if ($chunk) {
+						if ($url === 'chunkfail' && $args['mimes'] === 'chunkfail') {
+							$this->checkChunkedFile(null, $chunk, $cid, $tempDir);
+							if (preg_match('/^(.+)(\.\d+_(\d+))\.part$/s', $chunk, $m)) {
+								$result['warning'] = $this->error(self::ERROR_UPLOAD_FILE, $m[1], self::ERROR_UPLOAD_TRANSFER);
+							}
+							return $result;
+						} else {
+							$tmpfname = $tempDir . '/' . $chunk;
+							$files['tmp_name'][$i] = $tmpfname;
+							$files['name'][$i] = $url;
+							$files['error'][$i] = 0;
+							$GLOBALS['elFinderTempFiles'][$tmpfname] = true;
+							break;
+						}
+					}
+
+					$tmpfname = $tempDir . DIRECTORY_SEPARATOR . 'ELF_FATCH_' . md5($url.microtime(true));
+					$GLOBALS['elFinderTempFiles'][$tmpfname] = true;
+
+					$_name = '';
+					// check is data:
+					if (substr($url, 0, 5) === 'data:') {
+						list($data, $args['name'][$i]) = $this->parse_data_scheme($url, $extTable, $args);
+					} else {
+						$fp = fopen($tmpfname, 'wb');
+						$data = $this->get_remote_contents($url, 30, 5, 'Mozilla/5.0', $fp);
+						// to check connection is aborted
+						elFinder::extendTimeLimit();
+						$_name = preg_replace('~^.*?([^/#?]+)(?:\?.*)?(?:#.*)?$~', '$1', rawurldecode($url));
+						// Check `Content-Disposition` response header
+						if ($data && ($headers = get_headers($url, true)) && !empty($headers['Content-Disposition'])) {
+							if (preg_match('/filename\*?=(?:([a-zA-Z0-9_-]+?)\'\')?"?([a-z0-9_.~%-]+)"?/i', $headers['Content-Disposition'], $m)) {
+								$_name = rawurldecode($m[2]);
+								if ($m[1] && strtoupper($m[1]) !== 'UTF-8' && function_exists('mb_convert_encoding')) {
+									$_name = mb_convert_encoding($_name, 'UTF-8', $m[1]);
+								}
+							}
+						}
+					}
+					if ($data) {
+						if (isset($args['name'][$i])) {
+							$_name = $args['name'][$i];
+						}
+						if ($_name) {
+							$_ext = '';
+							if (preg_match('/(\.[a-z0-9]{1,7})$/', $_name, $_match)) {
+								$_ext = $_match[1];
+							}
+							if ((is_resource($data) && fclose($data)) || file_put_contents($tmpfname, $data)) {
+								$GLOBALS['elFinderTempFiles'][$tmpfname] = true;
+								$_name = preg_replace($ngReg, '_', $_name);
+								list($_a, $_b) = array_pad(explode('.', $_name, 2), 2, '');
+								if ($_b === '') {
+									if ($_ext) {
+										rename($tmpfname, $tmpfname . $_ext);
+										$tmpfname = $tmpfname . $_ext;
+									}
+									$_b = $this->detectFileExtension($volume, $tmpfname);
+									$_name = $_a.$_b;
+								} else {
+									$_b = '.'.$_b;
+								}
+								if (isset($names[$_name])) {
+									$_name = $_a.'_'.$names[$_name]++.$_b;
+								} else {
+									$names[$_name] = 1;
+								}
+								$files['tmp_name'][$i] = $tmpfname;
+								$files['name'][$i] = $_name;
+								$files['error'][$i] = 0;
+								// set to auto rename
+								$volume->setUploadOverwrite(false);
+							} else {
+								unlink($tmpfname);
+							}
+						}
+					}
+				}
+			}
+			if (empty($files)) {
+				return array_merge(array('error' => $this->error(self::ERROR_UPLOAD, self::ERROR_UPLOAD_NO_FILES)), $header);
+			}
+		}
+
+		$addedDirs = array();
+		foreach ($files['name'] as $i => $name) {
+			if (($error = $files['error'][$i]) > 0) {
+				$result['warning'] = $this->error(self::ERROR_UPLOAD_FILE, $name, $error == UPLOAD_ERR_INI_SIZE || $error == UPLOAD_ERR_FORM_SIZE ? self::ERROR_UPLOAD_FILE_SIZE : self::ERROR_UPLOAD_TRANSFER);
+				$this->uploadDebug = 'Upload error code: '.$error;
+				break;
+			}
+
+			$tmpname = $files['tmp_name'][$i];
+			$thash = ($paths && isset($paths[$i]))? $paths[$i] : $target;
+			$mtime = isset($mtimes[$i])? $mtimes[$i] : 0;
+			if ($name === 'blob') {
+				if ($chunk) {
+					if ($tempDir = $this->getTempDir($volume->getTempPath())) {
+						list($tmpname, $name) = $this->checkChunkedFile($tmpname, $chunk, $cid, $tempDir, $volume);
+						if ($tmpname) {
+							if ($name === false) {
+								preg_match('/^(.+)(\.\d+_(\d+))\.part$/s', $chunk, $m);
+								$result['error'] = $this->error(self::ERROR_UPLOAD_FILE, $m[1], $tmpname);
+								$result['_chunkfailure'] = true;
+								$this->uploadDebug = 'Upload error: ' . $tmpname;
+							} else if ($name) {
+								$result['_chunkmerged'] = basename($tmpname);
+								$result['_name'] = $name;
+								$result['_mtime'] = $mtime;
+							}
+						}
+					} else {
+						$result['error'] = $this->error(self::ERROR_UPLOAD_FILE, $chunk, self::ERROR_UPLOAD_TRANSFER);
+						$this->uploadDebug = 'Upload error: unable open tmp file';
+					}
+					return $result;
+				} else {
+					// for form clipboard with Google Chrome or Opera
+					$name = 'image.png';
+				}
+			}
+
+			// Set name if name eq 'image.png' and $args has 'name' array, e.g. clipboard data
+			if (strtolower(substr($name, 0, 5)) === 'image' && is_array($args['name']) && isset($args['name'][$i])) {
+				$type = $files['type'][$i];
+				$name = $args['name'][$i];
+				$ext = isset($extTable[$type])? '.' . $extTable[$type] : '';
+				if ($ext) {
+					$name = preg_replace('/\.[^.]*$/', '', $name);
+				}
+				$name .= $ext;
+			}
+
+			// do hook function 'upload.presave'
+			if (! empty($this->listeners['upload.presave'])) {
+				foreach($this->listeners['upload.presave'] as $handler) {
+					call_user_func_array($handler, array(&$thash, &$name, $tmpname, $this, $volume));
+				}
+			}
+
+			if ($mtime) {
+				// for keep timestamp option in the LocalFileSystem volume
+				touch($tmpname, $mtime);
+			}
+
+			if (($fp = fopen($tmpname, 'rb')) == false) {
+				$result['warning'] = $this->error(self::ERROR_UPLOAD_FILE, $name, self::ERROR_UPLOAD_TRANSFER);
+				$this->uploadDebug = 'Upload error: unable open tmp file';
+				if (! is_uploaded_file($tmpname)) {
+					if (unlink($tmpname)) unset($GLOBALS['elFinderTempFiles'][$tmpfname]);
+					continue;
+				}
+				break;
+			}
+			$rnres = array();
+			if ($thash !== '' && $thash !== $target) {
+				if ($dir = $volume->dir($thash)) {
+					$_target = $thash;
+					if (! isset($addedDirs[$thash])) {
+						$addedDirs[$thash] = true;
+						$result['added'][] =$dir;
+					}
+				} else {
+					$result['error'] = $this->error(self::ERROR_UPLOAD, self::ERROR_TRGDIR_NOT_FOUND, 'hash@'.$thash);
+					break;
+				}
+			} else {
+				$_target = $target;
+				// file rename for backup
+				if (isset($renames[$name])) {
+					$dir = $volume->realpath($_target);
+					if (isset($hashes[$name])) {
+						$hash = $hashes[$name];
+					} else {
+						$hash = $volume->getHash($dir, $name);
+					}
+					$rnres = $this->rename(array('target' => $hash, 'name' => $volume->uniqueName($dir, $name, $suffix, true, 0)));
+					if (!empty($rnres['error'])) {
+						$result['warning'] = $rnres['error'];
+						break;
+					}
+				}
+			}
+			if (! $_target || ($file = $volume->upload($fp, $_target, $name, $tmpname, $hashes)) === false) {
+				$result['warning'] = $this->error(self::ERROR_UPLOAD_FILE, $name, $volume->error());
+				fclose($fp);
+				if (! is_uploaded_file($tmpname)) {
+					if (unlink($tmpname)) unset($GLOBALS['elFinderTempFiles'][$tmpname]);
+					continue;
+				}
+				break;
+			}
+
+			is_resource($fp) && fclose($fp);
+			if (! is_uploaded_file($tmpname)){
+				clearstatcache();
+				if (!is_file($tmpname) || unlink($tmpname)) {
+					unset($GLOBALS['elFinderTempFiles'][$tmpname]);
+				}
+			}
+			$result['added'][] = $file;
+			if ($rnres) {
+				$result = array_merge_recursive($result, $rnres);
+			}
+		}
+		if ($GLOBALS['elFinderTempFiles']) {
+			foreach(array_keys($GLOBALS['elFinderTempFiles']) as $_temp) {
+				 is_file($_temp) && unlink($_temp);
+			}
+		}
+		$result['removed'] = $volume->removed();
+
+		if (!empty($args['node'])) {
+			$result['callback'] = array(
+				'node' => $args['node'],
+				'bind' => 'upload'
+			);
+		}
+		return $result;
+	}
+	
+	/**
+	 * Get temporary directory path
+	 *
+	 * @param  string $volumeTempPath
+	 * @return string
+	 * @author Naoki Sawada
+	 */
+	private function getTempDir($volumeTempPath = null) {
+		$testDirs = array();
+		if ($this->uploadTempPath) {
+			$testDirs[] = rtrim(realpath($this->uploadTempPath), DIRECTORY_SEPARATOR);
+		}
+		if ($volumeTempPath) {
+			$testDirs[] = rtrim(realpath($volumeTempPath), DIRECTORY_SEPARATOR);
+		}
+		if (function_exists('sys_get_temp_dir')) {
+			$testDirs[] = sys_get_temp_dir();
+		}
+		$tempDir = '';
+		foreach($testDirs as $testDir) {
+			if (!$testDir || !is_dir($testDir)) continue;
+			if (is_writable($testDir)) {
+				$tempDir = $testDir;
+				$gc = time() - 3600;
+				foreach(glob($tempDir . DIRECTORY_SEPARATOR .'ELF*') as $cf) {
+					if (filemtime($cf) < $gc) {
+						unlink($cf);
+					}
+				}
+				break;
+			}
+		}
+		return $tempDir;
+	}
+
+	/**
+	 * Check chunked upload files
+	 *
+	 * @param string $tmpname uploaded temporary file path
+	 * @param string $chunk uploaded chunk file name
+	 * @param string $cid uploaded chunked file id
+	 * @param string $tempDir temporary dirctroy path
+	 * @param null $volume
+	 * @return array or (empty, empty)
+	 * @author Naoki Sawada
+	 */
+	private function checkChunkedFile($tmpname, $chunk, $cid, $tempDir, $volume = null) {
+		if (preg_match('/^(.+)(\.\d+_(\d+))\.part$/s', $chunk, $m)) {
+			$fname = $m[1];
+			$encname = md5($cid . '_' . $fname);
+			$base = $tempDir . DIRECTORY_SEPARATOR . 'ELF' . $encname;
+			$clast = intval($m[3]);
+			if (is_null($tmpname)) {
+				ignore_user_abort(true);
+				// chunked file upload fail
+				foreach(glob($base . '*') as $cf) {
+					unlink($cf);
+				}
+				ignore_user_abort(false);
+				return;
+			}
+
+			$range = isset($_POST['range'])? trim($_POST['range']) : '';
+			if ($range && preg_match('/^(\d+),(\d+),(\d+)$/', $range, $ranges)) {
+				$start = $ranges[1];
+				$len   = $ranges[2];
+				$size  = $ranges[3];
+				$tmp = $base . '.part';
+				$csize = filesize($tmpname);
+
+				$tmpExists = is_file($tmp);
+				if (!$tmpExists) {
+					// check upload max size
+					$uploadMaxSize = $volume->getUploadMaxSize();
+					if ($uploadMaxSize > 0 && $size > $uploadMaxSize) {
+						return array(self::ERROR_UPLOAD_FILE_SIZE, false);
+					}
+					// make temp file
+					$ok = false;
+					if ($fp = fopen($tmp, 'wb')) {
+						flock($fp, LOCK_EX);
+						$ok = ftruncate($fp, $size);
+						flock($fp, LOCK_UN);
+						fclose($fp);
+						touch($base);
+					}
+					if (!$ok) {
+						unlink($tmp);
+						return array(self::ERROR_UPLOAD_TEMP, false);
+					}
+				} else {
+					// wait until makeing temp file (for anothor session)
+					$cnt = 1200; // Time limit 120 sec
+					while(!is_file($base) && --$cnt) {
+						usleep(100000); // wait 100ms
+					}
+					if (!$cnt) {
+						return array(self::ERROR_UPLOAD_TEMP, false);
+					}
+				}
+
+				// check size info
+				if ($len != $csize || $start + $len > $size || ($tmpExists && $size != filesize($tmp))) {
+					return array(self::ERROR_UPLOAD_TEMP, false);
+				}
+
+				// write chunk data
+				$writelen = 0;
+				$src = fopen($tmpname, 'rb');
+				$fp = fopen($tmp, 'cb');
+				fseek($fp, $start);
+				$writelen = stream_copy_to_stream($src, $fp, $len);
+				fclose($fp);
+				fclose($src);
+
+				try {
+					// to check connection is aborted
+					elFinder::extendTimeLimit();
+				} catch (elFinderAbortException $e) {
+					unlink($tmpname);
+					is_file($tmp) && unlink($tmp);
+					is_file($base) && unlink($base);
+					throw $e;
+				}
+
+				if ($writelen != $len) {
+					return array(self::ERROR_UPLOAD_TEMP, false);
+				}
+
+				// write counts
+				file_put_contents($base, "\0", FILE_APPEND | LOCK_EX);
+
+				if (filesize($base) >= $clast + 1) {
+					// Completion
+					unlink($base);
+					return array($tmp, $fname);
+				}
+			} else {
+				// old way
+				$part = $base . $m[2];
+				if (move_uploaded_file($tmpname, $part)) {
+					chmod($part, 0600);
+					if ($clast < count(glob($base . '*'))) {
+						$parts = array();
+						for ($i = 0; $i <= $clast; $i++) {
+							$name = $base . '.' . $i . '_' . $clast;
+							if (is_readable($name)) {
+								$parts[] = $name;
+							} else {
+								$parts = null;
+								break;
+							}
+						}
+						if ($parts) {
+							if (!is_file($base)) {
+								touch($base);
+								if ($resfile = tempnam($tempDir, 'ELF')) {
+									$target = fopen($resfile, 'wb');
+									foreach($parts as $f) {
+										$fp = fopen($f, 'rb');
+										while (!feof($fp)) {
+											fwrite($target, fread($fp, 8192));
+										}
+										fclose($fp);
+										unlink($f);
+									}
+									fclose($target);
+									unlink($base);
+									return array($resfile, $fname);
+								}
+								unlink($base);
+							}
+						}
+					}
+				}
+			}
+		}
+		return array('', '');
+	}
+
+	/**
+	 * Parse Data URI scheme
+	 *
+	 * @param  string $str
+	 * @param  array  $extTable
+	 * @param  array  $args
+	 * @return array
+	 * @author Naoki Sawada
+	 */
+	protected function parse_data_scheme( $str, $extTable, $args = null) {
+		$data = $name = '';
+		if ($fp = fopen('data://'.substr($str, 5), 'rb')) {
+			if ($data = stream_get_contents($fp)) {
+				$meta = stream_get_meta_data($fp);
+				$ext = isset($extTable[$meta['mediatype']])? '.' . $extTable[$meta['mediatype']] : '';
+				// Set name if name eq 'image.png' and $args has 'name' array, e.g. clipboard data
+				if (is_array($args['name']) && isset($args['name'][0])) {
+					$name = $args['name'][0];
+					if ($ext) {
+						$name = preg_replace('/\.[^.]*$/', '', $name);
+					}
+				} else {
+					$name = substr(md5($data), 0, 8);
+				}
+				$name .= $ext;
+			}
+			fclose($fp);
+		}
+		return array($data, $name);
+	}
+
+	/**
+	* Get remote contents
+	*
+	* @param  string   $url     target url
+	* @param  int      $timeout timeout (sec)
+	* @param  int      $redirect_max redirect max count
+	* @param  string   $ua
+	* @param  resource $fp
+	* @return string or bool(false)
+	* @retval string contents
+	* @rettval false  error
+	* @author Naoki Sawada
+	**/
+	protected function get_remote_contents( &$url, $timeout = 30, $redirect_max = 5, $ua = 'Mozilla/5.0', $fp = null ) {
+		$method = (function_exists('curl_exec') && !ini_get('safe_mode') && !ini_get('open_basedir'))? 'curl_get_contents' : 'fsock_get_contents';
+		return $this->$method( $url, $timeout, $redirect_max, $ua, $fp );
+	}
+
+	/**
+	 * Detect file type extension by local path
+	 *
+	 * @param  object $volume elFinderVolumeDriver instance
+	 * @param  string $path Local path
+	 * @return string file type extension with dot
+	 * @author Naoki Sawada
+	 */
+	protected function detectFileExtension($volume, $path) {
+		$mime = $this->detectMimeType($path);
+		$ext = $mime !== 'unknown'? $volume->getExtentionByMime($mime) : '';
+		return $ext? ('.' . $ext) : '';
+	}
+
+	/**
+	 * Detect file MIME Type by local path
+	 *
+	 * @param  string $path Local path
+	 * @return string file MIME Type
+	 * @author Naoki Sawada
+	 */
+	protected function detectMimeType($path) {
+		static $type, $finfo, $volume;
+		if (!$type) {
+			$keys = array_keys($this->volumes);
+			$volume = $this->volumes[$keys[0]];
+
+			if (class_exists('finfo', false)) {
+				$tmpFileInfo = explode(';', finfo_file(finfo_open(FILEINFO_MIME), __FILE__));
+			} else {
+				$tmpFileInfo = false;
+			}
+			$regexp = '/text\/x\-(php|c\+\+)/';
+			if ($tmpFileInfo && preg_match($regexp, array_shift($tmpFileInfo))) {
+				$type = 'finfo';
+				$finfo = finfo_open(FILEINFO_MIME);
+			} elseif (function_exists('mime_content_type')
+					&& preg_match($regexp, array_shift(explode(';', mime_content_type(__FILE__))))) {
+						$type = 'mime_content_type';
+			} elseif (function_exists('getimagesize')) {
+				$type = 'getimagesize';
+			} else {
+				$type = 'none';
+			}
+		}
+
+		$mime = '';
+		if ($type === 'finfo') {
+			$mime = finfo_file($finfo, $path);
+		} elseif ($type === 'mime_content_type') {
+			$mime = mime_content_type($path);
+		} elseif ($type === 'getimagesize') {
+			if ($img = getimagesize($path)) {
+				$mime = $img['mime'];
+			}
+		}
+
+		if ($mime) {
+			$mime = explode(';', $mime);
+			$mime = trim($mime[0]);
+
+			if (in_array($mime, array('application/x-empty', 'inode/x-empty'))) {
+				// finfo return this mime for empty files
+				$mime = 'text/plain';
+			} elseif ($mime == 'application/x-zip') {
+				// http://elrte.org/redmine/issues/163
+				$mime = 'application/zip';
+			}
+		}
+
+		return $mime? $mime : 'unknown';
+	}
+	
+	/**
+	 * Rename file
+	 *
+	 * @param  array  $args
+	 * @return array
+	 * @author Dmitry (dio) Levashov
+	 **/
+	protected function rename($args) {
+		$target = $args['target'];
+		$name   = $args['name'];
+
+		if (($volume = $this->volume($target)) == false
+		||  ($rm = $volume->file($target)) == false) {
+			return array('error' => $this->error(self::ERROR_RENAME, '#'.$target, self::ERROR_FILE_NOT_FOUND));
+		}
+		$rm['realpath'] = $volume->realpath($target);
+
+		if ($this->itemLocked($target)) {
+			return array('error' => $this->error(self::ERROR_LOCKED, $rm['name']));
+		}
+
+		return ($file = $volume->rename($target, $name)) == false
+			? array('error' => $this->error(self::ERROR_RENAME, $rm['name'], $volume->error()))
+			: array('added' => array($file), 'removed' => array($rm));
+	}
+
+	/**
+	 * Copy/move files into new destination
+	 *
+	 * @param  array  command arguments
+	 * @return array
+	 * @author Dmitry (dio) Levashov
+	 **/
+	protected function paste($args) {
+		$dst     = $args['dst'];
+		$targets = is_array($args['targets']) ? $args['targets'] : array();
+		$cut     = !empty($args['cut']);
+		$error   = $cut ? self::ERROR_MOVE : self::ERROR_COPY;
+		$result  = array('changed' => array(), 'added' => array(), 'removed' => array(), 'warning' => array());
+
+		if (($dstVolume = $this->volume($dst)) == false) {
+			return array('error' => $this->error($error, '#'.$targets[0], self::ERROR_TRGDIR_NOT_FOUND, '#'.$dst));
+		}
+
+		$this->itemLock($dst);
+
+		$hashes = $renames = array();
+		$suffix = '~';
+		if (!empty($args['renames'])) {
+			$renames = array_flip($args['renames']);
+			if (is_string($args['suffix']) && ! preg_match('/[\/\\?*:|"<>]/', $args['suffix'])) {
+				$suffix = $args['suffix'];
+			}
+		}
+		if (!empty($args['hashes'])) {
+			$hashes = array_flip($args['hashes']);
+		}
+
+		foreach ($targets as $target) {
+			elFinder::extendTimeLimit();
+
+			if (($srcVolume = $this->volume($target)) == false) {
+				$result['warning'] = array_merge($result['warning'], $this->error($error, '#'.$target, self::ERROR_FILE_NOT_FOUND));
+				continue;
+			}
+
+			$rnres = array();
+			if ($renames) {
+				$file = $srcVolume->file($target);
+				if (isset($renames[$file['name']])) {
+					$dir = $dstVolume->realpath($dst);
+					if (isset($hashes[$file['name']])) {
+						$hash = $hashes[$file['name']];
+					} else {
+						$hash = $dstVolume->getHash($dir, $file['name']);
+					}
+					$rnres = $this->rename(array('target' => $hash, 'name' => $dstVolume->uniqueName($dir, $file['name'], $suffix, true, 0)));
+					if (!empty($rnres['error'])) {
+						$result['warning'] = array_merge($result['warning'], $rnres['error']);
+						continue;
+					}
+				}
+			}
+
+			if ($cut && $this->itemLocked($target)) {
+				$rm = $srcVolume->file($target);
+				$result['warning'] = array_merge($result['warning'], $this->error(self::ERROR_LOCKED, $rm['name']));
+				continue;
+			}
+
+			if (($file = $dstVolume->paste($srcVolume, $target, $dst, $cut, $hashes)) == false) {
+				$result['warning'] = array_merge($result['warning'], $this->error($dstVolume->error()));
+				continue;
+			}
+
+			if ($error = $dstVolume->error()) {
+				$result['warning'] = array_merge($result['warning'], $this->error($error));
+			}
+
+			$dirChange = ! empty($file['dirChange']);
+			unset($file['dirChange']);
+			if ($dirChange) {
+				$result['changed'][] = $file;
+			} else {
+				$result['added'][] = $file;
+			}
+			if ($rnres) {
+				$result = array_merge_recursive($result, $rnres);
+			}
+		}
+		if (count($result['warning']) < 1) {
+			unset($result['warning']);
+		} else {
+			$result['sync'] = true;
+		}
+
+		return $result;
+	}
+	
+	/**
+	 * Return file content
+	 *
+	 * @param  array  $args  command arguments
+	 * @return array
+	 * @author Dmitry (dio) Levashov
+	 **/
+	protected function get($args) {
+		$target = $args['target'];
+		$volume = $this->volume($target);
+		$enc = false;
+
+		if (!$volume || ($file = $volume->file($target)) == false) {
+			return array('error' => $this->error(self::ERROR_OPEN, '#'.$target, self::ERROR_FILE_NOT_FOUND));
+		}
+
+		if (($content = $volume->getContents($target)) === false) {
+			return array('error' => $this->error(self::ERROR_OPEN, $volume->path($target), $volume->error()));
+		}
+
+		$mime = isset($file['mime'])? $file['mime'] : '';
+		if ($mime && (strtolower(substr($mime, 0, 4)) === 'text' || in_array(strtolower($mime), self::$textMimes))) {
+			$enc = '';
+			if ($content !== '') {
+				if (! $args['conv'] || $args['conv'] == '1') {
+					// detect encoding
+					if (function_exists('mb_detect_encoding')) {
+						if ($enc = mb_detect_encoding($content , mb_detect_order(), true)) {
+							$encu = strtoupper($enc);
+							if ($encu === 'UTF-8' || $encu === 'ASCII') {
+								$enc = '';
+							}
+						} else {
+							$enc = 'unknown';
+						}
+					} else if (! preg_match('//u', $content)) {
+						$enc = 'unknown';
+					}
+					if ($enc === 'unknown') {
+						$enc = $volume->getOption('encoding');
+						if (! $enc || strtoupper($enc) === 'UTF-8') {
+							$enc = 'unknown';
+						}
+					}
+					if ($enc && $enc !== 'unknown') {
+						$utf8 = iconv($enc, 'UTF-8', $content);
+						if ($utf8 === false && function_exists('mb_convert_encoding')) {
+							$utf8 = mb_convert_encoding($content, 'UTF-8', $enc);
+							if (mb_convert_encoding($utf8, $enc, 'UTF-8') !== $content) {
+								$enc = 'unknown';
+							}
+						} else {
+							if ($utf8 === false || iconv('UTF-8', $enc, $utf8) !== $content) {
+								$enc = 'unknown';
+							}
+						}
+						if ($enc !== 'unknown') {
+							$content = $utf8;
+						}
+					}
+					if ($enc) {
+						if ($args['conv'] == '1') {
+							$args['conv'] = '';
+							if ($enc === 'unknown') {
+								$content = false;
+							}
+						} else if ($enc === 'unknown') {
+							return array('doconv' => $enc);
+						}
+					}
+					if ($args['conv'] == '1') {
+						$args['conv'] = '';
+					}
+				}
+				if ($args['conv']) {
+					$enc = $args['conv'];
+					if (strtoupper($enc) !== 'UTF-8') {
+						$_content = $content;
+						$content = iconv($enc, 'UTF-8', $content);
+						if ($content === false && function_exists('mb_convert_encoding')) {
+							$content = mb_convert_encoding($_content, 'UTF-8', $enc);
+						}
+					} else {
+						$enc = '';
+					}
+				}
+			}
+		} else {
+			$content = 'data:' . ($mime? $mime : 'application/octet-stream') . ';base64,'.base64_encode($content);
+		}
+
+		if ($enc !== false) {
+			if ($content !== false) {
+				$json = json_encode($content);
+			}
+			if ($content === false || $json === false || strlen($json) < strlen($content)) {
+				return array('error' => $this->error(self::ERROR_CONV_UTF8, self::ERROR_NOT_UTF8_CONTENT, $volume->path($target)));
+			}
+		}
+
+		$res = array(
+			'header'  => array(
+				'Content-Type: application/json'
+			),
+			'content' => $content
+		);
+
+		// add cache control headers
+		if ($cacheHeaders = $volume->getOption('cacheHeaders')) {
+			$res['header'] = array_merge($res['header'], $cacheHeaders);
+		}
+
+		if ($enc) {
+			$res['encoding'] = $enc;
+		}
+		return $res;
+	}
+	
+	/**
+	 * Save content into text file
+	 *
+	 * @param $args
+	 * @return array
+	 * @author Dmitry (dio) Levashov
+	 */
+	protected function put($args) {
+		$target = $args['target'];
+		$encoding = isset($args['encoding'])? $args['encoding'] : '';
+
+		if (($volume = $this->volume($target)) == false
+		|| ($file = $volume->file($target)) == false) {
+			return array('error' => $this->error(self::ERROR_SAVE, '#'.$target, self::ERROR_FILE_NOT_FOUND));
+		}
+
+		$this->itemLock($target);
+
+		if ($encoding === 'scheme') {
+			if (preg_match('~^https?://~i', $args['content'])) {
+				$fp = $this->get_remote_contents($args['content'], 30, 5, 'Mozilla/5.0', $volume->tmpfile());
+				if (! $fp) {
+					return  array('error' => self::ERROR_SAVE, $args['content'], self::ERROR_FILE_NOT_FOUND);
+				}
+				$fmeta = stream_get_meta_data($fp);
+				$mime = $this->detectMimeType($fmeta['uri']);
+				$args['content'] = 'data:'.$mime.';base64,'.base64_encode(file_get_contents($fmeta['uri']));
+			}
+			$encoding = '';
+			$args['content'] = "\0" . $args['content'];
+		}
+		if ($encoding) {
+			$content = iconv('UTF-8', $encoding, $args['content']);
+			if ($content === false && function_exists('mb_detect_encoding')) {
+				$content = mb_convert_encoding($args['content'], $encoding, 'UTF-8');
+			}
+			if ($content !== false) {
+				$args['content'] = $content;
+			}
+		}
+		if (($file = $volume->putContents($target, $args['content'])) == false) {
+			return array('error' => $this->error(self::ERROR_SAVE, $volume->path($target), $volume->error()));
+		}
+
+		return array('changed' => array($file));
+	}
+
+	/**
+	 * Extract files from archive
+	 *
+	 * @param  array  $args  command arguments
+	 * @return array
+	 * @author Dmitry (dio) Levashov,
+	 * @author Alexey Sukhotin
+	 **/
+	protected function extract($args) {
+		$target = $args['target'];
+		$mimes  = !empty($args['mimes']) && is_array($args['mimes']) ? $args['mimes'] : array();
+		$error  = array(self::ERROR_EXTRACT, '#'.$target);
+		$makedir = isset($args['makedir'])? (bool)$args['makedir'] : null;
+
+		if (($volume = $this->volume($target)) == false
+		|| ($file = $volume->file($target)) == false) {
+			return array('error' => $this->error(self::ERROR_EXTRACT, '#'.$target, self::ERROR_FILE_NOT_FOUND));
+		}
+
+		$res = array();
+		if ($file = $volume->extract($target, $makedir)) {
+			$res['added'] = isset($file['read'])? array($file) : $file;
+			if ($err = $volume->error()) {
+				$res['warning'] = $err;
+			}
+		} else {
+			$res['error'] = $this->error(self::ERROR_EXTRACT, $volume->path($target), $volume->error());
+		}
+		return $res;
+	}
+
+	/**
+	 * Create archive
+	 *
+	 * @param  array  $args  command arguments
+	 * @return array
+	 * @author Dmitry (dio) Levashov,
+	 * @author Alexey Sukhotin
+	 **/
+	protected function archive($args) {
+		$type    = $args['type'];
+		$targets = isset($args['targets']) && is_array($args['targets']) ? $args['targets'] : array();
+		$name    = isset($args['name'])? $args['name'] : '';
+
+		if (($volume = $this->volume($targets[0])) == false) {
+			return $this->error(self::ERROR_ARCHIVE, self::ERROR_TRGDIR_NOT_FOUND);
+		}
+
+		foreach($targets as $target) {
+			$this->itemLock($target);
+		}
+
+		return ($file = $volume->archive($targets, $args['type'], $name))
+			? array('added' => array($file))
+			: array('error' => $this->error(self::ERROR_ARCHIVE, $volume->error()));
+	}
+	
+	/**
+	 * Search files
+	 *
+	 * @param  array  $args  command arguments
+	 * @return array
+	 * @author Dmitry Levashov
+	 **/
+	protected function search($args) {
+		$q      = trim($args['q']);
+		$mimes  = !empty($args['mimes']) && is_array($args['mimes']) ? $args['mimes'] : array();
+		$target = !empty($args['target'])? $args['target'] : null;
+		$result = array();
+		$errors = array();
+
+		if ($target) {
+			if ($volume = $this->volume($target)) {
+				$result = $volume->search($q, $mimes, $target);
+				$errors = array_merge($errors, $volume->error());
+			}
+		} else {
+			foreach ($this->volumes as $volume) {
+				$result = array_merge($result, $volume->search($q, $mimes));
+				$errors = array_merge($errors, $volume->error());
+			}
+		}
+
+		$result = array('files' => $result);
+		if ($errors) {
+			$result['warning'] = $errors;
+		}
+		return $result;
+	}
+	
+	/**
+	 * Return file info (used by client "places" ui)
+	 *
+	 * @param  array  $args  command arguments
+	 * @return array
+	 * @author Dmitry Levashov
+	 **/
+	protected function info($args) {
+		$files = array();
+		$sleep = 0;
+		$compare = null;
+		// long polling mode
+		if ($args['compare'] && count($args['targets']) === 1) {
+			$compare = intval($args['compare']);
+			$hash = $args['targets'][0];
+			if ($volume = $this->volume($hash)) {
+				$standby = (int)$volume->getOption('plStandby');
+				$_compare = false;
+				if (($syncCheckFunc = $volume->getOption('syncCheckFunc')) && is_callable($syncCheckFunc)) {
+					$_compare = call_user_func_array($syncCheckFunc, array($volume->realpath($hash), $standby, $compare, $volume, $this));
+				}
+				if ($_compare !== false) {
+					$compare = $_compare;
+				} else {
+					$sleep = max(1, (int)$volume->getOption('tsPlSleep'));
+					$limit = max(1, $standby / $sleep) + 1;
+					do {
+						elFinder::extendTimeLimit(30 + $sleep);
+						$volume->clearstatcache();
+						if (($info = $volume->file($hash)) != false) {
+							if ($info['ts'] != $compare) {
+								$compare = $info['ts'];
+								break;
+							}
+						} else {
+							$compare = 0;
+							break;
+						}
+						if (--$limit) {
+							sleep($sleep);
+						}
+					} while($limit);
+				}
+			}
+		} else {
+			foreach ($args['targets'] as $hash) {
+				if (($volume = $this->volume($hash)) != false
+				&& ($info = $volume->file($hash)) != false) {
+					$info['path'] = $volume->path($hash);
+					$files[] = $info;
+				}
+			}
+		}
+
+		$result = array('files' => $files);
+		if (!is_null($compare)) {
+			$result['compare'] = strval($compare);
+		}
+		return $result;
+	}
+	
+	/***************************************************************************/
+	/*                                 callbacks                               */
+	/***************************************************************************/
+	
+	/**
+	 * Return image dimensions
+	 *
+	 * @param  array  $args  command arguments
+	 * @return array
+	 * @author Dmitry (dio) Levashov
+	 **/
+	protected function dim($args) {
+		$target = $args['target'];
+
+		if (($volume = $this->volume($target)) != false) {
+			$dim = $volume->dimensions($target);
+			return $dim ? array('dim' => $dim) : array();
+		}
+		return array();
+	}
+	
+	/**
+	 * Resize image
+	 *
+	 * @param  array  command arguments
+	 * @return array
+	 * @author Dmitry (dio) Levashov
+	 * @author Alexey Sukhotin
+	 **/
+	protected function resize($args) {
+		$target = $args['target'];
+		$width  = (int)$args['width'];
+		$height = (int)$args['height'];
+		$x      = (int)$args['x'];
+		$y      = (int)$args['y'];
+		$mode   = $args['mode'];
+		$bg     = $args['bg'];
+		$degree = (int)$args['degree'];
+		$quality= (int)$args['quality'];
+
+		if (($volume = $this->volume($target)) == false
+		|| ($file = $volume->file($target)) == false) {
+			return array('error' => $this->error(self::ERROR_RESIZE, '#'.$target, self::ERROR_FILE_NOT_FOUND));
+		}
+
+		if ($mode !== 'rotate' && ($width < 1 || $height < 1)) {
+			return array('error' => $this->error(self::ERROR_RESIZESIZE));
+		}
+		return ($file = $volume->resize($target, $width, $height, $x, $y, $mode, $bg, $degree, $quality))
+			? array('changed' => array($file))
+			: array('error' => $this->error(self::ERROR_RESIZE, $volume->path($target), $volume->error()));
+	}
+	
+	/**
+	* Return content URL
+	*
+	* @param  array  $args  command arguments
+	* @return array
+	* @author Naoki Sawada
+	**/
+	protected function url($args) {
+		$target = $args['target'];
+		$options = isset($args['options'])? $args['options'] : array();
+		if (($volume = $this->volume($target)) != false) {
+			if (! $volume->commandDisabled('url')) {
+				$url = $volume->getContentUrl($target, $options);
+				return $url ? array('url' => $url) : array();
+			}
+		}
+		return array();
+	}
+	
+	/**
+	 * Return files info array
+	 *
+	 * @param  array  $data  one file info or files info
+	 * @return array
+	 * @author Dmitry (dio) Levashov
+	 **/
+	protected function toArray($data) {
+		return isset($data['hash']) || !is_array($data) ? array($data) : $data;
+	}
+	
+	/**
+	 * Return fils hashes list
+	 *
+	 * @param  array  $files  files info
+	 * @return array
+	 * @author Dmitry (dio) Levashov
+	 **/
+	protected function hashes($files) {
+		$ret = array();
+		foreach ($files as $file) {
+			$ret[] = $file['hash'];
+		}
+		return $ret;
+	}
+	
+} // END class
+
+/**
+ * Custom exception class for aborting request
+ *
+ */
+class elFinderAbortException extends Exception {}

+ 339 - 0
src/php/elFinderConnector.class.php

@@ -0,0 +1,339 @@
+<?php
+
+/**
+ * Default elFinder connector
+ *
+ * @author Dmitry (dio) Levashov
+ **/
+class elFinderConnector {
+	/**
+	 * Content type of output JSON
+	 *
+	 * @var string
+	 */
+	protected static $contentType = 'Content-Type: application/json';
+	/**
+	 * elFinder instance
+	 *
+	 * @var elFinder
+	 **/
+	protected $elFinder;
+	/**
+	 * Options
+	 *
+	 * @var aray
+	 **/
+	protected $options = array();
+	/**
+	 * Must be use output($data) $data['header']
+	 *
+	 * @var string
+	 * @deprecated
+	 **/
+	protected $header = '';
+	/**
+	 * HTTP request method
+	 *
+	 * @var string
+	 */
+	protected $reqMethod = '';
+	
+	/**
+	 * Constructor
+	 *
+	 * @param $elFinder
+	 * @param bool $debug
+	 * @author Dmitry (dio) Levashov
+	 */
+	public function __construct($elFinder, $debug=false) {
+		
+		$this->elFinder = $elFinder;
+		$this->reqMethod = strtoupper($_SERVER["REQUEST_METHOD"]);
+		if ($debug) {
+			self::$contentType = 'Content-Type: text/plain; charset=utf-8';
+		}
+	}
+	
+	/**
+	 * Execute elFinder command and output result
+	 *
+	 * @return void
+	 * @author Dmitry (dio) Levashov
+	 **/
+	public function run() {
+		$isPost = $this->reqMethod === 'POST';
+		$src    = $isPost ? $_POST : $_GET;
+		$maxInputVars = (! $src || isset($src['targets']))? ini_get('max_input_vars') : null;
+		if ((! $src || $maxInputVars) && $rawPostData = file_get_contents('php://input')) {
+			// for max_input_vars and supports IE XDomainRequest()
+			$parts = explode('&', $rawPostData);
+			if (! $src || $maxInputVars < count($parts)) {
+				$src = array();
+				foreach($parts as $part) {
+					list($key, $value) = array_pad(explode('=', $part), 2, '');
+					$key = rawurldecode($key);
+					if (preg_match('/^(.+?)\[([^\[\]]*)\]$/', $key, $m)) {
+						$key = $m[1];
+						$idx = $m[2];
+						if (!isset($src[$key])) {
+							$src[$key] = array();
+						}
+						if ($idx) {
+							$src[$key][$idx] = rawurldecode($value);
+						} else {
+							$src[$key][] = rawurldecode($value);
+						}
+					} else {
+						$src[$key] = rawurldecode($value);
+					}
+				}
+				$_POST = $this->input_filter($src);
+				$_REQUEST = $this->input_filter(array_merge_recursive($src, $_REQUEST));
+			}
+		}
+		
+		if (isset($src['targets']) && $this->elFinder->maxTargets && count($src['targets']) > $this->elFinder->maxTargets) {
+			$error = $this->elFinder->error(elFinder::ERROR_MAX_TARGTES);
+			$this->output(array('error' => $this->elFinder->error(elFinder::ERROR_MAX_TARGTES)));
+		}
+		
+		$cmd    = isset($src['cmd']) ? $src['cmd'] : '';
+		$args   = array();
+		
+		if (!function_exists('json_encode')) {
+			$error = $this->elFinder->error(elFinder::ERROR_CONF, elFinder::ERROR_CONF_NO_JSON);
+			$this->output(array('error' => '{"error":["'.implode('","', $error).'"]}', 'raw' => true));
+		}
+		
+		if (!$this->elFinder->loaded()) {
+			$this->output(array('error' => $this->elFinder->error(elFinder::ERROR_CONF, elFinder::ERROR_CONF_NO_VOL), 'debug' => $this->elFinder->mountErrors));
+		}
+		
+		// telepat_mode: on
+		if (!$cmd && $isPost) {
+			$this->output(array('error' => $this->elFinder->error(elFinder::ERROR_UPLOAD, elFinder::ERROR_UPLOAD_TOTAL_SIZE), 'header' => 'Content-Type: text/html'));
+		}
+		// telepat_mode: off
+		
+		if (!$this->elFinder->commandExists($cmd)) {
+			$this->output(array('error' => $this->elFinder->error(elFinder::ERROR_UNKNOWN_CMD)));
+		}
+		
+		// collect required arguments to exec command
+		$hasFiles = false;
+		foreach ($this->elFinder->commandArgsList($cmd) as $name => $req) {
+			if ($name === 'FILES') {
+				if (isset($_FILES)) {
+					$hasFiles = true;
+				} elseif ($req) {
+					$this->output(array('error' => $this->elFinder->error(elFinder::ERROR_INV_PARAMS, $cmd)));
+				}
+			} else {
+				$arg = isset($src[$name])? $src[$name] : '';
+			
+				if (!is_array($arg) && $req !== '') {
+					$arg = trim($arg);
+				}
+				if ($req && $arg === '') {
+					$this->output(array('error' => $this->elFinder->error(elFinder::ERROR_INV_PARAMS, $cmd)));
+				}
+				$args[$name] = $arg;
+			}
+		}
+		
+		$args['debug'] = isset($src['debug']) ? !!$src['debug'] : false;
+		
+		$args = $this->input_filter($args);
+		if ($hasFiles) {
+			$args['FILES'] = $_FILES;
+		}
+		
+		try {
+			$this->output($this->elFinder->exec($cmd, $args));
+		} catch (elFinderAbortException $e) {
+			// aborted
+			exit();
+		}
+	}
+	
+	/**
+	 * Remove null & stripslashes applies on "magic_quotes_gpc"
+	 *
+	 * @param  mixed  $args
+	 * @return mixed
+	 * @author Naoki Sawada
+	 */
+	protected function input_filter($args) {
+		static $magic_quotes_gpc = NULL;
+
+		if ($magic_quotes_gpc === NULL)
+			$magic_quotes_gpc = (version_compare(PHP_VERSION, '5.4', '<') && get_magic_quotes_gpc());
+
+		if (is_array($args)) {
+			return array_map(array(& $this, 'input_filter'), $args);
+		}
+		$res = str_replace("\0", '', $args);
+		$magic_quotes_gpc && ($res = stripslashes($res));
+		return $res;
+	}
+	
+	/**
+	 * Output json
+	 *
+	 * @param  array  data to output
+	 * @return void
+	 * @author Dmitry (dio) Levashov
+	 **/
+	protected function output(array $data) {
+		// unlock session data for multiple access
+		$this->elFinder->getSession()->close();
+		// client disconnect should abort
+		ignore_user_abort(false);
+
+		if ($this->header) {
+			self::sendHeader($this->header);
+		}
+
+		if (isset($data['pointer'])) {
+			// set time limit to 0
+			elFinder::extendTimeLimit(0);
+
+			// send optional header
+			if (!empty($data['header'])) {
+				self::sendHeader($data['header']);
+			}
+
+			// clear output buffer
+			while(ob_get_level() && ob_end_clean()){}
+
+			$toEnd = true;
+			$fp = $data['pointer'];
+			$sendData = !($this->reqMethod === 'HEAD' || !empty($data['info']['xsendfile']));
+			if (($this->reqMethod === 'GET' || !$sendData)
+					&& elFinder::isSeekableStream($fp)
+					&& (array_search('Accept-Ranges: none', headers_list()) === false)) {
+				header('Accept-Ranges: bytes');
+				$psize = null;
+				if (!empty($_SERVER['HTTP_RANGE'])) {
+					$size = $data['info']['size'];
+					$start = 0;
+					$end = $size - 1;
+					if (preg_match('/bytes=(\d*)-(\d*)(,?)/i', $_SERVER['HTTP_RANGE'], $matches)) {
+						if (empty($matches[3])) {
+							if (empty($matches[1]) && $matches[1] !== '0') {
+								$start = $size - $matches[2];
+							} else {
+								$start = intval($matches[1]);
+								if (!empty($matches[2])) {
+									$end = intval($matches[2]);
+									if ($end >= $size) {
+										$end = $size - 1;
+									}
+									$toEnd = ($end == ($size - 1));
+								}
+							}
+							$psize = $end - $start + 1;
+
+							header('HTTP/1.1 206 Partial Content');
+							header('Content-Length: ' . $psize);
+							header('Content-Range: bytes ' . $start . '-' . $end . '/' . $size);
+
+							// Apache mod_xsendfile dose not support range request
+							if (isset($data['info']['xsendfile']) && strtolower($data['info']['xsendfile']) === 'x-sendfile') {
+								if (function_exists('header_remove')) {
+									header_remove($data['info']['xsendfile']);
+								} else {
+									header($data['info']['xsendfile'] . ':');
+								}
+								unset($data['info']['xsendfile']);
+								if ($this->reqMethod !== 'HEAD') {
+									$sendData = true;
+								}
+							}
+
+							$sendData && fseek($fp, $start);
+						}
+					}
+				}
+				if ($sendData && is_null($psize)){
+					elFinder::rewind($fp);
+				}
+			} else {
+				header('Accept-Ranges: none');
+				if (isset($data['info']) && ! $data['info']['size']) {
+					if (function_exists('header_remove')) {
+						header_remove('Content-Length');
+					} else {
+						header('Content-Length:');
+					}
+				}
+			}
+
+			if ($sendData) {
+				if ($toEnd) {
+					fpassthru($fp);
+				} else {
+					$out = fopen('php://output', 'wb');
+					stream_copy_to_stream($fp, $out, $psize);
+					fclose($out);
+				}
+			}
+
+			if (!empty($data['volume'])) {
+				$data['volume']->close($data['pointer'], $data['info']['hash']);
+			}
+			exit();
+		} else {
+			self::outputJson($data);
+			exit(0);
+		}
+	}
+	
+	/**
+	 * Send HTTP header
+	 * 
+	 * @param string|array $header optional header
+	 */
+	protected static function sendHeader($header = null) {
+		if ($header) {
+			if (is_array($header)) {
+				foreach ($header as $h) {
+					header($h);
+				}
+			} else {
+				header($header);
+			}
+		}
+	}
+	
+	/**
+	 * Output JSON
+	 * 
+	 * @param array $data
+	 */
+	public static function outputJson($data) {
+		// send header
+		$header = isset($data['header']) ? $data['header'] : self::$contentType;
+		self::sendHeader($header);
+		
+		unset($data['header']);
+		
+		if (!empty($data['raw']) && !empty($data['error'])) {
+			$out = $data['error'];
+		} else {
+			if (isset($data['debug']) && isset($data['debug']['phpErrors'])) {
+				$data['debug']['phpErrors'] = array_merge($data['debug']['phpErrors'], elFinder::$phpErrors);
+			}
+			$out = json_encode($data);
+		}
+		
+		// clear output buffer
+		while(ob_get_level() && ob_end_clean()){}
+		
+		header('Content-Length: ' . strlen($out));
+		
+		echo $out;
+		
+		flush();
+	}
+}// END class 

+ 330 - 0
src/php/elFinderFlysystemGoogleDriveNetmount.php

@@ -0,0 +1,330 @@
+<?php
+
+use Hypweb\Flysystem\Cached\Extra\DisableEnsureParentDirectories;
+use Hypweb\Flysystem\Cached\Extra\Hasdir;
+use Hypweb\Flysystem\GoogleDrive\GoogleDriveAdapter;
+use League\Flysystem\Adapter\Local;
+use League\Flysystem\Cached\CachedAdapter;
+use League\Flysystem\Cached\Storage\Adapter as ACache;
+use League\Flysystem\Filesystem;
+
+elFinder::$netDrivers['googledrive'] = 'FlysystemGoogleDriveNetmount';
+
+if (! class_exists('elFinderVolumeFlysystemGoogleDriveCache', false)) {
+    class elFinderVolumeFlysystemGoogleDriveCache extends ACache
+    {
+        use Hasdir;
+        use DisableEnsureParentDirectories;
+    }
+}
+
+class elFinderVolumeFlysystemGoogleDriveNetmount extends \Hypweb\elFinderFlysystemDriverExt\Driver
+{
+
+    public function __construct()
+    {
+        parent::__construct();
+        
+        $opts = array(
+            'rootCssClass' => 'elfinder-navbar-root-googledrive',
+            'gdAlias'        => '%s@GDrive',
+            'gdCacheDir'     => __DIR__ . '/.tmp',
+            'gdCachePrefix'  => 'gd-',
+            'gdCacheExpire'  => 600
+        );
+
+        $this->options = array_merge($this->options, $opts);
+    }
+
+    /**
+     * Prepare
+     * Call from elFinder::netmout() before volume->mount()
+     *
+     * @param $options
+     * @return Array
+     * @author Naoki Sawada
+     */
+    public function netmountPrepare($options)
+    {
+        if (empty($options['client_id']) && defined('ELFINDER_GOOGLEDRIVE_CLIENTID')) {
+            $options['client_id'] = ELFINDER_GOOGLEDRIVE_CLIENTID;
+        }
+        if (empty($options['client_secret']) && defined('ELFINDER_GOOGLEDRIVE_CLIENTSECRET')) {
+            $options['client_secret'] = ELFINDER_GOOGLEDRIVE_CLIENTSECRET;
+        }
+
+        if (! isset($options['pass'])) {
+            $options['pass'] = '';
+        }
+
+        try {
+            $client = new \Google_Client();
+            $client->setClientId($options['client_id']);
+            $client->setClientSecret($options['client_secret']);
+
+            if ($options['pass'] === 'reauth') {
+                $options['pass'] = '';
+                $this->session->set('GoogleDriveAuthParams', [])->set('GoogleDriveTokens', []);
+            } else if ($options['pass'] === 'googledrive') {
+                $options['pass'] = '';
+            }
+
+            $options = array_merge($this->session->get('GoogleDriveAuthParams', []), $options);
+
+            if (! isset($options['access_token'])) {
+                $options['access_token'] = $this->session->get('GoogleDriveTokens', []);
+                $this->session->remove('GoogleDriveTokens');
+            }
+            $aToken = $options['access_token'];
+
+            $rootObj = $service = null;
+            if ($aToken) {
+                try {
+                    $client->setAccessToken($aToken);
+                    if ($client->isAccessTokenExpired()) {
+                        $aToken = array_merge($aToken, $client->fetchAccessTokenWithRefreshToken());
+                        $client->setAccessToken($aToken);
+                    }
+                    $service = new \Google_Service_Drive($client);
+                    $rootObj = $service->files->get('root');
+
+                    $options['access_token'] = $aToken;
+                    $this->session->set('GoogleDriveAuthParams', $options);
+
+                } catch (Exception $e) {
+                    $aToken = [];
+                    $options['access_token'] = [];
+                    if ($options['user'] !== 'init') {
+                        $this->session->set('GoogleDriveAuthParams', $options);
+                        return array('exit' => true, 'error' => elFinder::ERROR_REAUTH_REQUIRE);
+                    }
+                }
+
+            }
+
+            if ($options['user'] === 'init') {
+                if (empty($options['url'])) {
+                    $options['url'] = elFinder::getConnectorUrl();
+                }
+
+                $callback  = $options['url']
+                           . '?cmd=netmount&protocol=googledrive&host=1';
+                $client->setRedirectUri($callback);
+
+                if (! $aToken && empty($_GET['code'])) {
+                    $client->setScopes([ Google_Service_Drive::DRIVE ]);
+                    if (! empty($options['offline'])) {
+                        $client->setApprovalPrompt('force');
+                        $client->setAccessType('offline');
+                    }
+                    $url = $client->createAuthUrl();
+
+                    $html = '<input id="elf-volumedriver-googledrive-host-btn" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" value="{msg:btnApprove}" type="button" onclick="window.open(\''.$url.'\')">';
+                    $html .= '<script>
+                        $("#'.$options['id'].'").elfinder("instance").trigger("netmount", {protocol: "googledrive", mode: "makebtn"});
+                    </script>';
+                    if (empty($options['pass']) && $options['host'] !== '1') {
+                        $options['pass'] = 'return';
+                        $this->session->set('GoogleDriveAuthParams', $options);
+                        return array('exit' => true, 'body' => $html);
+                    } else {
+                        $out = array(
+                            'node' => $options['id'],
+                            'json' => '{"protocol": "googledrive", "mode": "makebtn", "body" : "'.str_replace($html, '"', '\\"').'", "error" : "'.elFinder::ERROR_ACCESS_DENIED.'"}',
+                            'bind' => 'netmount'
+                        );
+                        return array('exit' => 'callback', 'out' => $out);
+                    }
+                } else {
+                    if (! empty($_GET['code'])) {
+                        $aToken = $client->fetchAccessTokenWithAuthCode($_GET['code']);
+                        $options['access_token'] = $aToken;
+                        $this->session->set('GoogleDriveTokens', $aToken)->set('GoogleDriveAuthParams', $options);
+                        $out = array(
+                            'node' => $options['id'],
+                            'json' => '{"protocol": "googledrive", "mode": "done", "reset": 1}',
+                            'bind' => 'netmount'
+                        );
+                        return array('exit' => 'callback', 'out' => $out);
+                    }
+                    $folders = [];
+                    foreach($service->files->listFiles([
+                        'pageSize' => 1000,
+                        'q' => 'trashed = false and mimeType = "application/vnd.google-apps.folder"'
+                    ]) as $f) {
+                        $folders[$f->getId()] = $f->getName();
+                    }
+                    natcasesort($folders);
+                    $folders = ['root' => $rootObj->getName()] + $folders;
+                    $folders = json_encode($folders);
+                    $json = '{"protocol": "googledrive", "mode": "done", "folders": '.$folders.'}';
+                    $options['pass'] = 'return';
+                    $html = 'Google.com';
+                    $html .= '<script>
+                        $("#'.$options['id'].'").elfinder("instance").trigger("netmount", '.$json.');
+                    </script>';
+                    $this->session->set('GoogleDriveAuthParams', $options);
+                    return array('exit' => true, 'body' => $html);
+                }
+            }
+        } catch (Exception $e) {
+            $this->session->remove('GoogleDriveAuthParams')->remove('GoogleDriveTokens');
+            if (empty($options['pass'])) {
+                return array('exit' => true, 'body' => '{msg:'.elFinder::ERROR_ACCESS_DENIED.'}'.' '.$e->getMessage());
+            } else {
+                return array('exit' => true, 'error' => [elFinder::ERROR_ACCESS_DENIED, $e->getMessage()]);
+            }
+        }
+
+        if (! $aToken) {
+            return array('exit' => true, 'error' => elFinder::ERROR_REAUTH_REQUIRE);
+        }
+
+        if ($options['path'] === '/') {
+            $options['path'] = 'root';
+        }
+
+        try {
+            $file = $service->files->get($options['path']);
+            $options['alias'] = sprintf($this->options['gdAlias'], $file->getName());
+        } catch (Google_Service_Exception $e) {
+            $err = json_decode($e->getMessage(), true);
+            if (isset($err['error']) && $err['error']['code'] == 404) {
+                return array('exit' => true, 'error' => [elFinder::ERROR_TRGDIR_NOT_FOUND, $options['path']]);
+            } else {
+                return array('exit' => true, 'error' => $e->getMessage());
+            }
+        } catch (Exception $e) {
+            return array('exit' => true, 'error' => $e->getMessage());
+        }
+
+        foreach(['host', 'user', 'pass', 'id', 'offline'] as $key) {
+            unset($options[$key]);
+        }
+
+        return $options;
+    }
+
+    /**
+     * process of on netunmount
+     * Drop table `dropbox` & rm thumbs
+     *
+     * @param $netVolumes
+     * @param $key
+     * @return bool
+     * @internal param array $options
+     */
+    public function netunmount($netVolumes, $key)
+    {
+        $cache = $this->options['gdCacheDir'] . DIRECTORY_SEPARATOR . $this->options['gdCachePrefix'].$this->netMountKey;
+        if (file_exists($cache) && is_writeable($cache)) {
+            unlink($cache);
+        }
+        if ($tmbs = glob($this->tmbPath . DIRECTORY_SEPARATOR . $this->netMountKey . '*')) {
+            foreach($tmbs as $file) {
+                unlink($file);
+            }
+        }
+        return true;
+    }
+
+    /**
+     * "Mount" volume.
+     * Return true if volume available for read or write,
+     * false - otherwise
+     *
+     * @param array $opts
+     * @return bool
+     * @author Naoki Sawada
+     */
+    public function mount(array $opts)
+    {
+        $creds = null;
+        if (isset($opts['access_token'])) {
+            $this->netMountKey = md5(join('-', array('googledrive', $opts['path'], (isset($opts['access_token']['refresh_token'])? $opts['access_token']['refresh_token'] : $opts['access_token']['access_token']))));
+        }
+
+        $client = new \Google_Client();
+        $client->setClientId($opts['client_id']);
+        $client->setClientSecret($opts['client_secret']);
+
+        if (!empty($opts['access_token'])) {
+            $client->setAccessToken($opts['access_token']);
+        }
+        if ($client->isAccessTokenExpired()) {
+            try {
+                $creds = $client->fetchAccessTokenWithRefreshToken();
+            } catch (LogicException $e) {
+                $this->session->remove('GoogleDriveAuthParams');
+                throw $e;
+            }
+        }
+
+        $service = new \Google_Service_Drive($client);
+
+        // If path is not set, use the root
+        if (!isset($opts['path']) || $opts['path'] === '') {
+            $opts['path'] = 'root';
+        }
+
+        $googleDrive = new GoogleDriveAdapter($service, $opts['path'], [ 'useHasDir' => true ]);
+
+        $opts['fscache'] = null;
+        if ($this->options['gdCacheDir'] && is_writeable($this->options['gdCacheDir'])) {
+            if ($this->options['gdCacheExpire']) {
+                $opts['fscache'] = new elFinderVolumeFlysystemGoogleDriveCache(new Local($this->options['gdCacheDir']), $this->options['gdCachePrefix'].$this->netMountKey, $this->options['gdCacheExpire']);
+            }
+        }
+        if ($opts['fscache']) {
+            $filesystem = new Filesystem(new CachedAdapter($googleDrive, $opts['fscache']));
+        } else {
+            $filesystem = new Filesystem($googleDrive);
+        }
+
+        $opts['driver'] = 'FlysystemExt';
+        $opts['filesystem'] = $filesystem;
+        $opts['separator'] = '/';
+        $opts['checkSubfolders'] = true;
+        if (! isset($opts['alias'])) {
+            $opts['alias'] = 'GoogleDrive';
+        }
+
+        if ($res = parent::mount($opts)) {
+            // update access_token of session data
+            if ($creds) {
+                $netVolumes = $this->session->get('netvolume');
+                $netVolumes[$this->netMountKey]['access_token'] = array_merge($netVolumes[$this->netMountKey]['access_token'], $creds);
+                $this->session->set('netvolume', $netVolumes);
+            }
+        }
+
+        return $res;
+    }
+
+    /**
+     * Prepare driver before mount volume.
+     * Return true if volume is ready.
+     *
+     * @return bool
+     **/
+    protected function init()
+    {
+        if (empty($this->options['icon'])) {
+            $this->options['icon'] = true;
+        }
+        if ($res = parent::init()) {
+            if ($this->options['icon'] === true) {
+                unset($this->options['icon']);
+            }
+        }
+        return $res;
+    }
+
+    /**
+     * @inheritdoc
+     */
+	protected function tmbname($stat) {
+		return $this->netMountKey.substr(substr($stat['hash'], strlen($this->id)), -38).$stat['ts'].'.png';
+	}
+
+}

+ 75 - 0
src/php/elFinderPlugin.php

@@ -0,0 +1,75 @@
+<?php
+/**
+ * elFinder Plugin Abstract
+ *
+ * @package elfinder
+ * @author Naoki Sawada
+ * @license New BSD
+ */
+class elFinderPlugin {
+	
+	/**
+	 * This plugin's options
+	 * 
+	 * @var array
+	 */
+	protected $opts = array();
+	
+	/**
+	 * Get current volume's options
+	 * 
+	 * @param object $volume
+	 * @return array options
+	 */
+	protected function getCurrentOpts($volume) {
+		$name = substr(get_class($this), 14); // remove "elFinderPlugin"
+		$opts = $this->opts;
+		if (is_object($volume)) {
+			$volOpts = $volume->getOptionsPlugin($name);
+			if (is_array($volOpts)) {
+				$opts = array_merge($opts, $volOpts);
+			}
+		}
+		return $opts;
+	}
+	
+	/**
+	 * Is enabled with options
+	 * 
+	 * @param array $opts
+	 * @return boolean
+	 */
+	protected function iaEnabled($opts) {
+		if (! $opts['enable']) {
+			return false;
+		}
+		
+		if (isset($opts['offDropWith']) && ! is_null($opts['offDropWith']) && isset($_REQUEST['dropWith'])) {
+			$offDropWith = $opts['offDropWith'];
+			$action = (int)$_REQUEST['dropWith'];
+			if (! is_array($offDropWith)) {
+				$offDropWith = array($offDropWith);
+			}
+			$res = true;
+			foreach($offDropWith as $key) {
+				$key = (int)$key;
+				if ($key === 0) {
+					if ($action === 0) {
+						$res = false;
+						break;
+					}
+				} else {
+					if (($action & $key) === $key) {
+						$res = false;
+						break;
+					}
+				}
+			}
+			if (! $res) {
+				return false;
+			}
+		}
+		
+		return true;
+	}
+}

+ 237 - 0
src/php/elFinderSession.php

@@ -0,0 +1,237 @@
+<?php
+
+/**
+ * elFinder - file manager for web.
+ * Session Wrapper Class.
+ *
+ * @package elfinder
+ * @author Naoki Sawada
+ **/
+
+class elFinderSession implements elFinderSessionInterface
+{
+	protected $started = false;
+	
+	protected $keys = array();
+	
+	protected $base64encode = false;
+	
+	protected $opts = array(
+		'base64encode' => false,
+		'keys' => array(
+			'default'   => 'elFinderCaches',
+			'netvolume' => 'elFinderNetVolumes'
+		)
+	);
+	
+	public function __construct($opts)
+	{
+		$this->opts = array_merge($this->opts, $opts);
+		$this->base64encode = !empty($this->opts['base64encode']);
+		$this->keys = $this->opts['keys'];
+		
+		return $this;
+	}
+	
+    /**
+     * {@inheritdoc}
+     */
+	public function get($key, $empty = null)
+	{
+		$closed = false;
+		if (! $this->started) {
+			$closed = true;
+			$this->start();
+		}
+
+		$data = null;
+
+		if ($this->started) {
+			$session =& $this->getSessionRef($key);
+			$data = $session;
+			if ($data && $this->base64encode) {
+				$data = $this->decodeData($data);
+			}
+		}
+
+		$checkFn = null;
+		if (! is_null($empty)) {
+			if (is_string($empty)) {
+				$checkFn = 'is_string';
+			} elseif (is_array($empty)) {
+				$checkFn = 'is_array';
+			} elseif (is_object($empty)) {
+				$checkFn = 'is_object';
+			} elseif (is_float($empty)) {
+				$checkFn = 'is_float';
+			} elseif (is_int($empty)) {
+				$checkFn = 'is_int';
+			}
+		}
+
+		if (is_null($data) || ($checkFn && ! $checkFn($data))) {
+			$session = $data = $empty;
+		}
+
+		if ($closed) {
+			$this->close();
+		}
+
+		return $data;
+	}
+	
+    /**
+     * {@inheritdoc}
+     */
+	public function start()
+	{
+		if (version_compare(PHP_VERSION, '5.4.0', '>=')) {
+			if (session_status() !== PHP_SESSION_ACTIVE) {
+				session_start();
+			}
+		} else {
+			set_error_handler(array($this, 'session_start_error'),  E_NOTICE);
+			session_start();
+			restore_error_handler();
+		}
+		$this->started = session_id()? true : false;
+
+		return $this;
+	}
+	
+	protected function & getSessionRef($key)
+	{
+		$session = null;
+		if ($this->started) {
+			list($cat, $name) = array_pad(explode('.', $key, 2), 2, null);
+			if (is_null($name)) {
+				if (! isset($this->keys[$cat])) {
+					$name = $cat;
+					$cat = 'default';
+				}
+			}
+			if (isset($this->keys[$cat])) {
+				$cat = $this->keys[$cat];
+			} else {
+				$name = $cat . '.' . $name;
+				$cat = $this->keys['default'];
+			}
+			if (is_null($name)) {
+				if (! isset($_SESSION[$cat])) {
+					$_SESSION[$cat] = null;
+				}
+				$session =& $_SESSION[$cat];
+			} else {
+				if (! isset($_SESSION[$cat]) || ! is_array($_SESSION[$cat])) {
+					$_SESSION[$cat] = array();
+				}
+				if (! isset($_SESSION[$cat][$name])) {
+					$_SESSION[$cat][$name] = null;
+				}
+				$session =& $_SESSION[$cat][$name];
+			}
+		}
+		return $session;
+	}
+	
+	protected function decodeData($data)
+	{
+		if ($this->base64encode) {
+			if (is_string($data)) {
+				if (($data = base64_decode($data)) !== false) {
+					$data = unserialize($data);
+				} else {
+					$data = null;
+				}
+			} else {
+				$data = null;
+			}
+		}
+		return $data;
+	}
+	
+    /**
+     * {@inheritdoc}
+     */
+	public function close()
+	{
+		if ($this->started) {
+			session_write_close();
+		}
+		$this->started = false;
+
+		return $this;
+	}
+	
+    /**
+     * {@inheritdoc}
+     */
+	public function set($key, $data)
+	{
+		$closed = false;
+		if (! $this->started) {
+			$closed = true;
+			$this->start();
+		}
+		$session =& $this->getSessionRef($key);
+		if ($this->base64encode) {
+			$data = $this->encodeData($data);
+		}
+		$session = $data;
+
+		if ($closed) {
+			$this->close();
+		}
+
+		return $this;
+	}
+	
+	protected function encodeData($data)
+	{
+		if ($this->base64encode) {
+			$data = base64_encode(serialize($data));
+		}
+		return $data;
+	}
+	
+    /**
+     * {@inheritdoc}
+     */
+	public function remove($key)
+	{
+		$closed = false;
+		if (! $this->started) {
+			$closed = true;
+			$this->start();
+		}
+
+		list($cat, $name) = array_pad(explode('.', $key, 2), 2, null);
+		if (is_null($name)) {
+			if (! isset($this->keys[$cat])) {
+				$name = $cat;
+				$cat = 'default';
+			}
+		}
+		if (isset($this->keys[$cat])) {
+			$cat = $this->keys[$cat];
+		} else {
+			$name = $cat . '.' . $name;
+			$cat = $this->keys['default'];
+		}
+		if (is_null($name)) {
+			unset($_SESSION[$cat]);
+		} else {
+			if (isset($_SESSION[$cat]) && is_array($_SESSION[$cat])) {
+				unset($_SESSION[$cat][$name]);
+			}
+		}
+
+		if ($closed) {
+			$this->close();
+		}
+
+		return $this;
+	}
+
+	protected function session_start_error($errno , $errstr) {}
+}

+ 59 - 0
src/php/elFinderSessionInterface.php

@@ -0,0 +1,59 @@
+<?php
+
+/**
+ * elFinder - file manager for web.
+ * Session Wrapper Interface.
+ *
+ * @package elfinder
+ * @author Naoki Sawada
+ **/
+
+interface elFinderSessionInterface
+{
+	/**
+	 * Session start
+	 *
+	 * @return  self
+	 **/
+	public function start();
+	
+	/**
+	 * Session write & close
+	 *
+	 * @return  self
+	 **/
+	public function close();
+	
+	/**
+	 * Get session data
+	 *
+	 * This method must be equipped with an automatic start / close.
+	 *
+	 * @param   string  $key   Target key
+	 * @param   mixed   $empty Return value of if session target key does not exist
+	 *
+	 * @return  mixed
+	 **/
+	public function get($key, $empty = '');
+	
+	/**
+	 * Set session data
+	 *
+	 * This method must be equipped with an automatic start / close.
+	 *
+	 * @param   string  $key   Target key
+	 * @param   mixed   $data  Value
+	 *
+	 * @return  self
+	 **/
+	public function set($key, $data);
+	
+	/**
+	 * Get session data
+	 *
+	 * @param   string  $key   Target key
+	 *
+	 * @return  self
+	 **/
+	public function remove($key);
+}

+ 1842 - 0
src/php/elFinderVolumeBox.class.php

@@ -0,0 +1,1842 @@
+<?php
+
+elFinder::$netDrivers['box'] = 'Box';
+
+/**
+ * Simple elFinder driver for BoxDrive
+ * Box.com API v2.0.
+ *
+ * @author Dmitry (dio) Levashov
+ * @author Cem (discofever)
+ **/
+class elFinderVolumeBox extends elFinderVolumeDriver
+{
+    /**
+     * @var string The base URL for API requests
+     */
+    const API_URL = 'https://api.box.com/2.0';
+    /**
+     * @var string The base URL for authorization requests
+     */
+    const AUTH_URL = 'https://www.box.com/api/oauth2/authorize';
+    /**
+     * @var string The base URL for token requests
+     */
+    const TOKEN_URL = 'https://www.box.com/api/oauth2/token';
+    /**
+     * @var string The base URL for upload requests
+     */
+    const UPLOAD_URL = 'https://upload.box.com/api/2.0';
+    /**
+     * Fetch fields list.
+     *
+     * @var string
+     */
+    const FETCHFIELDS = 'type,id,name,created_at,modified_at,description,size,parent,permissions,file_version,shared_link';
+    /**
+     * Net mount key.
+     *
+     * @var string
+     **/
+    public $netMountKey = '';
+    /**
+     * Driver id
+     * Must be started from letter and contains [a-z0-9]
+     * Used as part of volume id.
+     *
+     * @var string
+     **/
+    protected $driverId = 'bd';
+    /**
+     * Box.com token object.
+     *
+     * @var object
+     **/
+    protected $token = null;
+    /**
+     * Directory for tmp files
+     * If not set driver will try to use tmbDir as tmpDir.
+     *
+     * @var string
+     **/
+    protected $tmp = '';
+    /**
+     * hasCache by folders.
+     *
+     * @var array
+     **/
+    protected $HasdirsCache = array();
+    /**
+     * Thumbnail prefix.
+     *
+     * @var string
+     **/
+    private $tmbPrefix = '';
+
+    /**
+     * Constructor
+     * Extend options with required fields.
+     *
+     * @author Dmitry (dio) Levashov
+     * @author Cem (DiscoFever)
+     **/
+    public function __construct()
+    {
+        $opts = array(
+            'client_id' => '',
+            'client_secret' => '',
+            'accessToken' => '',
+            'root' => 'Box.com',
+            'path' => '/',
+            'separator' => '/',
+            'tmbPath' => '',
+            'tmbURL' => '',
+            'tmpPath' => '',
+            'acceptedName' => '#^[^/\\?*:|"<>]*[^./\\?*:|"<>]$#',
+            'rootCssClass' => 'elfinder-navbar-root-box',
+        );
+        $this->options = array_merge($this->options, $opts);
+        $this->options['mimeDetect'] = 'internal';
+    }
+
+    /*********************************************************************/
+    /*                        ORIGINAL FUNCTIONS                         */
+    /*********************************************************************/
+
+    /**
+     * Prepare
+     * Call from elFinder::netmout() before volume->mount().
+     *
+     * @return array
+     *
+     * @author Naoki Sawada
+     * @author Raja Sharma updating for Box
+     **/
+    public function netmountPrepare($options)
+    {
+        if (empty($options['client_id']) && defined('ELFINDER_BOX_CLIENTID')) {
+            $options['client_id'] = ELFINDER_BOX_CLIENTID;
+        }
+        if (empty($options['client_secret']) && defined('ELFINDER_BOX_CLIENTSECRET')) {
+            $options['client_secret'] = ELFINDER_BOX_CLIENTSECRET;
+        }
+
+        if (isset($options['pass']) && $options['pass'] === 'reauth') {
+            $options['user'] = 'init';
+            $options['pass'] = '';
+            $this->session->remove('BoxTokens');
+        }
+
+        if (isset($options['id'])) {
+            $this->session->set('nodeId', $options['id']);
+        } elseif ($_id = $this->session->get('nodeId')) {
+            $options['id'] = $_id;
+            $this->session->set('nodeId', $_id);
+        }
+
+        try {
+            if (empty($options['client_id']) || empty($options['client_secret'])) {
+                return array('exit' => true, 'body' => '{msg:errNetMountNoDriver}');
+            }
+
+            if (isset($_GET['code'])) {
+                try {
+                    // Obtain the token using the code received by the Box.com API
+                    $this->session->set('BoxTokens',
+                                        $this->_bd_obtainAccessToken($options['client_id'], $options['client_secret'], $_GET['code']));
+
+                    $out = array(
+                            'node' => $options['id'],
+                            'json' => '{"protocol": "box", "mode": "done", "reset": 1}',
+                            'bind' => 'netmount',
+
+                    );
+
+                    return array('exit' => 'callback', 'out' => $out);
+                } catch (Exception $e) {
+                    $out = array(
+                            'node' => $options['id'],
+                            'json' => json_encode(array('error' => $e->getMessage())),
+                    );
+
+                    return array('exit' => 'callback', 'out' => $out);
+                }
+            } elseif (!empty($_GET['error'])) {
+                $out = array(
+                        'node' => $options['id'],
+                        'json' => json_encode(array('error' => elFinder::ERROR_ACCESS_DENIED)),
+                );
+
+                return array('exit' => 'callback', 'out' => $out);
+            }
+
+            if ($options['user'] === 'init') {
+                $this->token = $this->session->get('BoxTokens');
+
+                if ($this->token) {
+                    try {
+                        $this->_bd_refreshToken();
+                    } catch (Exception $e) {
+                        $this->setError($e->getMessage());
+                        $this->token = null;
+                        $this->session->remove('BoxTokens');
+                    }
+                }
+
+                if (empty($this->token)) {
+                    $result = false;
+                } else {
+                    $path = $options['path'];
+                    if ($path === '/' || $path === 'root') {
+                        $path = '0';
+                    }
+                    $result = $this->_bd_query($path, $fetch_self = false, $recursive = false);
+                }
+
+                if ($result === false) {
+                    $cdata = '';
+                    $innerKeys = array('cmd', 'host', 'options', 'pass', 'protocol', 'user');
+                    $this->ARGS = $_SERVER['REQUEST_METHOD'] === 'POST' ? $_POST : $_GET;
+                    foreach ($this->ARGS as $k => $v) {
+                        if (!in_array($k, $innerKeys)) {
+                            $cdata .= '&'.$k.'='.rawurlencode($v);
+                        }
+                    }
+                    if (empty($options['url'])) {
+                        $options['url'] = elFinder::getConnectorUrl();
+                    }
+                    $callback = $options['url']
+                        .'?cmd=netmount&protocol=box&host=box.com&user=init&pass=return&node='.$options['id'].$cdata;
+
+                    try {
+                        $this->session->set('BoxTokens', (object) array('token' => null));
+
+                        $url = self::AUTH_URL.'?'.http_build_query(array('response_type' => 'code', 'client_id' => $options['client_id'], 'redirect_uri' => elFinder::getConnectorUrl().'?cmd=netmount&protocol=box&host=1'));
+
+                        $url .= '&oauth_callback='.rawurlencode($callback);
+                    } catch (Exception $e) {
+                        return array('exit' => true, 'body' => '{msg:errAccess}');
+                    }
+
+                    $html = '<input id="elf-volumedriver-box-host-btn" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" value="{msg:btnApprove}" type="button" onclick="window.open(\''.$url.'\')">';
+                    $html .= '<script>
+							$("#'.$options['id'].'").elfinder("instance").trigger("netmount", {protocol: "box", mode: "makebtn"});
+						</script>';
+
+                    return array('exit' => true, 'body' => $html);
+                } else {
+                    $folders = [];
+
+                    if ($result) {
+                        foreach ($result as $res) {
+                            if ($res->type == 'folder') {
+                                $folders[$res->id.' '] = $res->name;
+                            }
+                        }
+                        natcasesort($folders);
+                    }
+
+                    if ($options['pass'] === 'folders') {
+                        return ['exit' => true, 'folders' => $folders];
+                    }
+
+                    $folders = ['root' => 'My Box'] + $folders;
+                    $folders = json_encode($folders);
+
+                    $expires = empty($this->token->data->refresh_token) ? (int) $this->token->expires : 0;
+                    $json = '{"protocol": "box", "mode": "done", "folders": '.$folders.', "expires": '.$expires.'}';
+                    $html = 'Box.com';
+                    $html .= '<script>
+							$("#'.$options['id'].'").elfinder("instance").trigger("netmount", '.$json.');
+							</script>';
+
+                    return array('exit' => true, 'body' => $html);
+                }
+            }
+        } catch (Exception $e) {
+            return array('exit' => true, 'body' => '{msg:errNetMountNoDriver}');
+        }
+
+        if ($_aToken = $this->session->get('BoxTokens')) {
+            $options['accessToken'] = json_encode($_aToken);
+        } else {
+            $this->setError(elFinder::ERROR_NETMOUNT, $options['host'], implode(' ', $this->error()));
+
+            return array('exit' => true, 'error' => $this->error());
+        }
+
+        $this->session->remove('nodeId');
+        unset($options['user'], $options['pass'], $options['id']);
+
+        return $options;
+    }
+
+    /**
+     * Obtains a new access token from OAuth. This token is valid for one hour.
+     *
+     * @param string $clientSecret The Box client secret
+     * @param string $code         The code returned by Box after
+     *                             successful log in
+     * @param string $redirectUri  Must be the same as the redirect URI passed
+     *                             to LoginUrl
+     *
+     * @throws \Exception Thrown if this Client instance's clientId is not set
+     * @throws \Exception Thrown if the redirect URI of this Client instance's
+     *                    state is not set
+     */
+    protected function _bd_obtainAccessToken($client_id, $client_secret, $code)
+    {
+        if (null === $client_id) {
+            return $this->setError('The client ID must be set to call obtainAccessToken()');
+        }
+
+        if (null === $client_secret) {
+            return $this->setError('The client Secret must be set to call obtainAccessToken()');
+        }
+
+        if (null === $code) {
+            return $this->setError('Authorization code must be set to call obtainAccessToken()');
+        }
+
+        $url = self::TOKEN_URL;
+
+        $curl = curl_init();
+
+        $fields = http_build_query(
+            array(
+                'client_id' => $client_id,
+                'client_secret' => $client_secret,
+                'code' => $code,
+                'grant_type' => 'authorization_code',
+            )
+        );
+
+        curl_setopt_array($curl, array(
+            // General options.
+            CURLOPT_RETURNTRANSFER => true,
+            CURLOPT_POST => true,
+            CURLOPT_POSTFIELDS => $fields,
+            CURLOPT_URL => $url,
+        ));
+
+        $decoded = $this->_bd_curlExec($curl, true, array('Content-Length: '.strlen($fields)));
+
+        return (object) array(
+                'expires' => time() + $decoded->expires_in - 30,
+                'data' => $decoded,
+        );
+    }
+
+    /**
+     * Get token and auto refresh.
+     *
+     * @return true|string error message
+     */
+    protected function _bd_refreshToken()
+    {
+        if ($this->token->expires < time()) {
+            if (!$token = $this->session->get('BoxTokens')) {
+                $token = $this->token;
+            }
+            if (empty($token->data->refresh_token)) {
+                $this->session->remove('BoxTokens');
+                throw new \Exception(elFinder::ERROR_REAUTH_REQUIRE);
+            }
+
+            if (!$this->options['client_id']) {
+                $this->options['client_id'] = ELFINDER_BOX_CLIENTID;
+            }
+
+            if (!$this->options['client_secret']) {
+                $this->options['client_secret'] = ELFINDER_BOX_CLIENTSECRET;
+            }
+
+            $url = self::TOKEN_URL;
+
+            $curl = curl_init();
+
+            curl_setopt_array($curl, array(
+                    // General options.
+                    CURLOPT_RETURNTRANSFER => true,
+                    CURLOPT_POST => true, // i am sending post data
+                    CURLOPT_POSTFIELDS => 'client_id='.urlencode($this->options['client_id'])
+                        .'&client_secret='.urlencode($this->options['client_secret'])
+                        .'&grant_type=refresh_token'
+                        .'&refresh_token='.urlencode($token->data->refresh_token),
+
+                    CURLOPT_URL => $url,
+                ));
+
+            $decoded = $this->_bd_curlExec($curl);
+
+            if (empty($decoded->access_token)) {
+                throw new \Exception(elFinder::ERROR_REAUTH_REQUIRE);
+            }
+
+            $token = (object) array(
+                    'expires' => time() + $decoded->expires_in - 30,
+                    'data' => $decoded,
+                );
+
+            $this->session->set('BoxTokens', $token);
+            $this->options['accessToken'] = json_encode($token);
+            $this->token = $token;
+
+            if (!empty($this->options['netkey'])) {
+                elFinder::$instance->updateNetVolumeOption($this->options['netkey'], 'accessToken', $this->options['accessToken']);
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * Drive query and fetchAll.
+     *
+     * @param string $sql
+     *
+     * @return bool|array
+     */
+    protected function _bd_query($itemId, $fetch_self = false, $recursive = false)
+    {
+        $result = [];
+
+        if (null === $itemId) {
+            $itemId = '0';
+        }
+
+        if ($fetch_self) {
+            $path = '/folders/'.$itemId.'?fields='.self::FETCHFIELDS;
+        } else {
+            $path = '/folders/'.$itemId.'/items?limit=1000&fields='.self::FETCHFIELDS;
+        }
+
+        $url = self::API_URL.$path;
+
+        if ($recursive) {
+            foreach ($this->_bd_fetch($url) as $file) {
+                if ($file->type == 'folder') {
+                    $result[] = $file;
+                    $result = array_merge($result, $this->_bd_query($file->id, $fetch_self = false, $recursive = true));
+                } elseif ($file->type == 'file') {
+                    $result[] = $file;
+                }
+            }
+        } else {
+            $result = $this->_bd_fetch($url);
+            if ($fetch_self && !$result) {
+                $path = '/files/'.$itemId.'?fields='.self::FETCHFIELDS;
+                $url = self::API_URL.$path;
+                $result = $this->_bd_fetch($url);
+            }
+        }
+
+        return $result;
+    }
+
+    /**
+     * Creates a base cURL object which is compatible with the Box.com API.
+     *
+     * @param string $path The path of the API call (eg. /folders/0)
+     *
+     * @return resource A compatible cURL object
+     */
+    protected function _bd_fetch($url, $contents = false)
+    {
+        $curl = curl_init($url);
+        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
+
+        if ($contents) {
+            return $this->_bd_curlExec($curl, false);
+        } else {
+            $result = $this->_bd_curlExec($curl);
+
+            if (isset($result->entries)) {
+                $res = $result->entries;
+                $cnt = count($res);
+                $total = $result->total_count;
+                $offset = $result->offset;
+                $single = ($result->limit == 1) ? true : false;
+                if (!$single && $total > ($offset + $cnt)) {
+                    $offset = $offset + $cnt;
+                    if (strpos($url, 'offset=') === false) {
+                        $url .= '&offset='.$offset;
+                    } else {
+                        $url = preg_replace('/^(.+?offset=)\d+(.*)$/', '${1}'.$offset.'$2', $url);
+                    }
+                    $more = $this->_bd_fetch($url);
+                    if (is_array($more)) {
+                        $res = array_merge($res, $more);
+                    }
+                }
+
+                return $res;
+            } else {
+                if (isset($result->type) && $result->type === 'error') {
+                    return false;
+                } else {
+                    return $result;
+                }
+            }
+        }
+    }
+
+    /**
+     * process of on netunmount
+     * Drop `box` & rm thumbs.
+     *
+     * @param array $options
+     *
+     * @return bool
+     */
+    public function netunmount($netVolumes, $key)
+    {
+        if ($tmbs = glob(rtrim($this->options['tmbPath'], '\\/').DIRECTORY_SEPARATOR.$this->tmbPrefix.'*.png')) {
+            foreach ($tmbs as $file) {
+                unlink($file);
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * Return debug info for client.
+     *
+     * @return array
+     **/
+    public function debug()
+    {
+        $res = parent::debug();
+        if (! empty($this->options['accessToken'])) {
+            $res['accessToken'] = $this->options['accessToken'];
+        }
+
+        return $res;
+    }
+
+    /**
+     * Close opened connection.
+     *
+     * @author Dmitry (dio) Levashov
+     **/
+    public function umount()
+    {
+    }
+
+    /**
+     * Return content URL.
+     *
+     * @param string $hash    file hash
+     * @param array  $options options
+     *
+     * @return string
+     *
+     * @author Naoki Sawada
+     **/
+    public function getContentUrl($hash, $options = array())
+    {
+        if (!empty($options['temporary'])) {
+            // try make temporary file
+            $url = parent::getContentUrl($hash, $options);
+            if ($url) {
+                return $url;
+            }
+        }
+        if (($file = $this->file($hash)) == false || !$file['url'] || $file['url'] == 1) {
+            $path = $this->decode($hash);
+
+            list(, $itemId) = $this->_bd_splitPath($path);
+            $params['shared_link']['access'] = 'open'; //open|company|collaborators
+
+            $url = self::API_URL.'/files/'.$itemId;
+
+            $curl = $this->_bd_prepareCurl(array(
+                CURLOPT_URL => $url,
+                CURLOPT_CUSTOMREQUEST => 'PUT',
+                CURLOPT_POSTFIELDS => json_encode($params),
+            ));
+            $res = $this->_bd_curlExec($curl, true, array(
+                    // The data is sent as JSON as per Box documentation.
+                    'Content-Type: application/json',
+                ));
+
+            if ($url = $this->getSharedWebContentLink($res)) {
+                return $url;
+            }
+        }
+
+        return '';
+    }
+
+    /**
+     * Prepare FTP connection
+     * Connect to remote server and check if credentials are correct, if so, store the connection id in $ftp_conn.
+     *
+     * @return bool
+     *
+     * @author Dmitry (dio) Levashov
+     * @author Cem (DiscoFever)
+     **/
+    protected function init()
+    {
+        if (!$this->options['accessToken']) {
+            return $this->setError('Required option `accessToken` is undefined.');
+        }
+
+        try {
+            $this->token = json_decode($this->options['accessToken']);
+            $this->_bd_refreshToken();
+        } catch (Exception $e) {
+            $this->token = null;
+            $this->session->remove('BoxTokens');
+
+            return $this->setError($e->getMessage());
+        }
+
+        if (empty($options['netkey'])) {
+            // make net mount key
+            $_tokenKey = isset($this->token->data->refresh_token) ? $this->token->data->refresh_token : $this->token->data->access_token;
+            $this->netMountKey = md5(implode('-', array('box', $this->options['path'], $_tokenKey)));
+        } else {
+            $this->netMountKey = $options['netkey'];
+        }
+
+        // normalize root path
+        if ($this->options['path'] == 'root') {
+            $this->options['path'] = '/';
+        }
+
+        $this->root = $this->options['path'] = $this->_normpath($this->options['path']);
+
+        $this->options['root'] == '' ? $this->options['root'] = 'Box.com' : $this->options['root'];
+
+        if (empty($this->options['alias'])) {
+            list(, $itemId) = $this->_bd_splitPath($this->options['path']);
+            $this->options['alias'] = ($this->options['path'] === '/') ? $this->options['root'] :
+                                      $this->_bd_query($itemId, $fetch_self = true)->name.'@Box.com';
+        }
+
+        $this->rootName = $this->options['alias'];
+
+        $this->tmbPrefix = 'box'.base_convert($this->netMountKey, 10, 32);
+
+        if (!empty($this->options['tmpPath'])) {
+            if ((is_dir($this->options['tmpPath']) || mkdir($this->options['tmpPath'])) && is_writable($this->options['tmpPath'])) {
+                $this->tmp = $this->options['tmpPath'];
+            }
+        }
+
+        if (!$this->tmp && ($tmp = elFinder::getStaticVar('commonTempPath'))) {
+            $this->tmp = $tmp;
+        }
+
+        // This driver dose not support `syncChkAsTs`
+        $this->options['syncChkAsTs'] = false;
+
+        // 'lsPlSleep' minmum 10 sec
+        $this->options['lsPlSleep'] = max(10, $this->options['lsPlSleep']);
+
+        return true;
+    }
+
+    /**
+     * Configure after successfull mount.
+     *
+     * @author Dmitry (dio) Levashov
+     **/
+    protected function configure()
+    {
+        parent::configure();
+
+        // fallback of $this->tmp
+        if (!$this->tmp && $this->tmbPathWritable) {
+            $this->tmp = $this->tmbPath;
+        }
+
+        $this->disabled[] = 'archive';
+        $this->disabled[] = 'extract';
+    }
+
+    /*********************************************************************/
+    /*                        OVERRIDE FUNCTIONS                         */
+    /*********************************************************************/
+
+    /**
+     * Return fileinfo based on filename
+     * For item ID based path file system
+     * Please override if needed on each drivers.
+     *
+     * @param string $path file cache
+     *
+     * @return array
+     */
+    protected function isNameExists($path)
+    {
+        list($pid, $name, $parent) = $this->_bd_splitPath($path);
+
+        // We can not use it because the search of Box.com there is a time lag.
+        // ref. https://docs.box.com/reference#searching-for-content
+        // > Note: If an item is added to Box then it becomes accessible through the search endpoint after ten minutes.
+
+        /***
+        $url = self::API_URL.'/search?limit=1&offset=0&content_types=name&ancestor_folder_ids='.rawurlencode($pid)
+        .'&query='.rawurlencode('"'.$name.'"')
+        .'fields='.self::FETCHFIELDS;
+
+        $raw = $this->_bd_fetch($url);
+
+        if (is_array($raw) && count($raw)) {
+            return $this->_bd_parseRaw($raw);
+        }
+        ***/
+
+        $phash = $this->encode($parent);
+
+        // do not recursive search
+        $searchExDirReg = $this->options['searchExDirReg'];
+        $this->options['searchExDirReg'] = '/.*/';
+        $search = $this->search($name, array(), $phash);
+        $this->options['searchExDirReg'] = $searchExDirReg;
+
+        if ($search) {
+            return $search[0];
+        }
+
+        return false;
+    }
+
+    /**
+     * Copy file/recursive copy dir only in current volume.
+     * Return new file path or false.
+     *
+     * @param string $src  source path
+     * @param string $dst  destination dir path
+     * @param string $name new file name (optionaly)
+     *
+     * @return string|false
+     *
+     * @author Dmitry (dio) Levashov
+     * @author Naoki Sawada
+     **/
+    protected function copy($src, $dst, $name)
+    {
+        if ($res = $this->_copy($src, $dst, $name)) {
+            return $res;
+        } else {
+            return $this->setError(elFinder::ERROR_COPY, $this->_path($src));
+        }
+    }
+
+    /**
+     * Copy file into another file.
+     *
+     * @param string $source    source file path
+     * @param string $targetDir target directory path
+     * @param string $name      new file name
+     *
+     * @return string|false
+     *
+     * @author Dmitry (dio) Levashov
+     **/
+    protected function _copy($source, $targetDir, $name)
+    {
+        try {
+            //Set the Parent id
+            list(, $parentId) = $this->_bd_splitPath($targetDir);
+            list($srcPid, $srcId) = $this->_bd_splitPath($source);
+
+            $srcItem = $this->_bd_getRawItem($source);
+
+            $properties = array('name' => $name, 'parent' => array('id' => $parentId));
+            $data = (object) $properties;
+
+            $type = ($srcItem->type === 'folder') ? 'folders' : 'files';
+            $url = self::API_URL.'/'.$type.'/'.$srcId.'/copy';
+
+            $curl = $this->_bd_prepareCurl(array(
+                CURLOPT_URL => $url,
+                CURLOPT_POST => true,
+                CURLOPT_POSTFIELDS => json_encode($data),
+            ));
+
+            //copy File in the Parent
+            $result = $this->_bd_curlExec($curl, $targetDir);
+
+            if (isset($result->id)) {
+                if ($type === 'folders' && isset($this->sessionCache['subdirs'])) {
+                    $this->sessionCache['subdirs'][$targetDir] = true;
+                }
+
+                return $this->_joinPath($targetDir, $result->id);
+            }
+
+            return false;
+        } catch (Exception $e) {
+            return $this->setError('Box error: '.$e->getMessage());
+        }
+    }
+
+    /*********************************************************************/
+    /*                        INIT AND CONFIGURE                         */
+    /*********************************************************************/
+
+    /**
+     * Get dat(box metadata) from Box.com.
+     *
+     * @param string $path
+     *
+     * @return array box metadata
+     */
+    protected function _bd_getRawItem($path)
+    {
+        if ($path == '/') {
+            return $this->_bd_query('0', $fetch_self = true);
+        }
+
+        list(, $itemId) = $this->_bd_splitPath($path);
+
+        try {
+            return $this->_bd_query($itemId, $fetch_self = true);
+        } catch (Exception $e) {
+            return array();
+        }
+    }
+
+    /**
+     * Return fake path started from root dir.
+     *
+     * @param string $path file path
+     *
+     * @return string
+     *
+     * @author Dmitry (dio) Levashov
+     **/
+    protected function _path($path)
+    {
+        return $this->rootName.$this->_normpath(substr($path, strlen($this->root)));
+    }
+
+    /*********************************************************************/
+    /*                               FS API                              */
+    /*********************************************************************/
+
+    /**
+     * Remove file/ recursive remove dir.
+     *
+     * @param string $path  file path
+     * @param bool   $force try to remove even if file locked
+     *
+     * @return bool
+     *
+     * @author Dmitry (dio) Levashov
+     * @author Naoki Sawada
+     **/
+    protected function remove($path, $force = false)
+    {
+        $stat = $this->stat($path);
+        $stat['realpath'] = $path;
+        $this->rmTmb($stat);
+        $this->clearcache();
+
+        if (empty($stat)) {
+            return $this->setError(elFinder::ERROR_RM, $this->_path($path), elFinder::ERROR_FILE_NOT_FOUND);
+        }
+
+        if (!$force && !empty($stat['locked'])) {
+            return $this->setError(elFinder::ERROR_LOCKED, $this->_path($path));
+        }
+
+        if ($stat['mime'] == 'directory') {
+            if (!$this->_rmdir($path)) {
+                return $this->setError(elFinder::ERROR_RM, $this->_path($path));
+            }
+        } else {
+            if (!$this->_unlink($path)) {
+                return $this->setError(elFinder::ERROR_RM, $this->_path($path));
+            }
+        }
+
+        $this->removed[] = $stat;
+
+        return true;
+    }
+
+    /**
+     * Remove dir.
+     *
+     * @param string $path dir path
+     *
+     * @return bool
+     *
+     * @author Dmitry (dio) Levashov
+     **/
+    protected function _rmdir($path)
+    {
+        return $this->_bd_unlink($path, 'folders');
+    }
+
+    /**
+     * Remove item.
+     *
+     * @param string $path file path
+     *
+     * @return bool
+     **/
+    protected function _bd_unlink($path, $type = null)
+    {
+        try {
+            list(, $itemId) = $this->_bd_splitPath($path);
+
+            if ($type == 'folders') {
+                $url = self::API_URL.'/'.$type.'/'.$itemId.'?recursive=true';
+            } else {
+                $url = self::API_URL.'/'.$type.'/'.$itemId;
+            }
+
+            $curl = $this->_bd_prepareCurl(array(
+                    CURLOPT_URL => $url,
+                    CURLOPT_CUSTOMREQUEST => 'DELETE',
+            ));
+
+            //unlink or delete File or Folder in the Parent
+            $this->_bd_curlExec($curl);
+        } catch (Exception $e) {
+            return $this->setError('Box error: '.$e->getMessage());
+        }
+
+        return true;
+    }
+
+    /**
+     * Get Parent ID, Item ID, Parent Path as an array from path.
+     *
+     * @param string $path
+     *
+     * @return array
+     */
+    protected function _bd_splitPath($path)
+    {
+        $path = trim($path, '/');
+        $pid = '';
+        if ($path === '') {
+            $id = '0';
+            $parent = '';
+        } else {
+            $paths = explode('/', trim($path, '/'));
+            $id = array_pop($paths);
+            if ($paths) {
+                $parent = '/'.implode('/', $paths);
+                $pid = array_pop($paths);
+            } else {
+                $pid = '0';
+                $parent = '/';
+            }
+        }
+
+        return array($pid, $id, $parent);
+    }
+
+    /**
+     * Creates a base cURL object which is compatible with the Box.com API.
+     *
+     * @param array $options cURL options
+     *
+     * @return resource A compatible cURL object
+     */
+    protected function _bd_prepareCurl($options = array())
+    {
+        $curl = curl_init();
+
+        $defaultOptions = array(
+            // General options.
+            CURLOPT_RETURNTRANSFER => true,
+        );
+
+        curl_setopt_array($curl, $options + $defaultOptions);
+
+        return $curl;
+    }
+
+    /**
+     * Call curl_exec().
+     *
+     * @param resource    $curl
+     * @param bool|string $decodeOrParent
+     * @param array       $headers
+     *
+     * @throws \Exception
+     *
+     * @return mixed
+     */
+    protected function _bd_curlExec($curl, $decodeOrParent = true, $headers = array())
+    {
+        $headers = array_merge(array(
+            'Authorization: Bearer '.$this->token->data->access_token,
+        ), $headers);
+
+        $result = elFinder::curlExec($curl, array(), $headers);
+
+        if (!$decodeOrParent) {
+            return $result;
+        }
+
+        $decoded = json_decode($result);
+
+        if (!empty($decoded->error_code)) {
+            $errmsg = $decoded->error_code;
+            if (!empty($decoded->message)) {
+                $errmsg .= ': '.$decoded->message;
+            }
+            throw new \Exception($errmsg);
+        }
+
+        // make catch
+        if ($decodeOrParent && $decodeOrParent !== true) {
+            $raws = null;
+            list(, $parentId) = $this->_bd_splitPath($decodeOrParent);
+            if (isset($decoded->entries)) {
+                $raws = $decoded->entries;
+            } elseif (isset($decoded->id)) {
+                $raws = array($decoded);
+            }
+            if ($raws) {
+                foreach ($raws as $raw) {
+                    if (isset($raw->id)) {
+                        $stat = $this->_bd_parseRaw($raw);
+                        $itemPath = $this->_joinPath($decodeOrParent, $raw->id);
+                        $this->updateCache($itemPath, $stat);
+                    }
+                }
+            }
+        }
+
+        return $decoded;
+    }
+
+    /**
+     * Parse line from box metadata output and return file stat (array).
+     *
+     * @param string $raw line from ftp_rawlist() output
+     *
+     * @return array
+     *
+     * @author Dmitry Levashov
+     **/
+    protected function _bd_parseRaw($raw)
+    {
+        $stat = array();
+
+        $stat['rev'] = isset($raw->id) ? $raw->id : 'root';
+        $stat['name'] = $raw->name;
+        if (!empty($raw->modified_at)) {
+            $stat['ts'] = strtotime($raw->modified_at);
+        }
+
+        if ($raw->type === 'folder') {
+            $stat['mime'] = 'directory';
+            $stat['size'] = 0;
+            $stat['dirs'] = -1;
+        } else {
+            $stat['size'] = (int) $raw->size;
+            if (!empty($raw->shared_link->url) && $raw->shared_link->access == 'open') {
+                if ($url = $this->getSharedWebContentLink($raw)) {
+                    $stat['url'] = $url;
+                }
+            } elseif (!$this->disabledGetUrl) {
+                $stat['url'] = '1';
+            }
+        }
+
+        return $stat;
+    }
+
+    /**
+     * Return content URL.
+     *
+     * @param array $raw data
+     *
+     * @return array
+     *
+     * @author Naoki Sawada
+     **/
+    protected function getSharedWebContentLink($raw)
+    {
+        $fExtension = pathinfo($raw->name, PATHINFO_EXTENSION);
+        list($fType) = explode('/', self::mimetypeInternalDetect($raw->name));
+
+        if ($raw->shared_link->url && ($fType == 'image' || $fType == 'video' || $fType == 'audio')) {
+            if ($fExtension == 'jpg' && $fType == 'image') {
+                $url = 'https://app.box.com/representation/file_version_'.$raw->file_version->id.'/image_2048_'.$fExtension.'/1.'.$fExtension.'?shared_name='.basename($raw->shared_link->url);
+
+                return $url;
+            } elseif ($fExtension !== 'jpg' && $fType == 'image') {
+                $url = 'https://app.box.com/representation/file_version_'.$raw->file_version->id.'/image_2048/1.'.$fExtension.'?shared_name='.basename($raw->shared_link->url);
+
+                return $url;
+            } elseif ($fType == 'video') {
+                $url = 'https://app.box.com/representation/file_version_'.$raw->file_version->id.'/video_480.'.$fExtension.'?shared_name='.basename($raw->shared_link->url);
+
+                return $url;
+            } elseif ($fType == 'audio') {
+                $url = 'https://app.box.com/index.php?rm=preview_stream&amp&file_version_'.$raw->file_version->id.'/audio/mpeg:'.$raw->name.'&shared_name='.basename($raw->shared_link->url);
+
+                return $url;
+            }
+        } elseif ($raw->shared_link->download_url) {
+            return $raw->shared_link->download_url;
+        }
+
+        return false;
+    }
+
+    /**
+     * Join dir name and file name and retur full path.
+     *
+     * @param string $dir
+     * @param string $name
+     *
+     * @return string
+     *
+     * @author Dmitry (dio) Levashov
+     **/
+    protected function _joinPath($dir, $name)
+    {
+        if (strval($dir) === '0') {
+            $dir = '';
+        }
+
+        return $this->_normpath($dir.'/'.$name);
+    }
+
+    /*********************** paths/urls *************************/
+
+    /**
+     * Return normalized path, this works the same as os.path.normpath() in Python.
+     *
+     * @param string $path path
+     *
+     * @return string
+     *
+     * @author Troex Nevelin
+     **/
+    protected function _normpath($path)
+    {
+        if (DIRECTORY_SEPARATOR !== '/') {
+            $path = str_replace(DIRECTORY_SEPARATOR, '/', $path);
+        }
+        $path = '/'.ltrim($path, '/');
+
+        return $path;
+    }
+
+    /**
+     * Remove file.
+     *
+     * @param string $path file path
+     *
+     * @return bool
+     *
+     * @author Dmitry (dio) Levashov
+     **/
+    protected function _unlink($path)
+    {
+        return $this->_bd_unlink($path, 'files');
+    }
+
+    /**
+     * Create thumnbnail and return it's URL on success.
+     *
+     * @param string $path file path
+     * @param string $mime file mime type
+
+     * @return string|false
+     *
+     * @author Dmitry (dio) Levashov
+     * @author Naoki Sawada
+     **/
+    protected function createTmb($path, $stat)
+    {
+        if (!$stat || !$this->canCreateTmb($path, $stat)) {
+            return false;
+        }
+
+        $name = $this->tmbname($stat);
+        $tmb = $this->tmbPath.DIRECTORY_SEPARATOR.$name;
+
+        // copy image into tmbPath so some drivers does not store files on local fs
+        if (!$data = $this->_bd_getThumbnail($path)) {
+            return false;
+        }
+        if (!file_put_contents($tmb, $data)) {
+            return false;
+        }
+
+        $result = false;
+
+        $tmbSize = $this->tmbSize;
+
+        if (($s = getimagesize($tmb)) == false) {
+            return false;
+        }
+
+        /* If image smaller or equal thumbnail size - just fitting to thumbnail square */
+        if ($s[0] <= $tmbSize && $s[1] <= $tmbSize) {
+            $result = $this->imgSquareFit($tmb, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png');
+        } else {
+            if ($this->options['tmbCrop']) {
+
+                /* Resize and crop if image bigger than thumbnail */
+                if (!(($s[0] > $tmbSize && $s[1] <= $tmbSize) || ($s[0] <= $tmbSize && $s[1] > $tmbSize)) || ($s[0] > $tmbSize && $s[1] > $tmbSize)) {
+                    $result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, false, 'png');
+                }
+
+                if (($s = getimagesize($tmb)) != false) {
+                    $x = $s[0] > $tmbSize ? intval(($s[0] - $tmbSize) / 2) : 0;
+                    $y = $s[1] > $tmbSize ? intval(($s[1] - $tmbSize) / 2) : 0;
+                    $result = $this->imgCrop($tmb, $tmbSize, $tmbSize, $x, $y, 'png');
+                }
+            } else {
+                $result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, true, 'png');
+            }
+
+            $result = $this->imgSquareFit($tmb, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png');
+        }
+
+        if (!$result) {
+            unlink($tmb);
+
+            return false;
+        }
+
+        return $name;
+    }
+
+    /**
+     * Return thumbnail file name for required file.
+     *
+     * @param array $stat file stat
+     *
+     * @return string
+     *
+     * @author Dmitry (dio) Levashov
+     **/
+    protected function tmbname($stat)
+    {
+        return $this->tmbPrefix.$stat['rev'].$stat['ts'].'.png';
+    }
+
+    /**
+     * Get thumbnail from Box.com.
+     *
+     * @param string $path
+     * @param string $size
+     *
+     * @return string | boolean
+     */
+    protected function _bd_getThumbnail($path)
+    {
+        list(, $itemId) = $this->_bd_splitPath($path);
+
+        try {
+            $url = self::API_URL.'/files/'.$itemId.'/thumbnail.png?min_height=' . $this->tmbSize . '&min_width=' . $this->tmbSize;
+
+            $contents = $this->_bd_fetch($url, true);
+
+            return $contents;
+        } catch (Exception $e) {
+            return false;
+        }
+    }
+
+    /**
+     * Return parent directory path.
+     *
+     * @param string $path file path
+     *
+     * @return string
+     *
+     * @author Dmitry (dio) Levashov
+     **/
+    protected function _dirname($path)
+    {
+        list(, , $dirname) = $this->_bd_splitPath($path);
+
+        return $dirname;
+    }
+
+    /**
+     * Return file name.
+     *
+     * @param string $path file path
+     *
+     * @return string
+     *
+     * @author Dmitry (dio) Levashov
+     **/
+    protected function _basename($path)
+    {
+        list(, $basename) = $this->_bd_splitPath($path);
+
+        return $basename;
+    }
+
+    /**
+     * Return file path related to root dir.
+     *
+     * @param string $path file path
+     *
+     * @return string
+     *
+     * @author Dmitry (dio) Levashov
+     **/
+    protected function _relpath($path)
+    {
+        return $path;
+    }
+
+    /***************** file stat ********************/
+
+    /**
+     * Convert path related to root dir into real path.
+     *
+     * @param string $path file path
+     *
+     * @return string
+     *
+     * @author Dmitry (dio) Levashov
+     **/
+    protected function _abspath($path)
+    {
+        return $path;
+    }
+
+    /**
+     * Return true if $path is children of $parent.
+     *
+     * @param string $path   path to check
+     * @param string $parent parent path
+     *
+     * @return bool
+     *
+     * @author Dmitry (dio) Levashov
+     **/
+    protected function _inpath($path, $parent)
+    {
+        return $path == $parent || strpos($path, $parent.'/') === 0;
+    }
+
+    /**
+     * Return stat for given path.
+     * Stat contains following fields:
+     * - (int)    size    file size in b. required
+     * - (int)    ts      file modification time in unix time. required
+     * - (string) mime    mimetype. required for folders, others - optionally
+     * - (bool)   read    read permissions. required
+     * - (bool)   write   write permissions. required
+     * - (bool)   locked  is object locked. optionally
+     * - (bool)   hidden  is object hidden. optionally
+     * - (string) alias   for symlinks - link target path relative to root path. optionally
+     * - (string) target  for symlinks - link target path. optionally.
+     *
+     * If file does not exists - returns empty array or false.
+     *
+     * @param string $path file path
+     *
+     * @return array|false
+     *
+     * @author Dmitry (dio) Levashov
+     **/
+    protected function _stat($path)
+    {
+        if ($raw = $this->_bd_getRawItem($path)) {
+            return $this->_bd_parseRaw($raw);
+        }
+
+        return false;
+    }
+
+    /******************** file/dir content *********************/
+
+    /**
+     * Return true if path is dir and has at least one childs directory.
+     *
+     * @param string $path dir path
+     *
+     * @return bool
+     *
+     * @author Dmitry (dio) Levashov
+     **/
+    protected function _subdirs($path)
+    {
+        list(, $itemId) = $this->_bd_splitPath($path);
+
+        $path = '/folders/'.$itemId.'/items?limit=1&offset=0&fields='.self::FETCHFIELDS;
+
+        $url = self::API_URL.$path;
+
+        if ($res = $this->_bd_fetch($url)) {
+            if ($res[0]->type == 'folder') {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Return object width and height
+     * Ususaly used for images, but can be realize for video etc...
+     *
+     * @param string $path file path
+     * @param string $mime file mime type
+     *
+     * @return string
+     *
+     * @author Dmitry (dio) Levashov
+     **/
+    protected function _dimensions($path, $mime)
+    {
+        if (strpos($mime, 'image') !== 0) {
+            return '';
+        }
+
+        $ret = '';
+        if ($work = $this->getWorkFile($path)) {
+            if ($size = @getimagesize($work)) {
+                $cache['width'] = $size[0];
+                $cache['height'] = $size[1];
+                $ret = $size[0].'x'.$size[1];
+            }
+        }
+        is_file($work) && @unlink($work);
+
+        return $ret;
+    }
+
+    /**
+     * Return files list in directory.
+     *
+     * @param string $path dir path
+     *
+     * @return array
+     *
+     * @author Dmitry (dio) Levashov
+     * @author Cem (DiscoFever)
+     **/
+    protected function _scandir($path)
+    {
+        return isset($this->dirsCache[$path])
+            ? $this->dirsCache[$path]
+            : $this->cacheDir($path);
+    }
+
+    /********************  file/dir manipulations *************************/
+
+    /**
+     * Cache dir contents.
+     *
+     * @param string $path dir path
+     *
+     * @author Dmitry Levashov
+     **/
+    protected function cacheDir($path)
+    {
+        $this->dirsCache[$path] = array();
+        $hasDir = false;
+
+        if ($path == '/') {
+            $items = $this->_bd_query('0', $fetch_self = true);   // get root directory with folder & files
+            $itemId = $items->id;
+        } else {
+            list(, $itemId) = $this->_bd_splitPath($path);
+        }
+
+        $res = $this->_bd_query($itemId);
+
+        if ($res) {
+            foreach ($res as $raw) {
+                if ($stat = $this->_bd_parseRaw($raw)) {
+                    $itemPath = $this->_joinPath($path, $raw->id);
+                    $stat = $this->updateCache($itemPath, $stat);
+                    if (empty($stat['hidden'])) {
+                        if (!$hasDir && $stat['mime'] === 'directory') {
+                            $hasDir = true;
+                        }
+                        $this->dirsCache[$path][] = $itemPath;
+                    }
+                }
+            }
+        }
+
+        if (isset($this->sessionCache['subdirs'])) {
+            $this->sessionCache['subdirs'][$path] = $hasDir;
+        }
+
+        return $this->dirsCache[$path];
+    }
+
+    /**
+     * Open file and return file pointer.
+     *
+     * @param string $path  file path
+     * @param bool   $write open file for writing
+     *
+     * @return resource|false
+     *
+     * @author Dmitry (dio) Levashov
+     **/
+    protected function _fopen($path, $mode = 'rb')
+    {
+        if ($mode === 'rb' || $mode === 'r') {
+            list(, $itemId) = $this->_bd_splitPath($path);
+            $data = array(
+                'target' => self::API_URL.'/files/'.$itemId.'/content',
+                'headers' => array('Authorization: Bearer '.$this->token->data->access_token),
+            );
+
+            return elFinder::getStreamByUrl($data);
+        }
+
+        return false;
+    }
+
+    /**
+     * Close opened file.
+     *
+     * @param resource $fp file pointer
+     *
+     * @return bool
+     *
+     * @author Dmitry (dio) Levashov
+     **/
+    protected function _fclose($fp, $path = '')
+    {
+        fclose($fp);
+        if ($path) {
+            unlink($this->getTempFile($path));
+        }
+    }
+
+    /**
+     * Create dir and return created dir path or false on failed.
+     *
+     * @param string $path parent dir path
+     * @param string $name new directory name
+     *
+     * @return string|bool
+     *
+     * @author Dmitry (dio) Levashov
+     **/
+    protected function _mkdir($path, $name)
+    {
+        try {
+            list(, $parentId) = $this->_bd_splitPath($path);
+            $params = array('name' => $name, 'parent' => array('id' => $parentId));
+
+            $url = self::API_URL.'/folders';
+
+            $curl = $this->_bd_prepareCurl(array(
+                CURLOPT_URL => $url,
+                CURLOPT_POST => true,
+                CURLOPT_POSTFIELDS => json_encode($params),
+            ));
+
+            //create the Folder in the Parent
+            $folder = $this->_bd_curlExec($curl, $path);
+
+            return $this->_joinPath($path, $folder->id);
+        } catch (Exception $e) {
+            return $this->setError('Box error: '.$e->getMessage());
+        }
+    }
+
+    /**
+     * Create file and return it's path or false on failed.
+     *
+     * @param string $path parent dir path
+     * @param string $name new file name
+     *
+     * @return string|bool
+     *
+     * @author Dmitry (dio) Levashov
+     **/
+    protected function _mkfile($path, $name)
+    {
+        return $this->_save($this->tmpfile(), $path, $name, array());
+    }
+
+    /**
+     * Create new file and write into it from file pointer.
+     * Return new file path or false on error.
+     *
+     * @param resource $fp   file pointer
+     * @param string   $dir  target dir path
+     * @param string   $name file name
+     * @param array    $stat file stat (required by some virtual fs)
+     *
+     * @return bool|string
+     *
+     * @author Dmitry (dio) Levashov
+     **/
+    protected function _save($fp, $path, $name, $stat)
+    {
+        $itemId = '';
+        if ($name === '') {
+            list($parentId, $itemId, $parent) = $this->_bd_splitPath($path);
+        } else {
+            if ($stat) {
+                if (isset($stat['name'])) {
+                    $name = $stat['name'];
+                }
+                if (isset($stat['rev']) && strpos($stat['hash'], $this->id) === 0) {
+                    $itemId = $stat['rev'];
+                }
+            }
+            list(, $parentId) = $this->_bd_splitPath($path);
+            $parent = $path;
+        }
+
+        try {
+            //Create or Update a file
+            $metaDatas = stream_get_meta_data($fp);
+            $tmpFilePath = isset($metaDatas['uri']) ? $metaDatas['uri'] : '';
+            // remote contents
+            if (!$tmpFilePath || empty($metaDatas['seekable'])) {
+                $tmpHandle = $this->tmpfile();
+                stream_copy_to_stream($fp, $tmpHandle);
+                $metaDatas = stream_get_meta_data($tmpHandle);
+                $tmpFilePath = $metaDatas['uri'];
+            }
+
+            if ($itemId === '') {
+                //upload or create new file in destination target
+                $properties = array('name' => $name, 'parent' => array('id' => $parentId));
+                $url = self::UPLOAD_URL.'/files/content';
+            } else {
+                //update existing file in destination target
+                $properties = array('name' => $name);
+                $url = self::UPLOAD_URL.'/files/'.$itemId.'/content';
+            }
+
+            if (class_exists('CURLFile')) {
+                $cfile = new CURLFile($tmpFilePath);
+            } else {
+                $cfile = '@'.$tmpFilePath;
+            }
+            $params = array('attributes' => json_encode($properties), 'file' => $cfile);
+            $curl = $this->_bd_prepareCurl(array(
+                    CURLOPT_URL => $url,
+                    CURLOPT_POST => true,
+                    CURLOPT_POSTFIELDS => $params,
+                ));
+
+            $file = $this->_bd_curlExec($curl, $parent);
+
+            return $this->_joinPath($parent, $file->entries[0]->id);
+        } catch (Exception $e) {
+            return $this->setError('Box error: '.$e->getMessage());
+        }
+    }
+
+    /**
+     * Create symlink. FTP driver does not support symlinks.
+     *
+     * @param string $target link target
+     * @param string $path   symlink path
+     *
+     * @return bool
+     *
+     * @author Dmitry (dio) Levashov
+     **/
+    protected function _symlink($target, $path, $name)
+    {
+        return false;
+    }
+
+    /**
+     * Move file into another parent dir.
+     * Return new file path or false.
+     *
+     * @param string $source source file path
+     * @param string $target target dir path
+     * @param string $name   file name
+     *
+     * @return string|bool
+     *
+     * @author Dmitry (dio) Levashov
+     **/
+    protected function _move($source, $targetDir, $name)
+    {
+        try {
+            //moving and renaming a file or directory
+            //Set new Parent and remove old parent
+            list(, $parentId) = $this->_bd_splitPath($targetDir);
+            list(, $itemId) = $this->_bd_splitPath($source);
+
+            $srcItem = $this->_bd_getRawItem($source);
+
+            //rename or move file or folder in destination target
+            $properties = array('name' => $name, 'parent' => array('id' => $parentId));
+
+            $type = ($srcItem->type === 'folder') ? 'folders' : 'files';
+            $url = self::API_URL.'/'.$type.'/'.$itemId;
+            $data = (object) $properties;
+
+            $curl = $this->_bd_prepareCurl(array(
+                CURLOPT_URL => $url,
+                CURLOPT_CUSTOMREQUEST => 'PUT',
+                CURLOPT_POSTFIELDS => json_encode($data),
+            ));
+
+            $result = $this->_bd_curlExec($curl, $targetDir, array(
+                    // The data is sent as JSON as per Box documentation.
+                    'Content-Type: application/json',
+                ));
+
+            if ($result && isset($result->id)) {
+                return $this->_joinPath($targetDir, $result->id);
+            }
+
+            return false;
+        } catch (Exception $e) {
+            return $this->setError('Box error: '.$e->getMessage());
+        }
+    }
+
+    /**
+     * Get file contents.
+     *
+     * @param string $path file path
+     *
+     * @return string|false
+     *
+     * @author Dmitry (dio) Levashov
+     **/
+    protected function _getContents($path)
+    {
+        $contents = '';
+
+        try {
+            list(, $itemId) = $this->_bd_splitPath($path);
+            $url = self::API_URL.'/files/'.$itemId.'/content';
+
+            $contents = $this->_bd_fetch($url, true);
+        } catch (Exception $e) {
+            return $this->setError('Box error: '.$e->getMessage());
+        }
+
+        return $contents;
+    }
+
+    /**
+     * Write a string to a file.
+     *
+     * @param string $path    file path
+     * @param string $content new file content
+     *
+     * @return bool
+     *
+     * @author Dmitry (dio) Levashov
+     **/
+    protected function _filePutContents($path, $content)
+    {
+        $res = false;
+
+        if ($local = $this->getTempFile($path)) {
+            if (file_put_contents($local, $content, LOCK_EX) !== false
+            && ($fp = fopen($local, 'rb'))) {
+                clearstatcache();
+                $res = $this->_save($fp, $path, '', array());
+                fclose($fp);
+            }
+            file_exists($local) && unlink($local);
+        }
+
+        return $res;
+    }
+
+    /**
+     * Detect available archivers.
+     **/
+    protected function _checkArchivers()
+    {
+        // die('Not yet implemented. (_checkArchivers)');
+        return array();
+    }
+
+    /**
+     * chmod implementation.
+     *
+     * @return bool
+     **/
+    protected function _chmod($path, $mode)
+    {
+        return false;
+    }
+
+    /**
+     * Unpack archive.
+     *
+     * @param string $path archive path
+     * @param array  $arc  archiver command and arguments (same as in $this->archivers)
+     *
+     * @return true
+     *
+     * @author Dmitry (dio) Levashov
+     * @author Alexey Sukhotin
+     **/
+    protected function _unpack($path, $arc)
+    {
+        die('Not yet implemented. (_unpack)');
+        //return false;
+    }
+
+    /**
+     * Recursive symlinks search.
+     *
+     * @param string $path file/dir path
+     *
+     * @return bool
+     *
+     * @author Dmitry (dio) Levashov
+     **/
+    protected function _findSymlinks($path)
+    {
+        die('Not yet implemented. (_findSymlinks)');
+    }
+
+    /**
+     * Extract files from archive.
+     *
+     * @param string $path archive path
+     * @param array  $arc  archiver command and arguments (same as in $this->archivers)
+     *
+     * @return true
+     *
+     * @author Dmitry (dio) Levashov,
+     * @author Alexey Sukhotin
+     **/
+    protected function _extract($path, $arc)
+    {
+        die('Not yet implemented. (_extract)');
+    }
+
+    /**
+     * Create archive and return its path.
+     *
+     * @param string $dir   target dir
+     * @param array  $files files names list
+     * @param string $name  archive name
+     * @param array  $arc   archiver options
+     *
+     * @return string|bool
+     *
+     * @author Dmitry (dio) Levashov,
+     * @author Alexey Sukhotin
+     **/
+    protected function _archive($dir, $files, $name, $arc)
+    {
+        die('Not yet implemented. (_archive)');
+    }
+} // END class

部分文件因文件數量過多而無法顯示