Поддержка кириллических названий в IMCE

Главные вкладки

Аватар пользователя volocuga volocuga 1 сентября 2008 в 17:12

При закачке файловым менеджером IMCE файлов с названием в кириллице,эти названия конвертируются в что то типа _____________________.jpg.Как бороться с этим? Ставил этот модуль http://drupal.org/project/transliteration -не работает

Комментарии

Аватар пользователя bohart@InternetDevels.com bohart@Internet... 1 сентября 2008 в 17:38

перед загрузкой называть файлы по-человечески. латиницей.
или как-то думать что бы назва файла транслитерацию проходила... имхо 1й вариант лучшЕ)

Аватар пользователя dfaker dfaker 1 сентября 2008 в 18:45

Есть модуль transliteration который при активации транслитит имена всех файлов при аплоаде - самый простой вариант, можно покавыряться с api и руками вызывать метод транслитерации из него или из pathauto модуля (он тоже может в транслит переводить)

Аватар пользователя index index 1 сентября 2008 в 19:14
    2 известных мне факта:
  1. имена кириллицей не поддерживаются файловой системой unix-серверов;
  2. IMCE не поддерживает Transliteration.
    4 возможных выхода:
  1. требовать называть файлы латиницей;
  2. ждать версии или патча одного из модулей (скорее всего IMCE) с поддержкой другого;
  3. самостоятельно добавить поддержку Transliteration в IMCE;
  4. найти решение с заменой IMCE на другой модуль.

[color=grey]--
что-то не то со стилями...[/color]

Аватар пользователя v1adimir v1adimir 9 июня 2009 в 15:36

index wrote:
...имена кириллицей не поддерживаются файловой системой unix-серверов...

все основные ФС для *nix, конечно, поддерживают кирилицу. хитрость здесь в том что обязательно необходимо, чтобы языковая среда для всех процессов имеющих доступ к именам файлов была однотипной и предпочтительнее всего – UTF8.

Аватар пользователя alexsm alexsm 10 ноября 2015 в 11:45

Столкнулся с этой же проблемой, возможно кому-то пригодится. Изменения вносились в IMCE 5.x-1.2, файл imce.module

В самое начало добавить функцию конвертации кириллицы в латиницу:

/**
 * Cyrillic to latin characters translation. All cyrillic characters must be in CP1251.
 */

function imce_cyr2lat($string) {
  $target = strtr($string,
    "абвгдезийклмнопрстуфхыэАБВГДЕЗИЙКЛМНОПРСТУФХЫЭ",
    "abvgdezijklmnoprstufhieABVGDEZIJKLMNOPRSTUFHIE");
  $target = strtr($target, array(
    'ё'=>"yo", 'ж'=>"zh", 'ц'=>"ts", 'ч'=>"ch", 'ш'=>"sh", 'щ'=>"sch", 'ъ'=>"", 'ь'=>"", 'ю'=>"yu", 'я'=>"ya",
    'Ё'=>"Yo", 'Ж'=>"Zh", 'Ц'=>"Ts", 'Ч'=>"Ch", 'Ш'=>"Sh", 'Щ'=>"Sch", 'Ъ'=>"", 'Ь'=>"", 'Ю'=>"Yu", 'Я'=>"Ya"));
  return $target;
}

А затем, в функцию imce_copy_uploaded() после строки "$file['tmp_name'] = $temp;" добавить следующий код (заодно он заменяет пробелы на '_' и убирает двойные точки в именах):

  // Convert filename from UTF-8 to CP1251
  $file['name'] = iconv("UTF-8", "CP1251", $file['name']);
  // Remove spaces and double dots
  $file['name'] = str_replace(' ', '_', str_replace('..', '.', $file['name']));
  // Translate filename from cyrillic to latin characters
  $file['name'] = imce_cyr2lat($file['name']);

Наверняка это не самый оптимальный вариант, но он работает. Если кому-то лень исправлять вручную, то прикрепил уже готовый файл.

Аватар пользователя bismigalis bismigalis 9 июня 2009 в 15:04

"index" wrote:
имена кириллицей не поддерживаются файловой системой unix-серверов;

в линуксе поддерживается, косяк в самом IMCE по-моему

Аватар пользователя BurrowsDontMove@drupal.org BurrowsDontMove... 1 октября 2009 в 5:07

Господа, когда скачиваешь русский файл, написанный кракозяброй (Ïðèêëàäíàÿ....) IMCE выдает ссылку такого типа:
www.мойсайт/%CC%E5%F2%F0%EE%EB%EE%E3%E8%FF.%20%CA%EE%EC%EF%EB%E5%EA%F2%20%F0%E0%E7%EB%E8%F7%ED%FB%F5%20%F0%E5%F8%E5%ED%ED%FB%F5%20%E4%E7
Как кодируются символы в ссылке? Дело в том, что если заставить IMCE изображать ссылки правильно (убрать rawurlencode в одном месте), то перестают работать ссылки для скачивания. Если бы знать, как формируются эти ссылки, то может можно было бы добавить нужное конвертирование, и проблема была бы решена.