Доброго вечера!
Следующая задача - организовать хранение на сайте офисных документов, соответственно названия файлов на русском языке (Мой крутой документ.docx, Счета.xls и т.п.) Понятно, что в самой файловой системе Drupal всё лучше хранить в транслите. Но хотелось бы организовать что-то такое:
- При загрузке файла оригинальное имя ложится в поле "Описание файла" (file description), сам файл транслителированный сохраняется в private.
- При сохранении файла подменяем заголовок, подставляем русское имя из описания - в итоге у клиента файл сохраняется в оригинальном русском названии.
Существует-ли подобный модуль или отдельные модули?
или какие хуки использовать в первом и втором случае?
Спасибо.
Комментарии
Есть модуль просто для транслитерации transliterate_filenames
Стоп, а в чём собственно проблема? Файлы могут обзываться хоть на русском, хоть на хинди, все основные фс под все основные серверные оси держат юникод, там в ограничениях только спецсимволы. Т.е. транслитерировать их совершенно не обязательно.
Да.. юникод он и есть юникод..
Теоретически нельзя применять в именах файлов только слэши, т.к. они являются разделителями пути.
Но бывают программки в системе, работающие с файлами, у которых требования к наименованию файлов "строже".
Поэтому достаточно вычистить все "символы" кроме букв,цифр,точек, знаков_подчеркивания и заменить пробелы на знаки подчеркивания.
Да.. кстати, пользователи могут попытаться загрузить файлы в кодировке "не юникод". (чаще всего win-1251)
Необходимо предусмотреть конвертацию "не юникода" в юникод.
Резюме.
Т.е. 2 наименования файла не обязательно..
Можно поискать подходящий для подобных "преобразований" имени файла готовый модуль.
Или по примеру готового написать свой.
Эммм, а разве название файла передаётся в кодировке фс клиента? О_о
На самом деле грабли с русскими именами файлов есть, но они специфичны:
- многие программы понимают в ссылках только английский
- при переносе с сервера на сервер можно отхватить кракозябр
- некоторые серверные скрипты также могут не уметь русский
и т.д. и т.п.
Напороться на грабли можно, но как правило всё это имеет достаточно простые решения. Однако, поскольку абсолютному большинству разработчиков лень этим заниматься, то используется транслитерация для имён. И тут опять же вопрос, а так уж ли хуже kartinka.jpg чем картинка.jpg?
У меня на сайте волею судеб половина файлов изображений имеют кириллические имена, порой еще и длиннющие. Всё работает как швейцарские часы.
Я бы всё таки использовал транслитерацию чтобы потом не напороться, если уж совсем надо на русском, то паковать в архив на лету с транслитом и в нем уже хранить на русском, был бы смысл.