Transliteration действительно в ядре, и просто так он оттуда не вылезет. Воспользоваться им можно через File (Field) Paths. После его установки в настройках полей с файлами (в том числе и изображениями) появится нужная возможность:
PS. Транслит сработает во время сохранения.
PSS. Если при редактировании ноды не отображается миниатюра с изображением, то дело вот в чем. В модуле File (Field) Paths при формировании пути используется константа DIRECTORY_SEPARATOR, которая для виндовых систем будет "\". И с превью для таких таких uri пока трабл. Варианты решений:
1. После сохранения идти в базу, находить нужное изображение, исправлять слэш в пути и обновить кэш (который до сих пор свято верит, что все под его контролем).
2. Пропатчить файл модуля (/modules/filefield_paths/filefield_paths.inc 101), вбив там "/" и плевать на все.
3. Настроить DIRECTORY_SEPARATOR в конфиге пхп (решение для слабаков, вестимо)
В результате, все файлы с именами на русском языке, включая inline, будут корректно отображаться (без иероглифов и кракозябров).
PS: Транслит сработает сразу при загрузке.
vaplas!
Где находится страница скриншот которй Вы сделали (с чекбоксом "Enable file (Field) Path" и "Transliterate")?
Всю админку перерыл, не могу найти.
Комментарии
Transliteration действительно в ядре, и просто так он оттуда не вылезет. Воспользоваться им можно через File (Field) Paths. После его установки в настройках полей с файлами (в том числе и изображениями) появится нужная возможность:

PS. Транслит сработает во время сохранения.
PSS. Если при редактировании ноды не отображается миниатюра с изображением, то дело вот в чем. В модуле File (Field) Paths при формировании пути используется константа DIRECTORY_SEPARATOR, которая для виндовых систем будет "\". И с превью для таких таких uri пока трабл. Варианты решений:
1. После сохранения идти в базу, находить нужное изображение, исправлять слэш в пути и обновить кэш (который до сих пор свято верит, что все под его контролем).
2. Пропатчить файл модуля (/modules/filefield_paths/filefield_paths.inc 101), вбив там "/" и плевать на все.
3. Настроить DIRECTORY_SEPARATOR в конфиге пхп (решение для слабаков, вестимо)
Устанавливать кучу нестабильного контриба из-за транслитерации имен файлов ни к чему...
Можно просто свой модуль накидать:
<?php function mymodule_file_validate($file) {
$destination = mymodule_transliteration ($file->destination);
//Здесь можете реализовать любую логику транслитерации
$basename = drupal_basename($destination);
$directory = drupal_dirname($destination);
$file->destination = file_create_filename($basename, $directory);
}
function
mymodule_transliteration ($str) {$str = str_replace(' ', '_', $str);
$str = \Drupal::transliteration()->transliterate($str);
$str = strtolower($str);
return $str;
}
?>В результате, все файлы с именами на русском языке, включая inline, будут корректно отображаться (без иероглифов и кракозябров).
PS: Транслит сработает сразу при загрузке.
vaplas!
Где находится страница скриншот которй Вы сделали (с чекбоксом "Enable file (Field) Path" и "Transliterate")?
Всю админку перерыл, не могу найти.
Вот вполне себе рабочий и полный пример:
/**
* Implements hook_file_validate().
*/
function mymodule_file_validate(FileInterface $file) {
$basename = drupal_basename($file->destination);
$basename = mymodule_transliteration($basename);
$dirname = drupal_dirname($file->destination);
$file->destination = file_create_filename($basename, $dirname);
}
/**
* Implements callback for hook_file_validate().
*/
function mymodule_transliteration($filename) {
$filename = \Drupal::transliteration()->transliterate($filename);
// Replace whitespace.
$filename = str_replace(' ', '_', $filename);
// Remove remaining unsafe characters.
$filename = preg_replace('![^0-9A-Za-z_.-]!', '', $filename);
// Remove multiple consecutive non-alphabetical characters.
$filename = preg_replace('/(_)_+|(\.)\.+|(-)-+/', '\\1\\2\\3', $filename);
// Force lowercase to prevent issues on case-insensitive file systems.
$filename = strtolower($filename);
//For empty
$name = reset(explode('.', $filename));
$extension = end(explode(".", $filename));
//Is empty
if (!$name) {
$filename = md5(rand()) . '.' . $extension;
}
return $filename;
}
Или поставить патч отсюда.
Или использовать модуль transliterate_filenames