Разработчики и пользователи русскоязычного интернета многократно сталкивались с проблемой использования русских символов в URL-адресах и названиях файлов хранящихся на сервере. Использование кириллических название не удобно и влечет за собой множество возможных ошибок и проблем. Необходимость в транслитерации возникла в конце XIX в. при создании научных библиотек единого каталога работ, написанных на языках с латинской, кириллической, арабской, индийскими и другими системами письма. Инструкции по транслитерации послужили и в наше время.
В CMS Drupal проблему русскоязычных URL-адресов и названий файлов решили давно использованием сочетания двух модулей, без которых я не представляю разработку русскоязычного сайта на Drupal:
Для активации транслитерации названий файлов при загрузке на Drupal сайте необходимо выполнить следующие действия:
Перейти в раздел «Файловая система» настройки сайта http://example.com/admin/settings/file-system, отметить чекбокс с транслитерациею названий файлов при загрузке на сервер
(Желательно так же отметить чекбокс отвечающий за перевод букв верхнего реестра в нижний)
Для активации перевода URL-адресов в формат символов латиницы:
В модуле Pathauto находим файл с названием i18n-ascii.example.txt и переименовываем его в i18n-ascii.txt, после этого в разделе «Автоматических настроек URL-адресов» конструкции сайта http://example.com/admin/build/path/pathauto в пункте «Общие настройки» отмечаем чекбокс отвечающий за транслитерацию русских URL-адресов.
Для транслитерации кириллических имен файлов в PHP можно использовать функцию транслитерации, для получения русской строки в латинице необходимо вызвать функцию и передать в нее строку с названием файла:
function translit($st) {
$lit = array(
"а" => "a",
"б" => "b",
"в" => "v",
"г" => "g",
"д" => "d",
"е" => "e",
"ё" => "yo",
"ж" => "g",
"з" => "z",
"и" => "i",
"й" => "y",
"к" => "k",
"л" => "l",
"м" => "m",
"н" => "n",
"о" => "o",
"п" => "p",
"р" => "r",
"с" => "s",
"т" => "t",
"у" => "u",
"ф" => "f",
"х" => "h",
"ц" => "ts",
"ч" => "ch",
"ш" => "sh",
"щ" => "shch",
"ъ" => "",
"ы" => "i",
"ь" => "",
"э" => "e",
"ю" => "yu",
"я" => "ya",
"А" => "A",
"Б" => "B",
"В" => "V",
"Г" => "G",
"Д" => "D",
"Е" => "E",
"Ё" => "Yo",
"Ж" => "G",
"З" => "Z",
"И" => "I",
"Й" => "Y",
"К" => "K",
"Л" => "L",
"М" => "M",
"Н" => "N",
"О" => "O",
"П" => "P",
"Р" => "R",
"С" => "S",
"Т" => "T",
"У" => "U",
"Ф" => "F",
"Х" => "H",
"Ц" => "Ts",
"Ч" => "Ch",
"Ш" => "Sh",
"Щ" => "Shch",
"Ъ" => "",
"Ы" => "I",
"Ь" => "",
"Э" => "E",
"Ю" => "Yu",
"Я" => "Ya",
);
return $st = strtr($st, $lit);
}
Вышеупомянутые методы помогут вам транслитерировать кириллические названия файлов и URL-адреса - это даст возможность избежать ошибок хранения файлов на хостинге и посодействуют для поисковой оптимизации вашего русскоязычного сайта.