На авестийский алфавит завели юникод.
(wiki/en) Avestan_alphabet#Graphemes (http://en.wikipedia.org/wiki/Avestan_alphabet#Graphemes)
К сожалению, я не очень представляю, что такое на самом деле Юникод и как сделать так, чтобы символы отражались не в виде квадратиков с цифрами. Что нужно скачать?
Учитывая, что его добавили только в версии 6.1, нормальных шрифтов может ещё и не быть.
Ещё одна сложность — что его добавили в первую плоскость, а многие программы работают только с нулевой. Например, на ЛФ даже квадратики исчезнут.
Одним словом, ждите нормальной поддержки не-нулевых плоскостей, без неё трудно...
Понятно, спасибо.
В общем, нормальные уроки авестийского не получатся.
Есть неюникодовские шрифты, но они даже без поддержки справа налево
Скачайте шрифт отсюда: http://openfontlibrary.org/font/ahuramazda
Вот подробнее: http://zoroastrian-ru.livejournal.com/8014.html
Говорят, Firefox 3.6 должне поддерживать.
Да, Firefox поддерживает.
𐬛𐬨𐬍𐬝𐬭𐬌
Так как Лингвофорум (точнее, MySQL; я когда-то посылал РавонаМу хак, который позволяет это обойти, но он не использовал его) не поддерживает не-нулевые плоскости, приходится набирать по кодам (минус — люди не смогут их нормально цитировать, и они не работают в Опере; с редактированием таких сообщений тоже будут проблемы):
[font=Ahuramazda]𐬛𐬨𐬍𐬝𐬭𐬌[/font]
Коды можно брать отсюда: http://www.alanwood.net/unicode/avestan.html (берите шестнадцатиричные и обводите в &#xКОД;.
Если надумаете писать уроки, можно автоматизировать ввод (сделать транслитератор из латиницы, например; только правила опишите).
Нда, без увеличения выглядит не очень...
А автоматический ввод справа налево можно создать?
Буду очень признателен, если поможете с этим всем.
Цитата: Iskandar от июня 15, 2012, 10:36А автоматический ввод справа налево можно создать?
Его даже на форуме можно создать.
[bdo=rtl]Текст
[/bdo] даст
Текст
А давайте так писать? :)
Где-то так уже писали.
А в иврите только так и пишут.
𐬵𐬈𐬮𐬮𐬊 𐬬𐬊𐬭𐬮𐬛𐬽
Кажется работает... Сейчас выставлю.
Итак, вот пробная бета-версия: http://ablog.site90.com/lang/avest.htmlПросьба всем: проверить, работает ли у Вас, и отписаться: а) какая версия браузера, а) какие баги, чего не хватает. Работает, скорее всего,
только в Firefox'е (у меня версия 12), но нужно проверить и другие браузеры.
Буквы вводятся
как они названы в уникоде. То есть см. в табличку http://www.alanwood.net/unicode/avestan.html (http://www.alanwood.net/unicode/avestan.html). Если буква называется aee, то её так и надо вводить. (Исключение: если буква называется Ce, CCe или CCCe, то вводить её надо C, CC, CCC соответственно, где C — согласный). Пунктуация рандомно разбросана по кнопкам
*,:.!?;.
Чего пока что нет:
- работы клавиатурных сокращений (Ctrl-C не работает, используйте пока что всплывающее меню),
- деления диграфов апострофом (aa'e должно давать <aa><e>, а не <aa>'<e>; пользуйтесь пока что Backspace'ом),
- работы клавиши Delete (используйте Backspace... -_-),
- кнопочки для отключения авестийского ввода (чтобы ввести часть текста латиницей).
Снизу кнопка для получения Лингвофорумного кода. Он почему-то работает при написании поста, но всё портится при попытке редактирования. Тут нужен РавонаМ, я бессилен.
В Опере не видно, в BabelMapʼе вот это:
(http://teilnehmer.somee.com/WpfTextImage/Make.ashx?src=W2Y9VW5pdmVyc2FsaWFQbHVzXVtzej03Ml3wkKy18JCsiPCQrK7wkKyu8JCsiiDwkKys8JCsivCQrK3wkKyu8JCsm_CQrL1bL3N6XVsvZl0)
[f=UniversaliaPlus][sz=72]𐬵𐬈𐬮𐬮𐬊 𐬬𐬊𐬭𐬮𐬛𐬽[/sz][/f]
в опере 12 не работает
Цитата: Bhudh от июня 15, 2012, 13:06
В Опере не видно, в BabelMapʼе вот это:
BabelMap написал её
задом наперёд, насколько я понимаю.
Цитата: Juuurgen от июня 15, 2012, 13:07
в опере 12 не работает
Ну, про Оперу можно было догадаться. Она вообще не поддерживает кодов уникода выше 0xFFFF.
Он написал её Универсалиею+, ибо других шрифтов нету.
У кого есть какие уникодные авестийские шрифты? Подгрузните на http://teilnehmer.somee.com/WpfTextImage/Fonts.aspx.
Цитата: Bhudh от июня 15, 2012, 13:12
У кого есть какие уникодные авестийские шрифты? Подгрузните на http://teilnehmer.somee.com/WpfTextImage/Fonts.aspx.
См. выше в этой теме, я же дал ссылку на шрифт Ahuramazda и блог пост со шрифтами. Грузить лень, т.к. бесполезно: если универсалией не написалось слева направа, значит, другими тоже так напишется.
Почему-то коды даёт вводить только в «Быстром ответе», а в полноценной форме не даёт. Раньше давало. Видимо, следствие вчерашнего обновления.
a | 𐬀 | aa | 𐬁 | ao | 𐬂 | aao | 𐬃 |
an | 𐬄 | aan | 𐬅 | ae | 𐬆 | aee | 𐬇 |
e | 𐬈 | ee | 𐬉 | o | 𐬊 | oo | 𐬋 |
i | 𐬌 | ii | 𐬍 | u | 𐬎 | uu | 𐬏 |
k | 𐬐 | x | 𐬑 | xy | 𐬒 | xv | 𐬓 |
g | 𐬔 | gg | 𐬕 | gh | 𐬖 | c | 𐬗 |
j | 𐬘 | t | 𐬙 | th | 𐬚 | d | 𐬛 |
dh | 𐬜 | tt | 𐬝 | p | 𐬞 | f | 𐬟 |
b | 𐬠 | bh | 𐬡 | ng | 𐬢 | ngy | 𐬣 |
ngv | 𐬤 | n | 𐬥 | ny | 𐬦 | nn | 𐬧 |
m | 𐬨 | hm | 𐬩 | yy | 𐬪 | y | 𐬫 |
v | 𐬬 | r | 𐬭 | l | 𐬮 | s | 𐬯 |
z | 𐬰 | sh | 𐬱 | zh | 𐬲 | shy | 𐬳 |
ssh | 𐬴 | h | 𐬵 | _ | | __ | |
___ | | * | 𐬹 | , | 𐬺 | : | 𐬻 |
. | 𐬼 | ! | 𐬽 | ? | 𐬾 | ; | 𐬿 |
|
Не ребят, надо авестийскому кириллицу пилить.
Я уже приводил примеры ;D.
Цитата: Искандер от июня 15, 2012, 13:24
Не ребят, надо авестийскому кириллицу пилить.
Перепиливать метод ввода с латиницы на кириллицу? Да ну нафиг. Не, если Исканд
ару так удобнее, то могу перепилишь, каэшн...
Так должно быть:
(http://teilnehmer.somee.com/WpfTextImage/Make.ashx?src=W2Y9QWh1cmFtemRhXVtkaXI9cnRsXVtzej03Ml3wkKy18JCsiPCQrK7wkKyu8JCsiiDwkKys8JCsivCQrK3wkKyu8JCsm_CQrL0)
[f=Ahuramzda][dir=rtl][sz=72]𐬵𐬈𐬮𐬮𐬊 𐬬𐬊𐬭𐬮𐬛𐬽
?
Ahuramzda⁈ Кому мзда?
𐬨𐬭𐬀𐬊𐬝 𐬹 𐬀𐬵𐬎𐬭𐬋 𐬹 𐬨𐬀𐬰𐬛𐬂 𐬼
Работает
Правда конечная точка уплывает вперёд, ну так оно у меня и в арабице.
А может, задействовать большие буквы, а не диграфы?
Новая версия (там же (http://ablog.site90.com/lang/avest.html)). Теперь должны работать Ctrl+C/Ctrl+V.
Проверка:
𐬞𐬭𐬊𐬬𐬉𐬭𐬐𐬀𐬼 Надеюсь, так будет работать. Я добавил right-to-left mark (#8207;) в генерируемый код.
Цитата: Iskandar от июня 15, 2012, 14:56
Правда конечная точка уплывает вперёд, ну так оно у меня и в арабице.
А это точно точка? А то я знаки препинания наугад порасставлял. ;D
Если что-то не так или можно сделать по-другому, говорите. Например, можно сделать aE вместо aee, или D вместо dh. Или заставить пробел выводить сочетание «
𐬹 ».
Цитата: Bhudh от июня 15, 2012, 14:50
Ahuramzda⁈ Кому мзда?
И правда, я неправильно написал название шрифта.
Дэв попутал.
Впрочем, я сам дэв, такшта... ;D
Цитата: Iskandar от июня 15, 2012, 15:21
А может, задействовать большие буквы, а не диграфы?
Можно. Скажите, какие — я задействую. Заменить все двойные большими?
Всего есть такие триграфы: aao, aan, aee, ngy, ngv, shy, ssh;
И такие диграфы: aa, ao, an, ae, ee, oo, ii, uu, xy, xv, gg, gh, th, dh, tt, bh, ng, ny, nn, hm, yy, sh, zh
Чему какие коды присвоить?
Цитата: wangjhenbai от июня 15, 2012, 15:25
Если что-то не так или можно сделать по-другому, говорите. Например, можно сделать aE вместо aee, или D вместо dh.
Поскольку Авеста уже существует в набранном виде: http://www.avesta.org/yasna/yasna.htm, то хорошо бы синхронизировать набор. Там используются другие шрифты транслита и собственно авестийского - просто с обратным порядком. Правда сам принцип набора в этих шрифтах мне не очень нравится. Я пока продумаю оптимальный набор и выставлю его здесь, хорошо?
Цитата: wangjhenbai от июня 15, 2012, 15:27
Или заставить пробел выводить сочетание
Вот это точно нужно, безусловно.
Большое спасибо за помощь
стало отображаться в опере, но процитировать не могу
Цитата: Juuurgen от июня 15, 2012, 15:45
стало отображаться в опере, но процитировать не могу
Процитировать нигде нельзя. И редактировать толком нельзя. Проблема с MySQL.
Варианты:
а) для всех: дождаться, пока в MySQL исправят (или исправить самим),
б) для всего ЛФ: попросить РавонаМа (я когда-то давал функцию для этого, но уже потерял её...),
в) для отдельных людей: сделать User JavaScript.
Цитата: Iskandar от июня 15, 2012, 15:36
Вот это точно нужно, безусловно.
Сделал. Обычный пробел можно ввести по Shift+пробел.
Цитата: Iskandar от июня 15, 2012, 15:36
Большое спасибо за помощь
Вам спасибо за Ваши уроки!
Цитата: Iskandar от июня 15, 2012, 15:34
Поскольку Авеста уже существует в набранном виде: http://www.avesta.org/yasna/yasna.htm, то хорошо бы синхронизировать набор. Там используются другие шрифты транслита и собственно авестийского - просто с обратным порядком. Правда сам принцип набора в этих шрифтах мне не очень нравится.
Насколько я понял, они там обходятся вообще без диграфов, с однозначными соответствиями «латиница — авестийский алфавит». Если так, то сделать как у них даже проще, чем с диграфами.
Но — проблема в том, что я не знаю авестийского алфавита, и мне довольно сложно установить соответствия между их буквами и уникодовыми. :-[ А ещё начертание их шрифта ave_bl_l4 отличается от шрифта Ahuramzda...
Если бы Вы мне сказали, какой уникодовой букве (или какому диграфу из уникодового описания) соответствует какая их буква, мне было бы проще.
Конечно, я и хочу сделать соответствия... Счас подумаю
Цитата: Iskandar от июня 15, 2012, 15:34
другие шрифты транслита
Вот, я пока что написал транслитератор из их транслита в нормальный уникод: http://ablog.site90.com/lang/avestaorg_transcription.html
Это не метод ввода, а просто конвертор. Ценность скрипта невелика, но вдруг понадобится процитировать кусок из их набранной Авесты в уникоде? Думаю, сейчас и для их авестийского такое сделаю (учитывая, что у них почти идентичные коды для латиницы и авестийского, это должно быть просто).
На входе вставляем:
frawarAne mazdayasnO zaraquStriS WIdaEwO ahura-TkaECO
И получаем:
[font=Arial Unicode MS][font=DejaVu Sans]fravarāne mazdayasnō zaraθuštriš vīdaēvō ahura-t̰kaēṣ̌ō[/font][/font]
1 aṣ̌əm vohū...(1 u 3).
fravarāne mazdayasnō zaraθuštriš vīdaēvō ahura-t̰kaēṣ̌ō,
hāvan̄əe aṣ̌aone aṣ̌ahe raθwe yasnāica vahmāica xṣ̌naoθrāica frasastayaēca,
sāvaŋh̄əe vīsyāica aṣ̌aone aṣ̌ahe raθwe yasnāica vahmāica xṣ̌naoθrāica frasastayaēca.
2 āθrō ahurahe mazdå puθrahe tava ātarš puθra ahurahe mazdå
xṣ̌naoθra yasnāica vahmāica xṣ̌naoθrāica frasastayaēca.
3 yaθā ahū vairyō zaotā frā-mē mrūtē,
aθā ratuš aṣ̌āt̰cīt̰ haca frā aṣ̌ava vīδvå mraotū.
aṣ̌əm vohū...(3).
yaθā ahū vairyō...(2).
4 frastuyē humatōibyascā hūxtōibyascā hvarštōibyascā
mąθwōibyascā vaxəδwōibyascā varštvōibyascā,
aibigairyā daiθē vīspā humatācā hūxtācā hvarštācā,
paitiricyā daiθē vīspā dušmatācā dužūxtācā dužvarštācā.
5 fərā v̄ə rāhī aməṣ̌ā spə̣ntā yasnəmcā vahməmcā fərā manaŋhā fərā
vacaŋhā fərā š́yaoθanā fərā aŋhuyā fərā tanvascīt̰ xᵛaḣyå uštanəm.
6 staomī aṣ̌əm,
aṣ̌əm vohū vahištəm astī uštā astī uštā ahmāi hyat̰ aṣ̌āi vahištāi aṣ̌əm(3).
7 fravarāne mazdayasnō zaraθuštriš vīdaēvō ahura-t̰kaēṣ̌ō,
hāvan̄əe aṣ̌aone aṣ̌ahe raθwe yasnāica vahmāica xṣ̌naoθrāica frasastayaēca,
sāvaŋh̄əe vīsyāica aṣ̌aone aṣ̌ahe raθwe yasnāica vahmāica xṣ̌naoθrāica frasastayaēca,
raθwąm ayaranąmca asnyanąmca māhyanąmca yāiryanąmca sarəδanąmca yasnāica vahmāica xṣ̌naoθrāica frasastayaēca.
8 ahurahe mazdå raēvatō xᵛarənaŋuhatō aməṣ̌anąm spə̣ntanąm miθrahe
vouru-gaoyaotōiš rāmanasca xᵛāstrahe,
9 hvarəxṣ̌aētahe aməṣ̌ahe raēvahe aurvat̰-aspahe,
vayaoš uparō-kairyehe taraδātō anyāiš dāmąn,
aētat̰ tē vayō yat̰ tē asti spə̣ntō-mainyaom,
razištayå cistayå mazdaδātayå aṣ̌aonyå daēnayå vaŋhuyå māzdayasnōiš,
10 mąθrahe spə̣ntahe aṣ̌aonō vərəzyaŋuhahe dātahe vīdaēvahe
dātahe zaraθuštrōiš darəγayå upayanayå daēnayå vaŋhuyå māzdayasnōiš zarazdātōiš mąθrahe spə̣ntahe,
uṣ̌i-darəθrəm daēnayå māzdayasnōiš vaēδīm mąθrahe spə̣ntahe,
āsnahe xraθwō mazdaδātahe gaoṣ̌ō-srūtahe xraθwō mazdaδātahe,
11 āθrō ahurahe mazdå puθrahe tava ātarš puθra ahurahe mazdå
mat̰ vīspaēibyō ātərəbyō,
garōiš uṣ̌i-darənahe mazdaδātahe aṣ̌axᵛāθrahe,
12 vīspaēṣ̌ąm yazatanąm aṣ̌aonąm mainyavanąm gaēθyanąm,
aṣ̌āunąm fravaṣ̌inąm uγranąm aiwiθūranąm paoiryō-t̰kaēṣ̌anąm fravaṣ̌inąm nabānazdištanąm fravaṣ̌inąm xṣ̌naoθra yasnāica vahmāica xṣ̌naoθrāica frasastayaēca.
13 (zōt̰,)
yaθā ahū vairyō zaotā frā-mē mrūtē,
(rāspī,)
yaθā ahū vairyō yō zaotā frā-mē mrūtē,
(zōt̰,)
aθā ratuš aṣ̌āt̰cīt̰ haca frā aṣ̌ava vīδvå mraotū.
aṣ̌əm vohū...(3).
14 xṣ̌naoθra ahurahe mazdå tarōidīte aŋrahe mainȳəuš,
haiθyāvarštąm hyat̰ vasnā fəraṣ̌ōtəməm.
aṣ̌əm vohū...(3).
15 yaθā ahū vairyō
aθā ratuš aṣ̌āt̰cīt̰ hacā
vaŋh̄əuš dazdā manaŋhō
š́yaoθananąm aŋh̄əuš mazdāi
xṣ̌aθrəmcā ahurāi ā
yim drigubyō dadat̰ vāstārəm(4)..
Может, имеет смысл сделать режим, убирающий нумерацию?
Транслитератор из авестийского шрифта на avesta.org в уникод: http://ablog.site90.com/lang/avestaorg_avestan.html
На входе:
`,OCEakT-aruha ,OwEadIW ,SirtSuqaraz ,Onsayadzam ,enArawarf
На выходе:
𐬟𐬭𐬀𐬎𐬎𐬀𐬭𐬁𐬥𐬈. 𐬨𐬀𐬰𐬛𐬀𐬌𐬌𐬀𐬯𐬥𐬋. 𐬰𐬀𐬭𐬀𐬚𐬎𐬱𐬙𐬭𐬌𐬱. 𐬬𐬍𐬛𐬀𐬉𐬎𐬎𐬋. 𐬀𐬵𐬎𐬭𐬀_𐬝𐬐𐬀𐬉𐬴𐬋.𐬻
Насколько я понял, я неправильную штуку поставил в качестве пробела.
Я взял 𐬹 10B39 AVESTAN ABBREVIATION MARK
Такое впечатление, что это не то... Видимо, надо пользоваться «универсальными» знаками для разделения слов. Наверное, лучше взять обычную точку?
Проверка: для гуглохрома... 𐬟𐬭𐬀𐬎𐬎𐬀𐬭𐬁𐬥𐬈. 𐬨𐬀𐬰𐬛𐬀𐬌𐬌𐬀𐬯𐬥𐬋. 𐬰𐬀𐬭𐬀𐬚𐬎𐬱𐬙𐬭𐬌𐬱. 𐬬𐬍𐬛𐬀𐬉𐬎𐬎𐬋. 𐬀𐬵𐬎𐬭𐬀_𐬝𐬐𐬀𐬉𐬴𐬋.𐬻
А так:
𐬟𐬭𐬀𐬎𐬎𐬀𐬭𐬁𐬥𐬈. 𐬨𐬀𐬰𐬛𐬀𐬌𐬌𐬀𐬯𐬥𐬋. 𐬰𐬀𐬭𐬀𐬚𐬎𐬱𐬙𐬭𐬌𐬱. 𐬬𐬍𐬛𐬀𐬉𐬎𐬎𐬋. 𐬀𐬵𐬎𐬭𐬀_𐬝𐬐𐬀𐬉𐬴𐬋.𐬻
Да, в Хроме теперь работает (в Эксплорере и Опере — нет).
Но коды ужасно длинные. Редактировать сообщения с такими кодами совсем неудобно.
Думаю, лучше сделать userscript, который будет заменять в сообщении надписи перед посылкой на соответствующий код... Т.е. чтобы можно было ввести 𐬟𐬭𐬀𐬎𐬎𐬀𐬭𐬁𐬥𐬈. 𐬨𐬀𐬰𐬛𐬀𐬌𐬌𐬀𐬯𐬥𐬋. или [ave]farwarAne mazdayasnO[/ave], нажать на «Лингвофоруме» же кнопку «Preprocess» — и оно само преобразуется, непосредственно перед отправкой. Можно даже на кнопку «Отправить» это повесить.
Единственное, что меня волнует — скорость. Для userscript'ов используется GreaseMonkey. Тормозит он или нет? Гм...
У меня — нет.
Гм... Да, в новой опере читает (причём даже не требует [bdo=rtl]). Отлично.
Цитата: О программе
Информация о версии
Версия: 11.64
Сборка: 1403
Что значит «в новой»⁈
В 12-й?
Цитата: wangjhenbai от июня 15, 2012, 10:18
Так как Лингвофорум (точнее, MySQL; я когда-то посылал РавонаМу хак, который позволяет это обойти, но он не использовал его) не поддерживает не-нулевые плоскости, приходится набирать по кодам
Срочно напишете Равонаму ещё раз, пока он химичит. Значит есть время и желание!!!
Цитата: Bhudh от июня 16, 2012, 11:53
Что значит «в новой»⁈
В 12-й?
Гм... Не знаю. У меня такая:
Цитата: 關於 Opera
版本資訊
版本 | 11.64 |
建號 | 1403 |
作業系統 | Win32 |
系統 | Windows 7 |
XHTML+Voice | 並未載入外掛程式 |
瀏覽器識別資料
Opera/9.80 (Windows NT 6.1; U; zh-tw) Presto/2.10.229 Version/11.64
Цитата: Валентин Н от июня 16, 2012, 11:56
Срочно напишете Равонаму ещё раз, пока он химичит
Я уже потерял тот код, мне лень его заново писать.
Цитата: Валентин Н от июня 16, 2012, 11:56
Значит есть время и желание!!!
Желание что-то делать на форуме ≠ желание исправлять отображение символов из верхних плоскостей.
Пусть хотя бы «такие» коды починит.
Цитата: wangjhenbai от июня 16, 2012, 11:56Не знаю. У меня такая:
Значит, это в семёрке пашет, а не в Опере. В хрюшке не пашет.
Продублирую сюда:
Благодаря настойчивости Валентина Н., РавонаМ только что поправил (http://lingvoforum.net/index.php/topic,21926.msg1354428.html#msg1354428) отображение авестийских символов.
Теперь можно просто вводить/копировать символы — и они отобразятся (впрочем, для Хрома можно окружать их кодом [bdo=rtl]...[/bdo]). Также работают цитаты.
Так что можно вместо метода ввода использовать обычную клавиатурную раскладку (например, исходник для MSKLC одного варианта поставляется с шрифтом Ahuramzda).
Впрочем, если Вы составили таблицу соответствий, можете её сюда кинуть — онлайновый метод ввода всё равно может кому-то пригодится.
у меня есть джава транслитератор, что надо сделать чтобы он стал плагином оперы?
Сунуть в папку UserJS.
А что, нельзя его сделать отдельной страницей, что ли?
Цитата: Bhudh от июня 16, 2012, 15:28
Сунуть в папку UserJS.
Не работает, там 3 файла: 1. сам транслитератор, 2. список замен, 3. хтмл интерфейс.
Цитата: Bhudh от июня 16, 2012, 15:28
А что, нельзя его сделать отдельной страницей, что ли?
хотел чтоб тексты транслителись на страницах, а не отдельлно перегонять текст.
Цитата: Валентин Н от июня 16, 2012, 15:37там 3 файла: 1. сам транслитератор, 2. список замен, 3. хтмл интерфейс.
Не вижу препятствий к их объединению. Разве что Вы боитесь размера...
Цитата: Валентин Н от июня 16, 2012, 15:37хотел чтоб тексты транслителись на страницах
Скрипт должен искать подходящие символы и перегонять. Регэкспы рулят.
Цитата: Bhudh от июня 16, 2012, 15:42
Не вижу препятствий к их объединению. Разве что Вы боитесь размера...
Но там же ссылка на другой файл наверно?
Цитата: Bhudh от июня 16, 2012, 15:42
Скрипт должен искать подходящие символы и перегонять. Регэкспы рулят.
Но ведь он перегоняет только то, что введено в поле ввода в хтмл интерфейсе...
Цитата: Валентин Н от июня 16, 2012, 15:48Но там же ссылка на другой файл наверно?
Какая ссылка? Все три файла можно объединить в один. "Ссылки" будут только внутренними.
Цитата: Валентин Н от июня 16, 2012, 15:48Но ведь он перегоняет только то, что введено в поле ввода в хтмл интерфейсе...
Скрипт делает то, что Вы ему приказываете.
Приказали перегонять то, что введено в поле ввода — он и перегоняет... :donno:
Прикажете перегонять то, что на странице — будет перегонять то, что на странице.
Цитата: Bhudh от июня 16, 2012, 15:51
Прикажете перегонять то, что на странице — будет перегонять то, что на странице.
Если это не трудно, то может вы смогли бы это сделать?
:-[
Охх... Потерял я ссылку на кроссбраузерную оболочку... У меня на странице ВКонтакта есть ссылка (http://vk.com/wall138948858_174) на один js-файл для Оперы, качните да вписывайте что душе угодно :).
И чо туда вписывать‽‽‽
Транслитератор. :)
вот код самого транслитератора:
// RuleMap вертає функцію, що реалізує ефективне перетворення слова за заданими правилами.
// Правила задаються у вигляді масиву правил, кожне з яких складається з префіксних букв, замінюваної частини, результату і постфіксних букв.
// Префіксні букви при цьому можуть бути як відтрансльованими так і невідтрансльованими.
Translator.RuleMap = function(rules){
// Вертає рядок str записаний буквами в регістрі відповідно до регістру букв рядка chars. Небукви іґноруються.
// Букви в верхньому регістрі з str зберігаються такими незалежно від рядка chars.
var ConvertStringCase = function (str,chars,addchars,defaultregister){
if(!defaultregister) defaultregister=false;
var chrs = new Array();
var ssize = 0;
for(var j=0; j<chars.length; ++j){
var ch = chars.charAt(j);
if(ch.toLowerCase()==ch)
if(ch.toUpperCase()==ch);
else chrs[ssize++]=false;
else
chrs[ssize++]=true;
}
var FindFirstCharCase = function(seq){
for(var j=0; j<seq.length; ++j){
var ch = seq.charAt(j);
if(ch.toLowerCase()==ch)
if(ch.toUpperCase()==ch);
else return false;
else return true;
}
return defaultregister?(!chrs[0]?false:true):false;
}
if(ssize<=1&&str.length>1) chrs[ssize++] = FindFirstCharCase(addchars);
var result="";
if(ssize<=str.length){
for(var j=0; j<ssize; ++j)
result+=chrs[j]?str.charAt(j).toUpperCase():str.charAt(j);
if(ssize<str.length) result+=chrs[ssize-1]?str.substring(ssize,str.length).toUpperCase():str.substring(ssize,str.length);
}else{
var i=0;
var jssize=0;
for(var j=0; j<str.length; ++j){
var chr = false;
jssize+=ssize;
while(jssize>=i*str.length) if(chrs[i++]) chr=true;
result+=chr?str.charAt(j).toUpperCase():str.charAt(j);
}
}
return result;
}
var map = new Object();
for(var i=0; i<rules.length; ++i){
var Rule = new Object();
if(rules
.length==2){
Rule.pre="";
Rule.post="";
Rule.pattern=rules- ;
Rule.res=rules[1];
}else
if(rules.length==4){
Rule.pre=rules- ;
Rule.post=rules[3];
Rule.pattern=rules[1];
Rule.res=rules[2];
} else continue;
var lettermap=Rule.pattern.charAt(0);
if(lettermap.length){
var mapelement=map[lettermap];
if(!mapelement)
mapelement=new Array();
mapelement[mapelement.length]=Rule;
map[lettermap]=mapelement;
}
}
var LastLetter = function(s,def){
var i = s.length;
while(i--){
var r = s.charAt(i);
if(r!=r.toUpperCase()) return r;
}
return def;
}
var FirstLetter = function(s,def){
for(var i = 0; i<s.length; ++i){
var r = s.charAt(i);
if(r!=r.toUpperCase()) return r;
}
return def;
}
var translate = function(word){
var result = "";
var lwr = word.toLowerCase()+" ";
var lastchar = " ";
var lastchart = " ";
var lastletter = " ";
var lastlettert = " ";
while(word.length){
var str = word.charAt(0);
var dec = str.length;
var rules = map[lwr.charAt(0)];
if(rules)
for(var i=0; i<rules.length; ++i){
if(rules.pre.length&&
(lastchar.length==0||lastchart.length==0||rules.pre.indexOf(lastchar)==-1&&rules.pre.indexOf(lastchart)==-1))
if(rules.pre.indexOf("@")==-1||rules.pre.indexOf(lastletter)==-1&&rules.pre.indexOf(lastlettert)==-1) continue;
var pattern = rules.pattern;
if(lwr.indexOf(pattern)==0){
if(rules.post.length){
var post = lwr.substring(pattern.length,lwr.length);
if(rules.post.indexOf(post.charAt(0))==-1&&(rules.post.indexOf("@")==-1||rules.post.indexOf(FirstLetter(post," "))==-1)) continue;
}
dec=pattern.length;
str=ConvertStringCase(rules.res,word.substring(0,dec),word.substring(dec,word.length-dec+1),result.length>0);
break;
}
}
lastchar=lwr.substring(dec-1,dec);
lastchart=str.substring(str.length-1,str.length).toLowerCase();
lastletter = LastLetter(lwr,lastletter)
lastlettert = LastLetter(str.toLowerCase(),lastlettert);
word=word.substring(dec,word.length);
lwr=lwr.substring(dec,lwr.length);
result+=str;
}
return result;
}
return translate;
}
// Вертає функцію, що перетворює текст, підставляючи всі слова у функцію Rule.
// Функція вважається чистою і кешується за допомогою мапи слів.
Translator.TranslateText = function(Rule){
var IsExcluded = function(str){
var i = OnChange.exclsymbols.length;
while(i--) if(str.indexOf(OnChange.exclsymbols.charAt(i))!=-1) return true;
return false;
}
var wordmap = new Object();
var OnChange = function(src){
var startDate = new Date();
var firstsplit = src.split("\n");
var newmap = new Object();
OnChange.patches = 0;
OnChange.cached = 0;
for(var i=0; i<firstsplit.length; ++i){
var source = firstsplit.split(" ");
OnChange.patches+=source.length;
for(var s=0; s<source.length; ++s){
var stext = source;
var text = wordmap[stext];
if(!text)
text=Rule(stext);
else
OnChange.cached++;
newmap[stext]=text;
if(OnChange.dogcheck&&stext.charAt(0)=="@")
text=stext.substring(1,stext.length);
else
if(OnChange.exclcheck&&IsExcluded(stext))
text=stext;
else;
source=text;
}
firstsplit=source.join(" ");
}
wordmap = newmap;
var dst=firstsplit.join("\n");
OnChange.worktime = ((new Date()).getTime() - startDate.getTime());
return dst;
}
OnChange.dogcheck = true;
OnChange.exclcheck = true;
OnChange.worktime = 0; // час роботи в мілісекундах
OnChange.patches = 0; // кількість оброблених слів
OnChange.cached = 0; // кількість кешованих слів
OnChange.exclsymbols = "@/\\+=*";
return OnChange;
}
Util = new Object();
Util.IsCharacter = function(ch){
return ch.toUpperCase()!=ch.toLowerCase();
}
// Об'єднує спецсимволи з одного і того ж слова
Util.MergeSpecSym = function(word1, word2){
var res = "";
if(!word2 || !word1) return res;
var c1 = 0;
var c2 = 0;
for(;;){
while(word1.charAt(c1)==word2.charAt(c2)){
res+=word1.charAt(c1);
++c1;
++c2;
if(c1>=word1.length) return res+word2.substr(c2,word2.length);
else
if(c2>=word2.length) return res+word1.substr(c1,word1.length);
}
if(!Util.IsCharacter(word1.charAt(c1))){
res += word1.charAt(c1++);
if(c1>=word1.length) return res+word2.substr(c2,word2.length);
}else
if(!Util.IsCharacter(word2.charAt(c2))){
res += word2.charAt(c2++);
if(c2>=word2.length) return res+word1.substr(c1,word1.length);
} else return res;
}
}
// Вертає значення параметра, взяе з адресного рядка
Util.GetParam = function(name){
var results = RegExp("[\\?&]"+name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]")+"=([^&#]*)").exec(window.location.href);
return results == null?"":decodeURIComponent(results[1]);
}
Util.PutParam = function(name, value, tail){
if(!tail)tail="";
if(!value || !name || !value.length || !name.length) return tail;
return "?"+name+"="+encodeURIComponent(value)+tail.replace("?","&");
}
// Визначає яку форму іменника вживати — однину, двоїну, троїну чи множину
Util.SelectSDTP = function(num, singular, dual, trial, plural){
if(plural==null){ plural=trial; trial=dual; }
if(plural==null) plural=trial;
if(plural==null) return singular;
num=num%100;
if(num<10||num>19) switch (num % 10){
case 1: return singular;
case 2: return dual;
case 3: return trial;
case 4: return trial;
}
return plural;
}
{
// CQ Counter code start
var _d=document; var _n=navigator; var _t=new Date();
var _c="0"; var _r="0"; var _j="U"; var _k="U";
_d.cookie="_c=y"; _d.cookie.length>0?_k="Y":_k="N";
_n.javaEnabled()?_j="Y":_j="N";
var _b=screen; _r=_b.width; _n.appName!="Netscape"?_c=_b.colorDepth : _c=_b.pixelDepth;
//_d.write("<img src=\"http://ua.2.cqcounter.com/cgi-bin/c?_id=translit&_z=0&_r=" _r "&_c=" _c "&_j=" _j "&_t=" (_t.getTimezoneOffset()) "&_k=" _k "&_l=" escape(_d.referrer) "\" (http://ua.2.cqcounter.com/cgi-bin/c?_id=translit&_z=0&_r="+_r+"&_c="+_c+"&_j="+_j+"&_t="+(_t.getTimezoneOffset())+"&_k="+_k+"&_l="+escape(_d.referrer)+"%5C"); width=0 height=0 "+"border=0>");
// CQ Counter code end
Translator.counterImage = new Image;
Translator.counterImage.src="http://ua.2.cqcounter.com/cgi-bin/c?_id=translit&_z=0&_r=" _r "&_c=" _c "&_j=" _j "&_t=" (_t.getTimezoneOffset()) "&_k=" _k "&_l=" escape(_d.referrer) (http://ua.2.cqcounter.com/cgi-bin/c?_id=translit&_z=0&_r="+_r+"&_c="+_c+"&_j="+_j+"&_t="+(_t.getTimezoneOffset())+"&_k="+_k+"&_l="+escape(_d.referrer));
}
Что там надо изменить, чтоб он:
— буквы для конвертации брал не из поля ввода хтмл интерфейса, а со страницы,
— список замен брал не из другого файла, а из себя самого.
Программировал, только в школе на бейсике!
Цитата: Валентин Н от июня 16, 2012, 15:26
у меня есть джава транслитератор, что надо сделать чтобы он стал плагином оперы?
Если Джава — то ничего не получится, скорее всего. Если ДжаваСкрипт — то можно попробовать...
Дело в том, что я не умею писать плагины. Я умею писать только юзерскрипты. Т.е. прикрутить транслитерацию к отдельному сайту я могу, а ко всему интернету, чтобы по кнопочке меню — нет. Но можно попробовать...
Цитата: Валентин Н от июня 16, 2012, 16:10
— буквы для конвертации брал не из поля ввода хтмл интерфейса, а со страницы,
С какой страницы? Если это userJS, он будет выполняться на всех страницах или на всех страницах определённого сайта.
Имя файла translator.js джаваскрипт наверно.
А почему можно прикрутить к отдельному сайту, а не к любому?
Он может участки кода страницы транслитерировать?
Что делать в линуксе?
Цитата: Валентин Н от июня 16, 2012, 16:30А почему можно прикрутить к отдельному сайту, а не к любому?
Потому что это особенность UserJS.
Я же дал ссылку, там есть указание на сайт.
Цитата: Валентин Н от июня 16, 2012, 16:30Он может участки кода страницы транслитерировать?
В смысле кода? Участки текста, код-то менять незачем...
Цитата: Валентин Н от июня 16, 2012, 16:10
вот код самого транслитератора: // RuleMap вертає функцію, що реалізує ефективне перетворення слова за заданими правилами.
// Правила задаються у вигляді масиву правил, кожне з яких складається з префіксних букв, замінюваної частини, результату і постфіксних букв.
// Префіксні букви при цьому можуть бути як відтрансльованими так і невідтрансльованими.
Translator.RuleMap = function(rules){
// Вертає рядок str записаний буквами в регістрі відповідно до регістру букв рядка chars. Небукви іґноруються.
// Букви в верхньому регістрі з str зберігаються такими незалежно від рядка chars.
var ConvertStringCase = function (str,chars,addchars,defaultregister){
if(!defaultregister) defaultregister=false;
var chrs = new Array();
var ssize = 0;
for(var j=0; j<chars.length; ++j){
var ch = chars.charAt(j);
if(ch.toLowerCase()==ch)
if(ch.toUpperCase()==ch);
else chrs[ssize++]=false;
else
chrs[ssize++]=true;
}
var FindFirstCharCase = function(seq){
for(var j=0; j<seq.length; ++j){
var ch = seq.charAt(j);
if(ch.toLowerCase()==ch)
if(ch.toUpperCase()==ch);
else return false;
else return true;
}
return defaultregister?(!chrs[0]?false:true):false;
}
if(ssize<=1&&str.length>1) chrs[ssize++] = FindFirstCharCase(addchars);
var result="";
if(ssize<=str.length){
for(var j=0; j<ssize; ++j)
result+=chrs[j]?str.charAt(j).toUpperCase():str.charAt(j);
if(ssize<str.length) result+=chrs[ssize-1]?str.substring(ssize,str.length).toUpperCase():str.substring(ssize,str.length);
}else{
var i=0;
var jssize=0;
for(var j=0; j<str.length; ++j){
var chr = false;
jssize+=ssize;
while(jssize>=i*str.length) if(chrs[i++]) chr=true;
result+=chr?str.charAt(j).toUpperCase():str.charAt(j);
}
}
return result;
}
var map = new Object();
for(var i=0; i<rules.length; ++i){
var Rule = new Object();
if(rules[i].length==2){
Rule.pre="";
Rule.post="";
Rule.pattern=rules[i][0];
Rule.res=rules[i][1];
}else
if(rules[i].length==4){
Rule.pre=rules[i][0];
Rule.post=rules[i][3];
Rule.pattern=rules[i][1];
Rule.res=rules[i][2];
} else continue;
var lettermap=Rule.pattern.charAt(0);
if(lettermap.length){
var mapelement=map[lettermap];
if(!mapelement)
mapelement=new Array();
mapelement[mapelement.length]=Rule;
map[lettermap]=mapelement;
}
}
var LastLetter = function(s,def){
var i = s.length;
while(i--){
var r = s.charAt(i);
if(r!=r.toUpperCase()) return r;
}
return def;
}
var FirstLetter = function(s,def){
for(var i = 0; i<s.length; ++i){
var r = s.charAt(i);
if(r!=r.toUpperCase()) return r;
}
return def;
}
var translate = function(word){
var result = "";
var lwr = word.toLowerCase()+" ";
var lastchar = " ";
var lastchart = " ";
var lastletter = " ";
var lastlettert = " ";
while(word.length){
var str = word.charAt(0);
var dec = str.length;
var rules = map[lwr.charAt(0)];
if(rules)
for(var i=0; i<rules.length; ++i){
if(rules[i].pre.length&&
(lastchar.length==0||lastchart.length==0||rules[i].pre.indexOf(lastchar)==-1&&rules[i].pre.indexOf(lastchart)==-1))
if(rules[i].pre.indexOf("@")==-1||rules[i].pre.indexOf(lastletter)==-1&&rules[i].pre.indexOf(lastlettert)==-1) continue;
var pattern = rules[i].pattern;
if(lwr.indexOf(pattern)==0){
if(rules[i].post.length){
var post = lwr.substring(pattern.length,lwr.length);
if(rules[i].post.indexOf(post.charAt(0))==-1&&(rules[i].post.indexOf("@")==-1||rules[i].post.indexOf(FirstLetter(post," "))==-1)) continue;
}
dec=pattern.length;
str=ConvertStringCase(rules[i].res,word.substring(0,dec),word.substring(dec,word.length-dec+1),result.length>0);
break;
}
}
lastchar=lwr.substring(dec-1,dec);
lastchart=str.substring(str.length-1,str.length).toLowerCase();
lastletter = LastLetter(lwr,lastletter)
lastlettert = LastLetter(str.toLowerCase(),lastlettert);
word=word.substring(dec,word.length);
lwr=lwr.substring(dec,lwr.length);
result+=str;
}
return result;
}
return translate;
}
// Вертає функцію, що перетворює текст, підставляючи всі слова у функцію Rule.
// Функція вважається чистою і кешується за допомогою мапи слів.
Translator.TranslateText = function(Rule){
var IsExcluded = function(str){
var i = OnChange.exclsymbols.length;
while(i--) if(str.indexOf(OnChange.exclsymbols.charAt(i))!=-1) return true;
return false;
}
var wordmap = new Object();
var OnChange = function(src){
var startDate = new Date();
var firstsplit = src.split("\n");
var newmap = new Object();
OnChange.patches = 0;
OnChange.cached = 0;
for(var i=0; i<firstsplit.length; ++i){
var source = firstsplit[i].split(" ");
OnChange.patches+=source.length;
for(var s=0; s<source.length; ++s){
var stext = source[s];
var text = wordmap[stext];
if(!text)
text=Rule(stext);
else
OnChange.cached++;
newmap[stext]=text;
if(OnChange.dogcheck&&stext.charAt(0)=="@")
text=stext.substring(1,stext.length);
else
if(OnChange.exclcheck&&IsExcluded(stext))
text=stext;
else;
source[s]=text;
}
firstsplit[i]=source.join(" ");
}
wordmap = newmap;
var dst=firstsplit.join("\n");
OnChange.worktime = ((new Date()).getTime() - startDate.getTime());
return dst;
}
OnChange.dogcheck = true;
OnChange.exclcheck = true;
OnChange.worktime = 0; // час роботи в мілісекундах
OnChange.patches = 0; // кількість оброблених слів
OnChange.cached = 0; // кількість кешованих слів
OnChange.exclsymbols = "@/\\+=*";
return OnChange;
}
Util = new Object();
Util.IsCharacter = function(ch){
return ch.toUpperCase()!=ch.toLowerCase();
}
// Об'єднує спецсимволи з одного і того ж слова
Util.MergeSpecSym = function(word1, word2){
var res = "";
if(!word2 || !word1) return res;
var c1 = 0;
var c2 = 0;
for(;;){
while(word1.charAt(c1)==word2.charAt(c2)){
res+=word1.charAt(c1);
++c1;
++c2;
if(c1>=word1.length) return res+word2.substr(c2,word2.length);
else
if(c2>=word2.length) return res+word1.substr(c1,word1.length);
}
if(!Util.IsCharacter(word1.charAt(c1))){
res += word1.charAt(c1++);
if(c1>=word1.length) return res+word2.substr(c2,word2.length);
}else
if(!Util.IsCharacter(word2.charAt(c2))){
res += word2.charAt(c2++);
if(c2>=word2.length) return res+word1.substr(c1,word1.length);
} else return res;
}
}
// Вертає значення параметра, взяе з адресного рядка
Util.GetParam = function(name){
var results = RegExp("[\\?&]"+name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]")+"=([^&#]*)").exec(window.location.href);
return results == null?"":decodeURIComponent(results[1]);
}
Util.PutParam = function(name, value, tail){
if(!tail)tail="";
if(!value || !name || !value.length || !name.length) return tail;
return "?"+name+"="+encodeURIComponent(value)+tail.replace("?","&");
}
// Визначає яку форму іменника вживати — однину, двоїну, троїну чи множину
Util.SelectSDTP = function(num, singular, dual, trial, plural){
if(plural==null){ plural=trial; trial=dual; }
if(plural==null) plural=trial;
if(plural==null) return singular;
num=num%100;
if(num<10||num>19) switch (num % 10){
case 1: return singular;
case 2: return dual;
case 3: return trial;
case 4: return trial;
}
return plural;
}
Что там надо изменить, чтоб он:
— буквы для конвертации брал не из поля ввода хтмл интерфейса, а со страницы,
— список замен брал не из другого файла, а из себя самого.
1) Задать диапазон или полный список букв, нуждающихся в конвертации и написать функцию их добычи из текста.
2) Внедрить другой файл в первый, в виде массива, к примеру, что и решает п. 1).
Цитата: Karakurt от июня 16, 2012, 16:48Что делать в линуксе?
А UserJS в Линухе не работают⁈
Поставил фонт, терь кажет.
Цитата: Karakurt от июня 16, 2012, 16:48
Что делать в линуксе?
А что в Линуксе не так?
У Вас не отображается авестийский? А расскажите, пожалуйста, подробнее: какой обозреватель, какой дистрибутив?
После установки шрифта стал показывать. Минт дебиан. Жирнолис.
И куда конкретно это надо вставить и что надо изменить для этого.
Вот список замен
if(!Translator);
else{
var гл = "еёюяиэоуаы ь";
var гл2 = "ёюя";
var шип = "жшчщ";
var согл = "бвгджзйклмнпрстфхцчшщ";
Translator.BelarusianToLatinka = Translator.RuleMap(Array(
Array(шип,"е","e",""),
Array(шип,"ё","o",""),
Array(шип,"ю","u",""),
Array(шип,"я","a",""),
Array(шип,"ь","",""),
Array(согл,"э","'e",""),
Array(гл,"е","ʏe",""),
Array(гл,"ё","ʏo",""),
Array(гл,"ю","ʏu",""),
Array(гл,"я","ʏa",""),
Array("э","e"),
Array("ъе","ʏe"),
Array("ъё","ʏo"),
Array("ъю","ʏu"),
Array("ъя","ʏa"),
Array("ь","и","ʏi",""),
Array("ь","о","ʏo",""),
Array("ь","у","ʏu",""),
Array("ь","а","ʏa",""),
Array("а","a"),
Array("о","o"),
Array("у","u"),
Array("и","i"),
Array("ы","y"),
Array("я","'a"),
Array("ё","'o"),
Array("ю","'u"),
Array("б","b"),
Array("в","v"),
Array("г","g"),
Array("д","d"),
Array("з","z"),
Array("й","ʏ"),
Array("к","k"),
Array("л","l"),
Array("м","m"),
Array("н","n"),
Array("п","p"),
Array("р","r"),
Array("с","s"),
Array("т","t"),
Array("ф","f"),
Array("ц","c"),
Array("ж","j"),
Array("ш","w"),
Array("ч","q"),
Array("щ","w'"),
Array("х","h"),
Array("ь","'")
));
Translator.BelarusianToLatinka.version = "1.01";
}
Блин, я для кого в цитате тэг [code][/code] использовал⁈ >(
А как Вы сделали этот массив? Что-то у меня нехорошее предчувствие, что работать оно не будет...
Цитата: Bhudh от июня 16, 2012, 19:05
А как Вы сделали этот массив? Что-то у меня нехорошее предчувствие, что работать оно не будет...
Что значит как с делал??? Как у разработчика было, так и сделал, только свой список составил.
И у разработчика разное число аргументов в массиве было?
Цитата: Bhudh от июня 16, 2012, 20:21
И у разработчика разное число аргументов в массиве было?
Не работает только если меньше, больше можно.
А, врубился...
Если три ввести, тоже может не сработать.
А что, транслитераторы больше работать не будут? :(
Цитата: Iskandar от июля 21, 2012, 15:54
А что, транслитераторы больше работать не будут? :(
Проблемы у хостера, обещали через 6 часов исправить:
ЦитироватьServer #17 is under the DDOS attack (IP Nullrouted)
We have just received a HUGE (over 3GB/s incoming traffic) DDoS attack targeting the Server #17. Our CISCO guard firewall was unable to handle such attack, so one of the server IP address - 31.170.162.223 was disabled (all the rest websites on this server are working fine).
If your website is using this IP (due to unique IP rotation system only 3% websites are using this IP) it will be unavailable for the next 6 hours. As soon attack will subside, this IP address will be enabled and your website will start working again. We thank you for your patience and understanding.
К сожалению, у меня под рукой сохранилось не всё и, возможно, не самые актуальные версии. Прикрепляю во вложении: все эти скрипты можно скачать и использовать локально.
Спасибо
ii 𐬍 и uu 𐬏 не годятся, потому что 𐬌𐬌= [y] и 𐬎𐬎 = [w] не в начале слова.
Для Искандара от Деметриуса:
ЦитироватьНовая версия скрипта:
http://ablog.site90.com/lang/avest-2012-08-11.html
В ней код ii заменён на I (Shift+I), а uu заменён на U (Shift+U).
Кроме того, теперь апостроф можно использовать для разбиения диграфов (т.е. можно вводить s's, например).
Старая версия (правда, в неё backport'ирована возможность разбиения i'i и u'u апострофами) доступна тут: http://ablog.site90.com/lang/avest-2012-06-16.html (теперь все файлы будут с датой, чтобы не путаться).
Я спёр на сайте http://www.lexilogos.com/keyboard/index.htm персидскую клавиатуру и попробовал переделать её в авестийскую, чтобы был виртуальный клавишный набор. Также в файле джавы переписал раскладочную замену, почти полностью подогнав её под avesta.org.
Поскольку в хтмл я ничего не соображаю, я не смог:
1. Переименовать файл ;D :fp:
2. Вставить многие полезности из работы дорогого Деметриуса
http://blagoverie.org/persian.htm
Кстати, вспомогательный транслит - экспериментальный, кириллический
Ответ Диметриуса:
Цитировать
Цитировать
1. Переименовать файл ;D :fp:
Важно, что вместе с файлом тащится папка persian_files. В зависимости от настроек Windows эта папка может переименовываться вместе с файлом (т.е. при переименовании persian.htm в avestan.htm, persian_files поменяется на avestan_files). Если так, в самом файле persian.htm исправьте эти строки:
Цитата: persian.htm (строки 16—18)
<link href="persian_files/style.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="persian_files/comlat.js"></script>
<script type="text/javascript" src="persian_files/carfa.js"></script>
Кстати, вот это можно удалить:
Цитата: persian.htm, строка 8<link rel="alternate" type="application/rss+xml" title="Lexilogos" href="http://www.lexilogos.com/english/english.xml">
Дальше. Насчёт конвертора:
Цитата: carfa.js
car = car.replace(/1000/g, "𐭿");
Такие вещи никогда не выполнятся, т.к. 1 после ввода сразу преобразуется вот этой строчкой:
Цитата: carfa.js
car = car.replace(/1/g, "𐭸");
Вывод: замените код для 10, 20, 100, 1000, чтобы он учитывал, что замены уже произведены:
Цитата: carfa.js
car = car.replace(/1/g, "𐭸");
car = car.replace(/2/g, "𐭹");
car = car.replace(/3/g, "𐭺");
car = car.replace(/4/g, "𐭻");
car = car.replace(/10/g, "𐭼");
car = car.replace(/20/g, "𐭽");
car = car.replace(/100/g, "𐭾");
car = car.replace(/1000/g, "𐭿");
на это:
Цитата: carfa.js
car = car.replace(/1/g, "𐭸");
car = car.replace(/2/g, "𐭹");
car = car.replace(/3/g, "𐭺");
car = car.replace(/4/g, "𐭻");
car = car.replace(/𐭸0/g, "𐭼");
car = car.replace(/𐭹0/g, "𐭽");
car = car.replace(/𐭼0/g, "𐭾");
car = car.replace(/𐭾0/g, "𐭿");
Цитировать
2. Вставить многие полезности из работы дорогого Деметриуса
А чего не хватает?
Цитировать
Кстати, вспомогательный транслит - экспериментальный, кириллический
Потом сделаю автоматический транслитератор, сейчас занят.
Я подредактирую свой транслитератор на основе Вашей раскладки, но попозже.
Цитата: I. G. от августа 16, 2012, 13:09
Важно, что вместе с файлом тащится папка persian_files. В зависимости от настроек Windows эта папка может переименовываться вместе с файлом (т.е. при переименовании persian.htm в avestan.htm, persian_files поменяется на avestan_files). Если так, в самом файле persian.htm исправьте эти строки:
Да, я что-то именно так пробовал, да не вышло. Видать не все строчки поправил.
Цитата: I. G. от августа 16, 2012, 13:09
Такие вещи никогда не выполнятся
Спасибо.
Полноценный заменитель цифр вообще должен быть куда шире.
Впрочем, я пока не очень понял, зачем в этом шрифте цифры из наскального пехлеви. В манускриптах обычно вообще не писали номера стихов, а какие цифры использовали помимо этого, надо изучить...
Цитата: I. G. от августа 16, 2012, 13:09
А чего не хватает?
Я не понял, как делается пробел > средняя точка.
Да и остальные знаки препинания что-то не заменяются...
Ну и конечно, get ligvoforum code :)
Цитата: I. G. от августа 16, 2012, 13:09
Потом сделаю автоматический транслитератор, сейчас занят.
Я подредактирую свой транслитератор на основе Вашей раскладки, но попозже.
Спасибо большое
Пока так:
http://blagoverie.org/keyboards/avestan_cyr.htm
Потом, когда эта эпопея закончится, подскажете, как сделать, чтобы и у меня отображалось? Подпись Искандара, к примеру, видна, а вот на сайте...
Цитата: ali_hoseyn от августа 16, 2012, 13:56
Подпись Искандара, к примеру, видна, а вот на сайте...
Да, в Опере не показывает почему-то...
Ага, и в Хроме, и в Ишаке.
Я так и думал, что Мозила - лучший браузер ;D
Наверно, надо прописать, что получаемый в результате набора шрифт - это именно Ahuramzda, а не шаляй-валяй...
Так и сделал, вроде стало работать в других браузерах.
Зинда бод! ;up:
update: Только там слева направо печатает. Пичаль.
*шепотом* Здесь кто-нибудь видит подпись Iskandar'а?
Цитата: ali_hoseyn от августа 16, 2012, 15:43
update: Только там слева направо печатает. Пичаль.
Исправил.Пардон, это у меня глюк.
Попробую ещё
Однако... Форма Деметриуса у меня тоже не работает в Опере и Хроме... :what:
Цитата: Dēmētriusзамените код для 10, 20, 100, 1000, чтобы он учитывал, что замены уже произведены
:o
Зачем так извращаться? Просто все замены с бо[b]́[/b]льшим количеством символов делаются
раньше, чем с меньшим!
И ничего никому не мешает!
ЦитироватьЦитироватьНу и конечно, get ligvoforum code :)
Эта штука была важна до того, как РавонаМ форум починил. Сейчас она уже, в принципе, нужна только для указания шрифта и [bdo=] (это важно для Оперы и Хрома), а так можно всё копировать без кодов, напрямую.
ЦитироватьЯ не понял, как делается пробел > средняя точка.
Да и остальные знаки препинания что-то не заменяются...
У Вас скрипт реализован так (по правде говоря, достаточно плохо), что просто заменить пробелы на срединные точки не получится. Замените что-то другое; например, на двоеточия или что-то ещё.
Про отсутствие поддержки ввода в Опере и Хроме я предупреждал, кажется. Проблема в том, что у них не прописано, что авестийские буквы — справа налево.
Можно сделать костыли одного из двух видов:
- прописать unicode-bidi: bidi-override; direction: rtl; в стилях поля ввода (но тогда нельзя будет вставлять кириллицу и нормальную кириллицу в авестийский текст);
- добавлять код указания направления возле каждого авестийского символа (но тогда это лишние пару байтов после каждой буквы); так сделан мой вариант транслитератора http://ablog.site90.com/lang/avest_compatible.html (но в нём ii и uu не поправлены).
Но — это костыли. Возможно, проще дождаться, чтобы разработчики этих браузеров сами добавили нормальную поддержку нового уникода.
Цитата: Bhudh:O
Зачем так извращаться?
Если бы ты посмотрел Искандаров скрипт (я уже код смотреть не прошу — посмотри сам скрипт), у тебя бы не возникало таких вопросов.
Искандар, а скажете мне свой email? Если не сложно, напишите мне, пожалуйста, с какого-то ящика, на который Вам можно писать, на dmymd@yandex.ru. А то живых клонов у меня не осталось, а постоянно просить I. G. тоже не дело.