Module:User:Kephir/untranslit

From Wiktionary, the free dictionary
Jump to navigation Jump to search
Russian translit recovered stress
поиграть poigrátʹ поигра́ть
замести zamestí замести́
пропеть propétʹ пропе́ть
достигнуть dostígnutʹ дости́гнуть
стебнуться stebnútʹsja стебну́ться
прочесть pročéstʹ проче́сть
умыть umýtʹ умы́ть
задеревенеть zaderevenétʹ задеревене́ть
поесть pojéstʹ пое́сть
спечь spečʹ спечь
полежать poležátʹ полежа́ть
уберечь uberéčʹ убере́чь
пёрнуть pjórnutʹ пёрнуть
крикнуть kríknutʹ кри́кнуть
прожужжать prožužžátʹ прожужжа́ть
заплести zaplestí заплести́
избаловать izbalovát’ избалова́ть
скрутить skrutít' скрути́ть
связывать svjázyvatʹ свя́зывать
постращать postraščátʹ постраща́ть
испачкать ispáčkat’ испа́чкать
потревожить potrevóžit' потрево́жить
отблагодарить otblagodarítʹ отблагодари́ть
возжелать vozželátʹ возжела́ть
посмеяться posmejátʹsja посмея́ться
изорвать izorvátʹ изорва́ть
подготовить prigotóvitʹ подгото́вить
поплакать poplákatʹ попла́кать
приготовиться prigotóvitʹsja пригото́виться
пробудить probudítʹ пробуди́ть
поприветствовать poprivétstvovatʹ поприве́тствовать
окреститься okrestít’s’a окрести́ться
навести страх navestí strax навести́ страх
нарыть narýtʹ нары́ть
убедить ub'edít убеди́ть
вмешаться vmešát'sja вмеша́ться
вернуться vernútʹsja верну́ться
просверлить prosv'erlít’ просверли́ть
тряхнуть trjaxnútʹ тряхну́ть
развлечься razvléčsja развле́чься
размешать razmešátʹ размеша́ть
разбавить razbávit' разба́вить
утратить utrátit' утра́тить
пополоскать popoloskát' пополоска́ть
свезти sveztí свезти́
избрать izbrát' избра́ть
проиграть proigrát' проигра́ть
полизать polizátʹ полиза́ть
поддержать podderžát' поддержа́ть
отсосать otsosátʹ отсоса́ть
погрызть pogrýztʹ погры́зть
задремать zadremátʹ задрема́ть
обменять obmenjátʹ обменя́ть
поглазеть poglazét' поглазе́ть
запротестовать zaprotestovát’ запротестова́ть
замусорить zamúsorit' заму́сорить
погуглить pogúglit' погу́глить
наклеветать nakl'ev'etát' наклевета́ть
покусать pokusát' покуса́ть
поменяться pom'en'át's'a поменя́ться
перезимовать p'er'ezimovát' перезимова́ть
окрестить okr'estít' окрести́ть
умолить umolít' умоли́ть
погадать pogadát' погада́ть
основать osnovát основа́ть
взвыть vzvyt' взвыть
спутать spútat' спу́тать
защекотать zaščekotátʹ защекота́ть
кашлянуть kášl'anut' ка́шлянуть
покушать pokúšat’ поку́шать
измерить izm'érit' изме́рить
открыться otkrýt's'a откры́ться
намолотить namolotítʹ намолоти́ть
садить sadítʹ сади́ть
заасфальтировать zaasfal'tírovat' заасфальти́ровать
пошарить pošárit' поша́рить
капнуть kápnut' ка́пнуть
упорядочить uporjádočit' упоря́дочить
приволочь privolóčʹ приволо́чь
скосить skosít' скоси́ть
скосить skosít' скоси́ть
похудеть poxudét' похуде́ть
заблеять zabléjat' забле́ять
налгать nalgátʹ налга́ть
вернуть vernútʹ верну́ть
намарать namarátʹ намара́ть
намазать namázatʹ нама́зать
пожать požátʹ пожа́ть
пожать požátʹ пожа́ть
обхватить obxvatít' обхвати́ть
отнести otnestí отнести́
погромить pogromít' погроми́ть
сёрбнуть sjórbnutʹ сёрбнуть
похрапеть poxrapétʹ похрапе́ть
сожрать sožrátʹ сожра́ть
заволноваться zavolnovátʹsja заволнова́ться
положиться položít'sja положи́ться
разбазарить razbazárit' разбаза́рить
пожимать požimátʹ пожима́ть
пожинать požinátʹ пожина́ть
попить popítʹ попи́ть
умыть umýtʹ умы́ть
течь tečʹ течь
залезать zalezátʹ залеза́ть
связывать svjázyvatʹ свя́зывать
сгибать sgibátʹ сгиба́ть
сплетать spletátʹ сплета́ть
лить litʹ лить
полоть polotʹ полоть
стричь stričʹ стричь
узнавать uznavátʹ узнава́ть
отследить otsledítʹ отследи́ть
помнить pómnitʹ по́мнить
клясть kljastʹ клясть
выпивать vypivátʹ выпива́ть
сохнуть sóxnutʹ со́хнуть
вырастать vyrastátʹ выраста́ть
промазывать promázyvatʹ прома́зывать
показываться pokázyvatʹsja пока́зываться
уссыкаться ussykátʹsja уссыка́ться
жить žitʹ жить
обсыкаться obsykátʹsja обсыка́ться

local export = {}

-- "untranslit" is a misnomer, really.
-- given a piece of Cyrillic text and its transliteration with stress marked,
-- this function tries to place the stress mark on the correct Cyrillic letter.
-- very, very ugly... but I think it will do the job.
function export.untranslit(text, tr)
	if type(text) == 'table' then
		text, tr = text.args[1], text.args[2]
	end
	tr = mw.ustring.toNFD(tr)

	local vo = {}
	for offset in mw.ustring.gmatch(text, '()[аеёюяуоыиэ]') do
		table.insert(vo, offset)
	end

	local i, delta = 1, 0
	for accent in mw.ustring.gmatch(tr, '[aeiouy][\204\140]?([\204\128\204\129]?)') do
		if accent ~= "" then
			text = mw.ustring.sub(text, 1, vo[i] + delta) .. accent .. mw.ustring.sub(text, vo[i] + delta + 1)
			delta = delta + 1
		end
		i = i + 1
	end
	text = mw.ustring.gsub(text, "ё[\204\128\204\129]", "ё") -- ё should not have an explicit stress marker
	
	return text
end

return export