Небольшой фикс для модуля Transliteration
По умолчанию он некоторые буквы преобразует странно, например, "е" будет "ie", что делает текст не очень пригодным для чтения. Привел его в более нормальную форму, по большей части согласуясь с таблицей на сайте http://www.transliteration.ru/
Исключений сделал несколько:
Буква "ц" там идет как "c", заменил на более привычное сочетание "ts";
Буквы "ъ" и "ь" сделал пустыми, поскольку мне модуль требуется для генерации синонимов страниц с помощью pathauto, а в правильности восприятия апострофа браузерами очень сомневаюсь. В оригинале - "'" и "'-"
Буква "Э" в правильном варианте пишется с дефисом - "e-", но это не очень хорошо смотрится в адресе, потому тоже заменил на "e".
Для этого нужно исправить файл x04.php в папке дата. 04 здесь означает первые два символа из четырех в кодовой таблице, русский алфавит находится в промежутке 0410 - 0451, плюс 0401 для заглавной буквы "Ё".
return array(
'en' => array('Jo', 'Io', 'Dj', 'Gj', 'Ie', 'Dz', 'I', 'Yi', 'J', 'Lj', 'Nj', 'Tsh', 'Kj', 'I', 'U', 'Dzh',
'A', 'B', 'V', 'G', 'D', 'E', 'Zh', 'Z', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
'R', 'S', 'T', 'U', 'F', 'H', 'Ts', 'Ch', 'Sh', 'Shch', '', 'Y', '', 'E', 'Yu', 'Ya',
'a', 'b', 'v', 'g', 'd', 'e', 'zh', 'z', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
'r', 's', 't', 'u', 'f', 'h', 'ts', 'ch', 'sh', 'shch', '', 'y', '', 'e', 'yu', 'ya',
'jo', 'io', 'dj', 'gj', 'ie', 'dz', 'i', 'yi', 'j', 'lj', 'nj', 'tsh', 'kj', 'i', 'u', 'dzh',
'O', 'o', 'E', 'e', 'Ie', 'ie', 'E', 'e', 'Ie', 'ie', 'O', 'o', 'Io', 'io', 'Ks', 'ks',
'Ps', 'ps', 'F', 'f', 'Y', 'y', 'Y', 'y', 'u', 'u', 'O', 'o', 'O', 'o', 'Ot', 'ot',
'Q', 'q', '*1000*', '', '', '', '', NULL, '*100.000*', '*1.000.000*', NULL, NULL, '"', '"', 'R\'', 'r\'',
'G\'', 'g\'', 'G\'', 'g\'', 'G\'', 'g\'', 'Zh\'', 'zh\'', 'Z\'', 'z\'', 'K\'', 'k\'', 'K\'', 'k\'', 'K\'', 'k\'',
'K\'', 'k\'', 'N\'', 'n\'', 'Ng', 'ng', 'P\'', 'p\'', 'Kh', 'kh', 'S\'', 's\'', 'T\'', 't\'', 'U', 'u',
'U\'', 'u\'', 'Kh\'', 'kh\'', 'Tts', 'tts', 'Ch\'', 'ch\'', 'Ch\'', 'ch\'', 'H', 'h', 'Ch', 'ch', 'Ch\'', 'ch\'',
'`', 'Zh', 'zh', 'K\'', 'k\'', NULL, NULL, 'N\'', 'n\'', NULL, NULL, 'Ch', 'ch', NULL, NULL, NULL,
'a', 'a', 'A', 'a', 'Ae', 'ae', 'Ie', 'ie', '@', '@', '@', '@', 'Zh', 'zh', 'Z', 'z',
'Dz', 'dz', 'I', 'i', 'I', 'i', 'O', 'o', 'O', 'o', 'O', 'o', 'E', 'e', 'U', 'u',
'U', 'u', 'U', 'u', 'Ch', 'ch', NULL, NULL, 'Y', 'y', NULL, NULL, NULL, NULL, NULL),
);
Смысл, думаю, понятен, кому надо - поправит под свои нужды и предпочтения.
Комментарии
Спасибо большое!
Буду пробывать.
На днях сам хотел исправть эти моменты ("е" будет "ie", и для "ъ" и "ь" - особенно). Полез смотреть где ж править-то и не понял где Куча файлов в папке data... и не было время разбираться.
А написать автору, чтобы поправил для всех?
Ещё бы этот модуль искал аналоги а-ля Рим -> Rome цены бы не было
2PVasili
> Ещё бы этот модуль искал аналоги а-ля Рим -> Rome цены бы не было
http://drupal.org/project/promt
написали-бы, но ктото из разработчиков требует патчем
для себя почему массив такой большой или он содержит все 255 символов аскии
особенно что значит вторая часть
'Q', 'q', '*1000*', '', '', '', '', NULL, '*100.000*', '*1.000.000*', NULL, NULL, '"', '"', 'R\'', 'r\'',
'G\'', 'g\'', 'G\'', 'g\'', 'G\'', 'g\'', 'Zh\'', 'zh\'', 'Z\'', 'z\'', 'K\'', 'k\'', 'K\'', 'k\'', 'K\'', 'k\'',
'K\'', 'k\'', 'N\'', 'n\'', 'Ng', 'ng', 'P\'', 'p\'', 'Kh', 'kh', 'S\'', 's\'', 'T\'', 't\'', 'U', 'u',
'U\'', 'u\'', 'Kh\'', 'kh\'', 'Tts', 'tts', 'Ch\'', 'ch\'', 'Ch\'', 'ch\'', 'H', 'h', 'Ch', 'ch', 'Ch\'', 'ch\'',
'`', 'Zh', 'zh', 'K\'', 'k\'', NULL, NULL, 'N\'', 'n\'', NULL, NULL, 'Ch', 'ch', NULL, NULL, NULL,
'a', 'a', 'A', 'a', 'Ae', 'ae', 'Ie', 'ie', '@', '@', '@', '@', 'Zh', 'zh', 'Z', 'z',
'Dz', 'dz', 'I', 'i', 'I', 'i', 'O', 'o', 'O', 'o', 'O', 'o', 'E', 'e', 'U', 'u',
'U', 'u', 'U', 'u', 'Ch', 'ch', NULL, NULL, 'Y', 'y', NULL, NULL, NULL, NULL, NULL),
в иссуях висит багрепорт, но тишина
пофиг со второй частью за кросспостинг бить сильно,надеюсь не будут.
Сделал запись об изменённых таблицах для русского и эсперанто алфавитов (автор, надеюсь не против)
2 Cynicus для 5ки было проще один файлик в i18n
Спасибо! Тоже понадобилось.
Всем привет!
у меня Transliteration не поддерживает IMCE!
Данная проблема только у меня или у многих?
P.S. drupal 5.x
PVasili's sense of humour not found ; )
А было бы неплохо такой модуль иметь на многоязычном сайте.
А не кто не вкурсе. Как-то можно этот модуль одновременно на одном сайте для одного языка использовать, а для другого нет? Так как например pathauto для японского языка такой бред получается, что лучше уж иероглифы оставить.
Недавно прочитал что в Transliteration нужно править так как там некоторые буквы не правильно транслирует а за этого гугл и яндекс не прочитает урл - Таблица транслитерации, понятнаякак Google, так и Яндексу:http://goo.gl/pcmh1
Вот что у меня получилось для модуля Transliteration 6.30
<?php$base = array(
0x00 => 'Jo', 'Yo', 'Dj', 'Gj', 'Ie', 'Dz', 'I', 'Yi', 'J', 'Lj', 'Nj', 'Tsh', 'Kj', 'I', 'U', 'Dzh',
0x10 => 'A', 'B', 'V', 'G', 'D', 'E', 'J', 'Z', 'I', 'Y', 'K', 'L', 'M', 'N', 'O', 'P',
0x20 => 'R', 'S', 'T', 'U', 'F', 'H', 'Ts', 'Ch', 'Sh', 'Shch', '', 'Y', '', 'E', 'Yu', 'Ya',
0x30 => 'a', 'b', 'v', 'g', 'd', 'e', 'j', 'z', 'i', 'y', 'k', 'l', 'm', 'n', 'o', 'p',
0x40 => 'r', 's', 't', 'u', 'f', 'h', 'ts', 'ch', 'sh', 'shch', '', 'y', '', 'e', 'yu', 'ya',
0x50 => 'je', 'yo', 'dj', 'gj', 'ie', 'dz', 'i', 'yi', 'j', 'lj', 'nj', 'tsh', 'kj', 'i', 'u', 'dzh',
0x60 => 'O', 'o', 'E', 'e', 'Ie', 'ie', 'E', 'e', 'Ie', 'ie', 'O', 'o', 'Io', 'io', 'Ks', 'ks',
0x70 => 'Ps', 'ps', 'F', 'f', 'Y', 'y', 'Y', 'y', 'u', 'u', 'O', 'o', 'O', 'o', 'Ot', 'ot',
0x80 => 'Q', 'q', '*1000*', '', '', '', '', NULL, '*100.000*', '*1.000.000*', NULL, NULL, '"', '"', 'R\'', 'r\'',
0x90 => 'G\'', 'g\'', 'G\'', 'g\'', 'G\'', 'g\'', 'J\'', 'j\'', 'Z\'', 'z\'', 'K\'', 'k\'', 'K\'', 'k\'', 'K\'', 'k\'',
0xA0 => 'K\'', 'k\'', 'N\'', 'n\'', 'Ng', 'ng', 'P\'', 'p\'', 'Kh', 'kh', 'S\'', 's\'', 'T\'', 't\'', 'U', 'u',
0xB0 => 'U\'', 'u\'', 'Kh\'', 'kh\'', 'Tts', 'tts', 'Ch\'', 'ch\'', 'Ch\'', 'ch\'', 'H', 'h', 'Ch', 'ch', 'Ch\'', 'ch\'',
0xC0 => '`', 'J', 'j', 'K\'', 'k\'', NULL, NULL, 'N\'', 'n\'', NULL, NULL, 'Ch', 'ch', NULL, NULL, NULL,
0xD0 => 'a', 'a', 'A', 'a', 'Ae', 'ae', 'Ie', 'ie', '@', '@', '@', '@', 'J', 'j', 'Z', 'z',
0xE0 => 'Dz', 'dz', 'I', 'i', 'I', 'i', 'O', 'o', 'O', 'o', 'O', 'o', 'E', 'e', 'U', 'u',
0xF0 => 'U', 'u', 'U', 'u', 'Ch', 'ch', NULL, NULL, 'Y', 'y', NULL, NULL, NULL, NULL, NULL, NULL,
);?>
если не правильно поправил исправте!
Здр! Помогите поправить файл (не разбираюсь), у меня онлайн транслируется как onlyan, (сборка: pathauto 2.0 and Transliteration 3.1) мне нужно => online! Знаю, что можно потом править алиасы, но такие колхозные варианты Drupala не очень приемлемы.
Хотите online - пишите online или правьте алиасы руками. Транслитерация ни разу не перевод, а преобразование слова в написание буквами другого алфавита. И таким способом "Онлайн" может стать "Onlain" или "Onlayn".
Если не устраивает ни один из вариантов - модуль перевода все еще ждет своего своего создателя или заказчика.
Я пля думаю чё яндекс друпал не индексирует...(((
Да и спасибо за сылку, я и не знал что означает слово траслитерация. Теперь теперь точно модуль закажу!
Решено. Для Drupal 6.26 модуль Pathauto 6.x-1.6 работает независимо, без модуля Transliteration. В самом модуле Pathauto достаточно подправить файл i18n-ascii.txt под свои нужды Данный случай исключает правку массивов, иначе ставя под Drupal 6 другую версию Pathauto появляется гемморой который который успешно решил пользователь Cynicus.
Молодец, сумел найти альтернативу решению четырехлетней давности.
вот добавил замену мягкого знака "ь" на i, это в файле \sites\all\modules\transliteration\data\x04.php, за это отвечает 'i' в строчках "0x20 =>" "0x40 =>". И поменял "й" на "j", за это отвечает 'j' в строчках "0x10 =>" и "0x30 =>"
0x00 => 'Jo', 'Yo', 'Dj', 'Gj', 'Ie', 'Dz', 'I', 'Yi', 'J', 'Lj', 'Nj', 'Tsh', 'Kj', 'I', 'U', 'Dzh',
0x10 => 'A', 'B', 'V', 'G', 'D', 'E', 'Zh', 'Z', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
0x20 => 'R', 'S', 'T', 'U', 'F', 'H', 'C', 'Ch', 'Sh', 'Sh', '', 'Y', 'I', 'E', 'Yu', 'Ya',
0x30 => 'a', 'b', 'v', 'g', 'd', 'e', 'zh', 'z', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
0x40 => 'r', 's', 't', 'u', 'f', 'h', 'c', 'ch', 'sh', 'sh', '', 'y', 'i', 'e', 'yu', 'ya',
0x50 => 'je', 'yo', 'dj', 'gj', 'ie', 'dz', 'i', 'yi', 'j', 'lj', 'nj', 'tsh', 'kj', 'i', 'u', 'dzh',
0x60 => 'O', 'o', 'E', 'e', 'Ie', 'ie', 'E', 'e', 'Ie', 'ie', 'O', 'o', 'Io', 'io', 'Ks', 'ks',
0x70 => 'Ps', 'ps', 'F', 'f', 'Y', 'y', 'Y', 'y', 'u', 'u', 'O', 'o', 'O', 'o', 'Ot', 'ot',
0x80 => 'Q', 'q', '*1000*', '', '', '', '', NULL, '*100.000*', '*1.000.000*', NULL, NULL, '"', '"', 'R\'', 'r\'',
0x90 => 'G\'', 'g\'', 'G\'', 'g\'', 'G\'', 'g\'', 'Zh\'', 'zh\'', 'Z\'', 'z\'', 'K\'', 'k\'', 'K\'', 'k\'', 'K\'', 'k\'',
0xA0 => 'K\'', 'k\'', 'N\'', 'n\'', 'Ng', 'ng', 'P\'', 'p\'', 'Kh', 'kh', 'S\'', 's\'', 'T\'', 't\'', 'U', 'u',
0xB0 => 'U\'', 'u\'', 'Kh\'', 'kh\'', 'Tts', 'tts', 'Ch\'', 'ch\'', 'Ch\'', 'ch\'', 'H', 'h', 'Ch', 'ch', 'Ch\'', 'ch\'',
0xC0 => '`', 'Zh', 'zh', 'K\'', 'k\'', NULL, NULL, 'N\'', 'n\'', NULL, NULL, 'Ch', 'ch', NULL, NULL, NULL,
0xD0 => 'a', 'a', 'A', 'a', 'Ae', 'ae', 'Ie', 'ie', '@', '@', '@', '@', 'Zh', 'zh', 'Z', 'z',
0xE0 => 'Dz', 'dz', 'I', 'i', 'I', 'i', 'O', 'o', 'O', 'o', 'O', 'o', 'E', 'e', 'U', 'u',
0xF0 => 'U', 'u', 'U', 'u', 'Ch', 'ch', NULL, NULL, 'Y', 'y', NULL, NULL, NULL, NULL, NULL, NULL,
);
мягкий знак на "i" это мощно!
Сельдь - selidi
колье - kolie
семья - semiya
Существует, как минимум, три ГОСТа на транслителирацию
Этих гостов и не гостов много, только вот чем заменить мягкий знак в адресах сайтов, вопрос открытый)
а ты введи эти запросы с мягкими знаками в гугл и яндекс и посмотри , как в результатах выдачи урлы сформированы - займись аналитикой , хотя ПС разницы не будет как урл сформирован хоть semiya хоть semya хоть semja(гуглу так больше family нравится) , не на то время тратишь
так анализ и привел к "i", поисковикам все равно, а людям вроде удобнее