Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Скрипт транслитерации

Автор Karakurt, марта 11, 2013, 18:16

0 Пользователи и 1 гость просматривают эту тему.

Karakurt


Python

Если буква-к-букве, то проще всего tr. Для чего-то более сложного можно попробовать sed (хотя, возможно, это не самый удобный инструмент для такого рода задач). Также вполне пригодны python, perl и другие высокоуровневые языки.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Hellerick

Вы бы описали, какая перед вами техническая задача, и какие средства в наличии.

Вот я поигрался с лугатовским транслит-экстеншном для Хрома — действительно работает. Всю кириллицу в окне браузера превращает в латиницу.

Karakurt

Мне надо чтобы текст на обычной кириллице переводился в латинку с доп. символами. Хрома нет, есть опера и ФФ.

Karakurt

Если не сложно, накатайте скрипт на питоне. Питон, вы можете? :)

Python

Т.е., скрипт нужен для браузера? Или нужно просто конвертировать файл на кириллице в файл на латинице? Или, может, он должен работать на стороне веб-сервера, работающего на линуксе?
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Python

С питоном пока не освоился. Но если требуется скрипт для браузера, питон и ненужен. Если для конвертирования файлов или потоков, вполне можно обойтись sed'ом. Т.е., питон — не единственный вариант.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Karakurt

Не обязательно для браузера. Допустим, есть файл, его надо изменить - добавить туда транслит.

Toman

Если это надо в браузере, то, наверное, удобнее всего было бы на жабоскрипте писать. Правда, как это впихивать в браузер, я не в курсе - свои транслитераторы в своё время писал просто в виде скрипта на странице.
Во́зле до́ма хо́лм с куля́ми - вы́йду на́ холм, ку́ль поставлю.
В славном городе Miami тётки мерялись ногтями, тик иң озын завсегда у Фиделя борода!

Python

В простейшем случае, можно сделать что-то типа такого:
#!/bin/sh
sed -e 'y/абвгдеёжзийклмнопрстуфхцчшыэюя/abvgdeöžzijklmnoprstufhcčšyeüä/' -e 's/щ/šč/g' -e 's/ъ/\'/g' -e 's/ь/\'/g'\
    -e 'y/АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЫЭЮЯ/ABVGDEÖŽZIJKLMNOPRSTUFHCČŠYEÜÄ/' -e 's/Щ/Šč/g' -e 's/Ъ/\'/g' -e 's/Ь/\'/g'

поместить все это в текстовый файл (назовем его translit) и поставить ему аттрибут исполнимости. Директория со скриптом должна присутствовать в переменной PATH, либо следует указывать путь к скрипту при его запуске.
Далее, чтобы конвертировать текст, содержащийся в файле CYRFILE, и сохранить его в файле LATFILE, в консоли вводим команду:
translit <CYRFILE >LATFILE

Либо можно просто запустить translit в консоли, чтобы посмотреть, как он конвертирует (для завершения нажать Ctrl+D).
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Karakurt


Hellerick

Цитата: Karakurt от марта 11, 2013, 20:13
Спасибо! А если есть диграфы типа ч>ch?

Python же такой случай описал:

Цитировать-e 's/щ/šč/g'

Karakurt


beaver

А как Вы его запускаете? По идее надо в консоли.
Вы можете купить шубу в натуральном цвете, который варьируется от черного до темно-коричневого, от палевого до золотистого. А, возможно, вы предпочтете шубку в цветном варианте: жемчужном, кофейном, сером или даже красном или ярко-синем. На каком бы фасоне и оттенке вы не остановились, можете не сомневаться: бобёр – отличный выбор.


beaver

Это странно! а какую ошибку выдаёт?..

И да, вы в курсе: запускать его надо не filename, а ./filename или /path/filename?
Вы можете купить шубу в натуральном цвете, который варьируется от черного до темно-коричневого, от палевого до золотистого. А, возможно, вы предпочтете шубку в цветном варианте: жемчужном, кофейном, сером или даже красном или ярко-синем. На каком бы фасоне и оттенке вы не остановились, можете не сомневаться: бобёр – отличный выбор.

Karakurt

Нот фаунд, а если ./ использовать, то  Syntax error: Unterminated quoted string

beaver

Где-то с кавычками или апострофами что-то не то...

У меня, к сожалению, сейчас нет линукса установленного... Но попробуйте так:

sed -e 'y/абвгдеёжзийклмнопрстуфхцчшыэюя/abvgdeöžzijklmnoprstufhcčšyeüä/' -e 's/щ/šč/g' -e "s/ъ/'/g" -e "s/ь/'/g" \
    -e 'y/АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЫЭЮЯ/ABVGDEÖŽZIJKLMNOPRSTUFHCČŠYEÜÄ/' -e 's/Щ/Šč/g' -e "s/Ъ/'/g" -e "s/Ь/'/g'
Вы можете купить шубу в натуральном цвете, который варьируется от черного до темно-коричневого, от палевого до золотистого. А, возможно, вы предпочтете шубку в цветном варианте: жемчужном, кофейном, сером или даже красном или ярко-синем. На каком бы фасоне и оттенке вы не остановились, можете не сомневаться: бобёр – отличный выбор.

Karakurt


Python

Похоже, я неправильно понимал, как шелл работает с апострофами. Попробуйте заменить 's/ъ/\'/g' на "s/ъ/'/g" или s/ъ/\'/g (и аналогичным образом другие замены, где идет подстановка апострофа) — в цыгвине сработало, должно и в линуксе. Возможно также, нужно поставить пробел перед конечным \ во второй строке (впрочем, не думаю, что это на что-либо влияет).
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

beaver

Как это ошибки нет? Я уже заметил ошибку, в конце вместо ' надо ":

sed -e 'y/абвгдеёжзийклмнопрстуфхцчшыэюя/abvgdeöžzijklmnoprstufhcčšyeüä/' -e 's/щ/šč/g' -e "s/ъ/'/g" -e "s/ь/'/g" \
    -e 'y/АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЫЭЮЯ/ABVGDEÖŽZIJKLMNOPRSTUFHCČŠYEÜÄ/' -e 's/Щ/Šč/g' -e "s/Ъ/'/g" -e "s/Ь/'/g"


В общем... вводИте в консоли и попробуйте печатать текст... Типа "привет"... Если всё работает, после ввода строки должен выводиться транслит. Заканчиваете ввод текста нажатием enter ctrl+d enter.

Потом... если это работает, то просто сохраняете команду в файл, добавляете первой строкой перед ним #!/bin/bash или #!/bin/sh, делаете файл исполняемым — и минимальная программа готова... Файлы с #!/bin/bash в начале - это всего лишь автоматизация консольных команд...

Как вариант можно попробовать так (это сохраните в файл и сделайте его исполняемым):
#!/bin/sed -f
y/абвгдеёжзийклмнопрстуфхцчшыэюя/abvgdeöžzijklmnoprstufhcčšyeüä/
s/щ/šč/g
s/ъ/'/g
s/ь/'/g
y/АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЫЭЮЯ/ABVGDEÖŽZIJKLMNOPRSTUFHCČŠYEÜÄ/
s/Щ/Šč/g
s/Ъ/'/g
s/Ь/'/g
Вы можете купить шубу в натуральном цвете, который варьируется от черного до темно-коричневого, от палевого до золотистого. А, возможно, вы предпочтете шубку в цветном варианте: жемчужном, кофейном, сером или даже красном или ярко-синем. На каком бы фасоне и оттенке вы не остановились, можете не сомневаться: бобёр – отличный выбор.

beaver

Python... Никто не знает, как shell работает... Том Дуфф говорил: никто не знает, какая грамматика у Bourne shellа, и чтение исходных кодов не помогает...
Вы можете купить шубу в натуральном цвете, который варьируется от черного до темно-коричневого, от палевого до золотистого. А, возможно, вы предпочтете шубку в цветном варианте: жемчужном, кофейном, сером или даже красном или ярко-синем. На каком бы фасоне и оттенке вы не остановились, можете не сомневаться: бобёр – отличный выбор.

Karakurt


Python

Цитата: Karakurt от марта 12, 2013, 16:11
Ввести в консоли? Ошибки нет, а что дальше?
Просто вводите текст на кириллице и получаете на выходе латиницу. sed можно использовать как непосредственно в виде консольной команды, так и через скрипт, запускаемый в консоли (т.е., как я написал вначале, но с исправлениями). В обоих случаях, его можно дополнить перенаправлением ввода-вывода в файл (как было описано выше).
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2


Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр