скрипт преобразования русского в транслит

Полезные советы и программы от пользователей нашего форума.

Модератор: Модераторы разделов

Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

скрипт преобразования русского в транслит

Сообщение Ленивая Бестолочь » 27.11.2008 14:02

по работе понадобилось написать скрипт преобразования в транслит.
стандартные утилиты не устроили тем, что некоторые символы переводят не так, как нам бы хотелось.
плюс - нам нужно было, чтобы мягкие и твердые знаки удалялись, не заменяясь ничем.

хочу поделиться - вдруг кому понадобится.
написан на пхп, сам скрипт довольно маленький - разобраться в нем и переделать - дело меньше минуты даже
тем, кто пхп не знает.

использование:

Код: Выделить всё

echo "текст"| trans


прикладываю бинарник(чтобы пхп не ставить) и сорс.

п.с. если вдруг такого уже навалом - удаляйте тему (я поиск не осилил, чтобы проверить).

п.п.с. за саму таблицу транслита спасибо моим коллегам :-)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:

Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3

Re: скрипт преобразования русского в транслит

Сообщение nesk » 27.11.2008 14:06

Вот тут нечто похожее есть на bash Как перекодировать русские названия файлов в транслит?
Может тоже кому пригодиться. Все будет в одной теме
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:

Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: скрипт преобразования русского в транслит

Сообщение sash-kan » 27.11.2008 21:34

плохой транслит:
$ echo "съешь еще этих мягких французских булочек да выпей яду чаю"|iconv -t koi-7
S_E[X E]E \TIH MQGKIH FRANCUZSKIH BULO^EK DA WYPEJ QDU ^A@
но прочитать можно. буква ё отсутствует как класс.

хороший транслит:
$ echo "съешь ещё этих мягких французских булочек да выпей яду чаю"|uniconv -encode Russian-Translit
s`esh' eshche: ehtix mjagkix francuzskix bulochek da vypej jadu chaju
uniconv входит в пакет yudit. кодировку легко подправить на свой вкус. как видно из примера, может один символ перекодировать в несколько. насколько я понял из документации, можно и последовательность из нескольких символов перевести в одиночный символ или последовательность.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:

Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: скрипт преобразования русского в транслит

Сообщение Ленивая Бестолочь » 28.11.2008 15:47

да, uniconv я тользовал, честно говоря просто не разобрался, что с ним сделать, чтобы было хорошо - мне нужно было, чтобы
он "стирал" мягкие и твердые знаки.

я кстати правильно понял, что выпить яду мне предлагается?
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:

Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: скрипт преобразования русского в транслит

Сообщение sash-kan » 30.11.2008 16:04

JIeHb писал(а):
28.11.2008 15:47
я кстати правильно понял, что выпить яду мне предлагается?
нет, что вы, я не настаиваю… (улыбка)


JIeHb писал(а):
28.11.2008 15:47
что с ним сделать
сам не заглядывал, но, думаю, пакет yudit-doc поможет.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:

watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: скрипт преобразования русского в транслит

Сообщение watashiwa_daredeska » 18.12.2008 14:14

JIeHb писал(а):
27.11.2008 14:02
по работе понадобилось написать скрипт преобразования в транслит.
Фигня какая-то:

user@host

$ echo "съешь еще этих мягких французских булочек да выпей чаю" |./trans.php ya�ya�p�ya�ya� p�ya�p� ya�ya�p�ya� p�ya�pYOp�p�ya� ya�ya�p�p�ya�ya�p�ya�p�p�ya� p�ya�p�p�ya�p�p� p�p� p�ya�p�p�p� ya�p�ya�
Посмотрел в исходниках -- умляуты какие-то, ни одной русской буквы. Это в windows-1251, что ли? Или в CP866?

JIeHb писал(а):
27.11.2008 14:02
стандартные утилиты не устроили тем, что некоторые символы переводят не так, как нам бы хотелось.
плюс - нам нужно было, чтобы мягкие и твердые знаки удалялись, не заменяясь ничем.
На транслит существует ГОСТ, который хорош тем, что однозначно преобразуется обратно:

user@host

$ echo "съешь еще этих мягких французских булочек да выпей чаю" |translit s"esh' eshhe ehtikh mjagkikh francuzskikh bulochek da vypejj chaju $ echo "съешь еще этих мягких французских булочек да выпей чаю" |translit |translit -u съешь еще этих мягких французских булочек да выпей чаю


sash-kan писал(а):
27.11.2008 21:34
хороший транслит:
$ echo "съешь ещё этих мягких французских булочек да выпей яду чаю"|uniconv -encode Russian-Translit
s`esh' eshche: ehtix mjagkix francuzskix bulochek da vypej jadu chaju
И чем же он хорош? По-моему, отвратительно.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали:

Mellon
Сообщения: 655
Статус: Powered by Gentoo
ОС: Gentoo

Re: скрипт преобразования русского в транслит

Сообщение Mellon » 18.12.2008 15:03

последний транслит похож на правду.
Некоммерческий файлообмен не может сравниваться с кражей, так как кража лишает кого-то возможности использовать украденный объект. ©
--------------------
Переворачиватель пингвинов
Спасибо сказали:

Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: скрипт преобразования русского в транслит

Сообщение sash-kan » 10.01.2009 13:38

watashiwa_darede... писал(а):
18.12.2008 14:14
который хорош тем, что однозначно преобразуется обратно
уникально. да.

$ echo "съешь ещё этих мягких французских булочек да выпей чаю"|uniconv -encode Russian-Translit|\ uniconv -decode Russian-Translit съешь ещё этих мягких французских булочек да выпей чаю

watashiwa_darede... писал(а):
18.12.2008 14:14
По-моему, отвратительно
любой транслит отвратителен по определению.

p.s. uniconv — штука достаточно универсальная. и если есть желание, дополнить его список перекодировок труда не составляет.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:

janus_ak
Сообщения: 1

Re: скрипт преобразования русского в транслит

Сообщение janus_ak » 19.10.2015 01:27

Эта штука наверное заработает вообще везде кроме мастдая прямо из коробки.
echo "съешь еще этих мягких французских булочек да выпей чаю" |sed "y/абвгдезийклмнопрстуфхъьы/abvgdezijklmnoprstufx\"'y/;s/ж/zh/g;s/ш/sh/g;s/ч/ch/g;s/щ/shh/g;s/ю/yu/g;s/я/ya/g;s/э/eh/g"
Спасибо сказали: