Как в линуксе сделать? На чем проще?
Если буква-к-букве, то проще всего tr (http://linux.die.net/man/1/tr). Для чего-то более сложного можно попробовать sed (http://linux.die.net/man/1/sed) (хотя, возможно, это не самый удобный инструмент для такого рода задач). Также вполне пригодны python, perl и другие высокоуровневые языки.
Вы бы описали, какая перед вами техническая задача, и какие средства в наличии.
Вот я поигрался с лугатовским транслит-экстеншном для Хрома — действительно работает. Всю кириллицу в окне браузера превращает в латиницу.
Мне надо чтобы текст на обычной кириллице переводился в латинку с доп. символами. Хрома нет, есть опера и ФФ.
Если не сложно, накатайте скрипт на питоне. Питон, вы можете? :)
Т.е., скрипт нужен для браузера? Или нужно просто конвертировать файл на кириллице в файл на латинице? Или, может, он должен работать на стороне веб-сервера, работающего на линуксе?
С питоном пока не освоился. Но если требуется скрипт для браузера, питон и ненужен. Если для конвертирования файлов или потоков, вполне можно обойтись sed'ом. Т.е., питон — не единственный вариант.
Не обязательно для браузера. Допустим, есть файл, его надо изменить - добавить туда транслит.
Если это надо в браузере, то, наверное, удобнее всего было бы на жабоскрипте писать. Правда, как это впихивать в браузер, я не в курсе - свои транслитераторы в своё время писал просто в виде скрипта на странице.
В простейшем случае, можно сделать что-то типа такого:
#!/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).
Спасибо! А если есть диграфы типа ч>ch?
Цитата: Karakurt от марта 11, 2013, 20:13
Спасибо! А если есть диграфы типа ч>ch?
Python же такой случай описал:
Цитировать-e 's/щ/šč/g'
файл что-то не выполняется, хотя rwx стоит.
А как Вы его запускаете? По идее надо в консоли.
в консоли
Это странно! а какую ошибку выдаёт?..
И да, вы в курсе: запускать его надо не filename, а ./filename или /path/filename?
Нот фаунд, а если ./ использовать, то Syntax error: Unterminated quoted string
Где-то с кавычками или апострофами что-то не то...
У меня, к сожалению, сейчас нет линукса установленного... Но попробуйте так:
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'
Ввести в консоли? Ошибки нет, а что дальше?
Похоже, я неправильно понимал, как шелл работает с апострофами. Попробуйте заменить 's/ъ/\'/g' на "s/ъ/'/g" или s/ъ/\'/g (и аналогичным образом другие замены, где идет подстановка апострофа) — в цыгвине сработало, должно и в линуксе. Возможно также, нужно поставить пробел перед конечным \ во второй строке (впрочем, не думаю, что это на что-либо влияет).
Как это ошибки нет? Я уже заметил ошибку, в конце вместо ' надо ":
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
Python... Никто не знает, как shell работает... Том Дуфф говорил: никто не знает, какая грамматика у Bourne shellа, и чтение исходных кодов не помогает...
Да, сейчас работает в консоли.
Цитата: Karakurt от марта 12, 2013, 16:11
Ввести в консоли? Ошибки нет, а что дальше?
Просто вводите текст на кириллице и получаете на выходе латиницу. sed можно использовать как непосредственно в виде консольной команды, так и через скрипт, запускаемый в консоли (т.е., как я написал вначале, но с исправлениями). В обоих случаях, его можно дополнить перенаправлением ввода-вывода в файл (как было описано выше).
s/иi/iyi/g можно писать?
Можно.
Конечно, а почему нет?
Только учитывайте: все команды выполняются по очереди... в рамках строки... Так что перемена мест слагаемых поменяет результат...
Т.е. надо сначала исключения, а потом - правило? И да, надо сначала большие буквы, потом маленькие.
Да. Что первым пишется, первым и выполняется.
Подскажите, где можно узнать код символа?
Цитата: Karakurt от марта 12, 2013, 17:14
Подскажите, где можно узнать код символа?
babelmap + шрифт универсалия, хотя в оном иногда находятся ошибки
можно скопировать в ворд и нажать альт+икс, в бабелмэпе же можно поназванию искать
Цитата: Hellerick от марта 11, 2013, 18:47
Вот я поигрался с лугатовским транслит-экстеншном для Хрома — действительно работает. Всю кириллицу в окне браузера превращает в латиницу.
А вы не знаете случайно, как его заставить странички транслитить?
Цитата: Валентин Н от марта 12, 2013, 17:24
Цитата: Hellerick от марта 11, 2013, 18:47
Вот я поигрался с лугатовским транслит-экстеншном для Хрома — действительно работает. Всю кириллицу в окне браузера превращает в латиницу.
А вы не знаете случайно, как его заставить странички транслитить?
Лугат, вроде, всё описал:
Цитата: Lugat от марта 10, 2013, 11:26
Krome togo polozhil v zip papku svoix narabotok po on-lajn transliteracii stranic v brauzere GoogleChrom na ukrainskuju (jirečkovka i abecadlo), belarusskuju tradicionnuju latinicu, i russkuju latinicu-26 — odin iz moix projektov zdesy na Lingvoforume. (Puty dlya ustanovki etogo Extension'a v Chrome sledujuqij: Tools - Extensions - otmetity galochkoj Developer mode - nazhaty Load unpacked extensions - vwbraty vwtyanutuju kuda-nibudy papku iz zipa i kliknuty na neje.)
Vwkladwvaju syuda (http://ge.tt/2oMnCsZ/v/0).
Убедиться, что напротив его экстеншна стоит галочка — и он начнет транслитерировать всю кириллицу на всех страничках.
А как к опере прикрутить?
Цитата: Karakurt от марта 12, 2013, 17:14
Подскажите, где можно узнать код символа?
http://www.isthisthingon.org/unicode/index.php — можно ввести текст в поле UTF8 string и посмотреть список его символов с кодами и другими подробностями.