diff --git a/docs/config.md b/docs/config.md index d1a1ee5a..fa7db08b 100644 --- a/docs/config.md +++ b/docs/config.md @@ -158,6 +158,13 @@ If set to `true`, the size of uploading file will be verified. If set to `true`, the mime type of uploading file will be verified. +### cyrillic\_to\_latin + +* type: `boolean` +* default: `true` + +If set to `true`, cyrillic charecters will be swapped for the Latin equivalent. + ### over\_write\_on_duplicate * type: `int` diff --git a/src/Lfm.php b/src/Lfm.php index dc44c692..179f2847 100644 --- a/src/Lfm.php +++ b/src/Lfm.php @@ -265,6 +265,31 @@ public function isRunningOnWindows() return strtoupper(substr(PHP_OS, 0, 3)) === 'WIN'; } + /** + * Convert cyrillic chrecters to latin. + * @param string $file_name Name of the file. + * + * @return string + */ + public function convertCyrillicToLatin($file_name) + { + $cyr = [ + 'ж', 'ч', 'щ', 'ш', 'ю', 'а', 'б', 'в', 'г', 'д', 'е', 'з', 'и', 'й', + 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ъ', 'ь', 'я', + 'Ж', 'Ч', 'Щ', 'Ш', 'Ю', 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'З', 'И', 'Й', 'К', + 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ъ', 'Ь', 'Я' + ]; + + $lat = [ + 'zh', 'ch', 'sht', 'sh', 'yu', 'a', 'b', 'v', 'g', 'd', 'e', 'z', 'i', 'j', 'k', + 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', 'c', 'y', 'x', 'q', + 'Zh', 'Ch', 'Sht', 'Sh', 'Yu', 'A', 'B', 'V', 'G', 'D', 'E', 'Z', 'I', 'J', + 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'F', 'H', 'c', 'Y', 'X', 'Q' + ]; + + return str_replace($cyr, $lat, $file_name); + } + /** * Shorter function of getting localized error message.. * diff --git a/src/LfmPath.php b/src/LfmPath.php index b9a778c5..6fe1f299 100644 --- a/src/LfmPath.php +++ b/src/LfmPath.php @@ -280,6 +280,13 @@ private function getNewName($file) $new_file_name = preg_replace('/[^A-Za-z0-9\-\']/', '_', $new_file_name); } + // Swap "#" with "_" in file name + $new_file_name = str_replace('#', '_', $new_file_name); + + if (config('lfm.cyrillic_to_latin') === true) { + $new_file_name = $this->helper->convertCyrillicToLatin($new_file_name); + } + if ($extension) { $new_file_name_with_extention = $new_file_name . '.' . $extension; } diff --git a/src/config/lfm.php b/src/config/lfm.php index 5c418126..c5f0bd29 100644 --- a/src/config/lfm.php +++ b/src/config/lfm.php @@ -108,6 +108,8 @@ 'should_validate_mime' => true, + 'cyrillic_to_latin' => true, + // behavior on files with identical name // setting it to true cause old file replace with new one // setting it to false show `error-file-exist` error and stop upload diff --git a/src/lang/bg/lfm.php b/src/lang/bg/lfm.php index b1afda5d..e16b25f8 100644 --- a/src/lang/bg/lfm.php +++ b/src/lang/bg/lfm.php @@ -2,65 +2,78 @@ return [ 'nav-back' => 'Назад', - 'nav-new' => 'Нова Папка', - 'nav-upload' => 'Качване', - 'nav-thumbnails' => 'Тъмб', - 'nav-list' => 'Списък', + 'nav-new' => 'Нова папка', + 'nav-upload' => 'Качи', + 'nav-thumbnails' => 'Миниатюри', + 'nav-list' => 'Лист', + 'nav-sort' => 'Сортиране', + 'nav-sort-alphabetic'=> 'Сортирай по азбучен ред', + 'nav-sort-time' => 'Сортирай по време', - 'menu-rename' => 'Преименувай', - 'menu-delete' => 'Изтрии', + 'menu-rename' => 'Преименуване', + 'menu-delete' => 'Изтриване', 'menu-view' => 'Преглед', - 'menu-download' => 'Свали', - 'menu-resize' => 'Оразмер', - 'menu-crop' => 'Отрежи', + 'menu-download' => 'Сваляне', + 'menu-resize' => 'Преоразмеряване', + 'menu-crop' => 'Изрязване', + 'menu-move' => 'Преместване', + 'menu-multiple' => 'Мулти-селектиране', - 'title-page' => 'Файлов мениджър', + 'title-page' => 'Файл Мениджър', 'title-panel' => 'Laravel FileManager', - 'title-upload' => 'Качи файл', + 'title-upload' => 'Качване на файл(ове)', 'title-view' => 'Виж файл', 'title-user' => 'Файлове', - 'title-share' => 'Споделени Файлове', + 'title-share' => 'Споделени файлове', 'title-item' => 'Елемент', 'title-size' => 'Размер', 'title-type' => 'Тип', - 'title-modified' => 'Модифицирано', + 'title-modified' => 'Променено', 'title-action' => 'Действие', 'type-folder' => 'Папка', 'message-empty' => 'Папката е празна.', - 'message-choose' => 'Избери файл', - 'message-delete' => 'Сигурни ли сте, че изкате да изтриете този елемент ?', + 'message-choose' => 'Изберете файл(ове)', + 'message-delete' => 'Сигурни ли сте, че искате да изтриете този елемент?', 'message-name' => 'Име на папка:', 'message-rename' => 'Преименувай на:', - 'message-extension_not_found' => '(translation wanted)', + 'message-extension_not_found' => 'Моля, инсталирайте разширение gd или imagick, за да изрязвате, преоразмерявате и правите миниатюри (тъмбнейли) на изображения.', + 'message-drop' => 'Или пуснете файлове тук за качване', - 'error-rename' => 'Името е заето!', - 'error-file-empty' => 'Трябва да изберете файл !', + 'error-rename' => 'Името на файла е вече използвано!', + 'error-file-name' => 'Името на файла не трябва да бъде празно!', + 'error-file-empty' => 'Трябва да изберете файл!', 'error-file-exist' => 'Файл с това име вече съществува!', - 'error-file-size' => 'File size exceeds server limit! (maximum size: :max)', + 'error-file-size' => 'Размерът на файла надвишава ограничението на сървъра! (максимален размер: :max)', 'error-delete-folder'=> 'Не можете да изтриете тази папка, защото не е празна!', - 'error-folder-name' => 'Моля изберете име на папката', + 'error-folder-name' => 'Името на папката не трябва да бъде празно!', 'error-folder-exist'=> 'Папка с това име вече съществува!', - 'error-folder-alnum'=> 'Only alphanumeric folder names are allowed!', - 'error-mime' => 'Грешен тип на файла: ', - 'error-instance' => 'The uploaded file should be an instance of UploadedFile ( Грешка )', + 'error-folder-alnum'=> 'Разрешени са само буквено-цифрови имена на папки!', + 'error-folder-not-found'=> 'Папката не е намерена! (:folder)', + 'error-mime' => 'Неочакван MimeType: ', + 'error-size' => 'Размер над лимита:', + 'error-instance' => 'Каченият файл трябва да е инстанция на UploadedFile', 'error-invalid' => 'Невалидна заявка за качване', + 'error-other' => 'Възникна грешка: ', + 'error-too-large' => 'Обектът на заявката е твърде голям!', - 'btn-upload' => 'Качи файл', + 'btn-upload' => 'Качване на файл(ове)', 'btn-uploading' => 'Качване...', - 'btn-close' => 'Затвори', - 'btn-crop' => 'Отрежи', - 'btn-cancel' => 'Откажи', - 'btn-resize' => 'Оразмери', + 'btn-close' => 'Затваряне', + 'btn-crop' => 'Изрязване', + 'btn-copy-crop' => 'Копиране и изрязване', + 'btn-crop-free' => 'Свободно', + 'btn-cancel' => 'Отказ', + 'btn-confirm' => 'Потвърждаване', + 'btn-resize' => 'Преоразмеряване', + 'btn-open' => 'Отвори папка', - 'resize-ratio' => 'Аспект:', - 'resize-scaled' => 'Image scaled:', + 'resize-ratio' => 'Съотношение:', + 'resize-scaled' => 'Изображението е мащабирано:', 'resize-true' => 'Да', 'resize-old-height' => 'Оригинална височина:', - 'resize-old-width' => 'Оригинална широчина:', + 'resize-old-width' => 'Оригинална ширина:', 'resize-new-height' => 'Височина:', - 'resize-new-width' => 'Широчина:', - - 'locale-bootbox' => 'bg', -]; + 'resize-new-width' => 'Ширина:', +]; \ No newline at end of file