Валэктон: Воштэтъёсты адӟон понна, гожтостэс шараям бере, тӥледлы браузердылэсь кешсэ дугдытоно луоз, дыр.

  • Firefox/Safari: возе Shift, зӥбыса Выльдоно, яке зӥбе Ctrl-F5 яке Ctrl -R (Mac-ын ⌘-R)
  • Google Chrome: зӥбе Ctrl-Shift-R (Mac-ын ⌘-Shift-R).
  • Internet Explorer/Edge: возе Ctrl, зӥбыса Выльдоно, яке зӥбе Ctrl-F5.
  • Opera: зӥбе Ctrl-F5.
/****************************************************************************************
	
Скрипт добавляет в верхнюю панель инструментов кнопку, позволяющую просмотреть содержимое
страницы Википедии на удмуртском языке в латинской графике.
Ввиду того, что официально утверждённых правил перевода удмуртского языка с кириллицы на 
латиницу не существует, данные правила были придуманы автором самостоятельно.

*****************************************************************************************/

// Следующая функция осуществляет латинизацию переданного ей кириллического текста и 
// возвращает текст на латинице. Используются 3 буквы с диакритикой - ö, ś, ź.

function latinisation_udm1(text)
{
	// Объявление 2 массивов, которые будут хранить символы для поиска и замены соответственно
	var mcyr = new Array();
	var mlat = new Array();

	// Записываем в массивы сами правила замены символов на языке регулярных выражений
	// В левой колонке - буквы, которые ищем; в правой - буквы, на которые заменяем

	mcyr.push(/с([ЕеЁёИиЬьЮюЯя])/g);			mlat.push("ś$1");
	mcyr.push(/С([ЕеЁёИиЬьЮюЯя])/g);			mlat.push("Ś$1");
	mcyr.push(/з([ЕеЁёИиЬьЮюЯя])/g);			mlat.push("ź$1");
	mcyr.push(/З([ЕеЁёИиЬьЮюЯя])/g);			mlat.push("Ź$1");
	mcyr.push(/([ДдЛлНнТтФфХх])е/g);			mlat.push("$1ie");
	mcyr.push(/([eАаЕеЁёИиӤӥОоӦӧУуЪъЫыЬьЭэЮюЯя,;—"'>\:\.\?\!\-\(\)\s])е/g);	mlat.push("$1je");
	mcyr.push(/[еэ]/g);						mlat.push("e");
	mcyr.push(/([ДдЛлНнТтФфХх])Е/g);			mlat.push("$1IE");
	mcyr.push(/([EeАаЕЁёИиӤӥОоӦӧУуЪъЫыЬьЭЮюЯя,;—"'>\:\.\?\!\-\(\)\s])Е/g);	 mlat.push("$1Je");
	mcyr.push(/[ЕЭ]/g);						mlat.push("E");
	mcyr.push(/([БбВвГгДдКкЛлМмНнПпРрТтФфХх])ё/g);	  mlat.push("$1ʼo");
	mcyr.push(/([EeoАаЁёИиӤӥОоӦӧУуЪъЫыЬьЮюЯя,;—"'>\:\.\?\!\-\(\)\s])ё/g);	  mlat.push("$1jo");
	mcyr.push(/[ёо]/g);						mlat.push("o");
	mcyr.push(/([БбВвГгДдКкЛлМмНнПпРрТтФфХх])Ё/g);	  mlat.push("$1ʼO");
	mcyr.push(/([EeOoАаЁИиӤӥОӦӧУуЪъЫыЬьЮюЯя,;—"'>\:\.\?\!\-\(\)\s])Ё/g);	   mlat.push("$1Jo");
	mcyr.push(/[ЁО]/g);						mlat.push("O");
	mcyr.push(/([БбВвГгДдКкЛлМмНнПпРрТтФфХх])ю/g);	  mlat.push("$1iu");
	mcyr.push(/([EeOouАаИиӤӥӦӧУуЪъЫыЬьЮюЯя,;—"'>\:\.\?\!\-\(\)\s])ю/g);	    mlat.push("$1ju");
	mcyr.push(/[ую]/g);						mlat.push("u");
	mcyr.push(/([БбВвГгДдКкЛлМмНнПпРрТтФфХх])Ю/g);	  mlat.push("$1IU");
	mcyr.push(/([EeOoUuАаИиӤӥӦӧУЪъЫыЬьЮЯя,;—"'>\:\.\?\!\-\(\)\s])Ю/g);		mlat.push("$1Ju");
	mcyr.push(/[УЮ]/g);						mlat.push("U");
	mcyr.push(/([БбВвГгДдКкЛлМмНнПпРрТтФфХх])я/g);	  mlat.push("$1ia");
	mcyr.push(/([aEeOoUuАаИиӤӥӦӧЪъЫыЬьЯя,;—"'>\:\.\?\!\-\(\)\s])я/g);		 mlat.push("$1ja");
	mcyr.push(/[ая]/g);						mlat.push("a");
	mcyr.push(/([БбВвГгДдКкЛлМмНнПпРрТтФфХх])Я/g);	  mlat.push("$1IA");
	mcyr.push(/([AaEeOoUuАИиӤӥӦӧЪъЫыЬьЯ,;—"'>\:\.\?\!\-\(\)\s])Я/g);		  mlat.push("$1Ja");
	mcyr.push(/[АЯ]/g);					  mlat.push("A");	
	mcyr.push(/([ДдЛлНнТт])и/g);			 mlat.push("$1ii");
	mcyr.push(/([ДдЛлНнТт])И/g);			 mlat.push("$1II");
	mcyr.push(/([Цц])и/g);				   mlat.push("$1y");
	mcyr.push(/([Цц])И/g);				   mlat.push("$1Y");
	mcyr.push(/[иӥ]/g);					 mlat.push("i");
	mcyr.push(/[ИӤ]/g);					 mlat.push("I");
	mcyr.push(/ӧ/g);						mlat.push("ö");
	mcyr.push(/Ӧ/g);						mlat.push("Ö");
	mcyr.push(/ы/g);						mlat.push("y");
	mcyr.push(/Ы/g);						mlat.push("Y");
	mcyr.push(/б/g);						mlat.push("b");
	mcyr.push(/Б/g);						mlat.push("B");
	mcyr.push(/в/g);						mlat.push("v");
	mcyr.push(/В/g);						mlat.push("V");
	mcyr.push(/г/g);						mlat.push("g");
	mcyr.push(/Г/g);						mlat.push("G");
	mcyr.push(/д/g);						mlat.push("d");
	mcyr.push(/Д/g);						mlat.push("D");
	mcyr.push(/ж/g);						mlat.push("zh");
	mcyr.push(/Ж/g);						mlat.push("Zh");
	mcyr.push(/ӝ/g);						mlat.push("dzh");
	mcyr.push(/Ӝ/g);						mlat.push("Dzh");
	mcyr.push(/з/g);						mlat.push("z");
	mcyr.push(/З/g);						mlat.push("Z");
	mcyr.push(/ӟ/g);						mlat.push("dź");
	mcyr.push(/Ӟ/g);						mlat.push("Dź");
	mcyr.push(/й/g);						mlat.push("j");
	mcyr.push(/Й/g);						mlat.push("J");
	mcyr.push(/к/g);						mlat.push("k");
	mcyr.push(/К/g);						mlat.push("K");
	mcyr.push(/л/g);						mlat.push("l");
	mcyr.push(/Л/g);						mlat.push("L");
	mcyr.push(/м/g);						mlat.push("m");
	mcyr.push(/М/g);						mlat.push("M");
	mcyr.push(/н/g);						mlat.push("n");
	mcyr.push(/Н/g);						mlat.push("N");
	mcyr.push(/п/g);						mlat.push("p");
	mcyr.push(/П/g);						mlat.push("P");
	mcyr.push(/р/g);						mlat.push("r");
	mcyr.push(/Р/g);						mlat.push("R");
	mcyr.push(/с/g);						mlat.push("s");
	mcyr.push(/С/g);						mlat.push("S");
	mcyr.push(/т/g);						mlat.push("t");
	mcyr.push(/Т/g);						mlat.push("T");
	mcyr.push(/ф/g);						mlat.push("f");
	mcyr.push(/Ф/g);						mlat.push("F");
	mcyr.push(/х/g);						mlat.push("x");
	mcyr.push(/Х/g);						mlat.push("X");
	mcyr.push(/ц/g);						mlat.push("ts");
	mcyr.push(/Ц/g);						mlat.push("Ts");
	mcyr.push(/ч/g);						mlat.push("ch");
	mcyr.push(/Ч/g);						mlat.push("Ch");
	mcyr.push(/ӵ/g);						mlat.push("c");
	mcyr.push(/Ӵ/g);						mlat.push("C");
	mcyr.push(/ш/g);						mlat.push("sh");
	mcyr.push(/Ш/g);						mlat.push("Sh");
	mcyr.push(/щ/g);						mlat.push("shch");
	mcyr.push(/Щ/g);						mlat.push("Shch");
	mcyr.push(/[Ьь]/g);					 mlat.push("ʼ");
	mcyr.push(/([ŚśŹź])ʼ/g);				mlat.push("$1");
	mcyr.push(/[Ъъ]/g);					 mlat.push("");

	// Далее запускается сам процесс замены символов: двигаемся по колонкам сверху вниз, последовательно
	// применяя одно правило за другим
	
	for (var i = 0; i < mcyr.length; i++)
		text = text.replace(mcyr[i], mlat[i]);
		
	return text;
}

// Ещё один вариант латинизации, используются 6 букв с диакритикой - ö, ś, ź, š, ž, č.

function latinisation_udm2(text)
{
	var mcyr = new Array();
	var mlat = new Array();
	
	mcyr.push(/с([ЕеЁёИиЬьЮюЯя])/g);			mlat.push("ś$1");
	mcyr.push(/С([ЕеЁёИиЬьЮюЯя])/g);			mlat.push("Ś$1");
	mcyr.push(/з([ЕеЁёИиЬьЮюЯя])/g);			mlat.push("ź$1");
	mcyr.push(/З([ЕеЁёИиЬьЮюЯя])/g);			mlat.push("Ź$1");
	mcyr.push(/([ДдЛлНнТтФфХх])е/g);			mlat.push("$1ie");
	mcyr.push(/([eАаЕеЁёИиӤӥОоӦӧУуЪъЫыЬьЭэЮюЯя,;—"'>\:\.\?\!\-\(\)\s])е/g);	mlat.push("$1je");
	mcyr.push(/[еэ]/g);						mlat.push("e");
	mcyr.push(/([ДдЛлНнТтФфХх])Е/g);			mlat.push("$1IE");
	mcyr.push(/([EeАаЕЁёИиӤӥОоӦӧУуЪъЫыЬьЭЮюЯя,;—"'>\:\.\?\!\-\(\)\s])Е/g);	 mlat.push("$1Je");
	mcyr.push(/[ЕЭ]/g);						mlat.push("E");
	mcyr.push(/([БбВвГгДдКкЛлМмНнПпРрТтФфХх])ё/g);	  mlat.push("$1ʼo");
	mcyr.push(/([EeoАаЁёИиӤӥОоӦӧУуЪъЫыЬьЮюЯя,;—"'>\:\.\?\!\-\(\)\s])ё/g);	  mlat.push("$1jo");
	mcyr.push(/[ёо]/g);						mlat.push("o");
	mcyr.push(/([БбВвГгДдКкЛлМмНнПпРрТтФфХх])Ё/g);	  mlat.push("$1ʼO");
	mcyr.push(/([EeOoАаЁИиӤӥОӦӧУуЪъЫыЬьЮюЯя,;—"'>\:\.\?\!\-\(\)\s])Ё/g);	   mlat.push("$1Jo");
	mcyr.push(/[ЁО]/g);						mlat.push("O");
	mcyr.push(/([БбВвГгДдКкЛлМмНнПпРрТтФфХх])ю/g);	  mlat.push("$1iu");
	mcyr.push(/([EeOouАаИиӤӥӦӧУуЪъЫыЬьЮюЯя,;—"'>\:\.\?\!\-\(\)\s])ю/g);	    mlat.push("$1ju");
	mcyr.push(/[ую]/g);						mlat.push("u");
	mcyr.push(/([БбВвГгДдКкЛлМмНнПпРрТтФфХх])Ю/g);	  mlat.push("$1IU");
	mcyr.push(/([EeOoUuАаИиӤӥӦӧУЪъЫыЬьЮЯя,;—"'>\:\.\?\!\-\(\)\s])Ю/g);		mlat.push("$1Ju");
	mcyr.push(/[УЮ]/g);						mlat.push("U");
	mcyr.push(/([БбВвГгДдКкЛлМмНнПпРрТтФфХх])я/g);	  mlat.push("$1ia");
	mcyr.push(/([aEeOoUuАаИиӤӥӦӧЪъЫыЬьЯя,;—"'>\:\.\?\!\-\(\)\s])я/g);		 mlat.push("$1ja");
	mcyr.push(/[ая]/g);						mlat.push("a");
	mcyr.push(/([БбВвГгДдКкЛлМмНнПпРрТтФфХх])Я/g);	  mlat.push("$1IA");
	mcyr.push(/([AaEeOoUuАИиӤӥӦӧЪъЫыЬьЯ,;—"'>\:\.\?\!\-\(\)\s])Я/g);		  mlat.push("$1Ja");
	mcyr.push(/[АЯ]/g);					  mlat.push("A");	
//	mcyr.push(/([ДдЛлНнТт])и/g);			 mlat.push("$1ii");
//	mcyr.push(/([ДдЛлНнТт])И/g);			 mlat.push("$1II");
	mcyr.push(/([Цц])и/g);				   mlat.push("$1y");
	mcyr.push(/([Цц])И/g);				   mlat.push("$1Y");
	mcyr.push(/[иӥ]/g);					 mlat.push("i");
	mcyr.push(/[ИӤ]/g);					 mlat.push("I");
	mcyr.push(/ӧ/g);						mlat.push("ö");
	mcyr.push(/Ӧ/g);						mlat.push("Ö");
	mcyr.push(/ы/g);						mlat.push("y");
	mcyr.push(/Ы/g);						mlat.push("Y");
	mcyr.push(/б/g);						mlat.push("b");
	mcyr.push(/Б/g);						mlat.push("B");
	mcyr.push(/в/g);						mlat.push("v");
	mcyr.push(/В/g);						mlat.push("V");
	mcyr.push(/г/g);						mlat.push("g");
	mcyr.push(/Г/g);						mlat.push("G");
	mcyr.push(/д/g);						mlat.push("d");
	mcyr.push(/Д/g);						mlat.push("D");
	mcyr.push(/ж/g);						mlat.push("ž");
	mcyr.push(/Ж/g);						mlat.push("Ž");
	mcyr.push(/ӝ/g);						mlat.push("dž");
	mcyr.push(/Ӝ/g);						mlat.push("Dž");
	mcyr.push(/з/g);						mlat.push("z");
	mcyr.push(/З/g);						mlat.push("Z");
	mcyr.push(/ӟ/g);						mlat.push("dź");
	mcyr.push(/Ӟ/g);						mlat.push("Dź");
	mcyr.push(/й/g);						mlat.push("j");
	mcyr.push(/Й/g);						mlat.push("J");
	mcyr.push(/к/g);						mlat.push("k");
	mcyr.push(/К/g);						mlat.push("K");
	mcyr.push(/л/g);						mlat.push("l");
	mcyr.push(/Л/g);						mlat.push("L");
	mcyr.push(/м/g);						mlat.push("m");
	mcyr.push(/М/g);						mlat.push("M");
	mcyr.push(/н/g);						mlat.push("n");
	mcyr.push(/Н/g);						mlat.push("N");
	mcyr.push(/п/g);						mlat.push("p");
	mcyr.push(/П/g);						mlat.push("P");
	mcyr.push(/р/g);						mlat.push("r");
	mcyr.push(/Р/g);						mlat.push("R");
	mcyr.push(/с/g);						mlat.push("s");
	mcyr.push(/С/g);						mlat.push("S");
	mcyr.push(/т/g);						mlat.push("t");
	mcyr.push(/Т/g);						mlat.push("T");
	mcyr.push(/ф/g);						mlat.push("f");
	mcyr.push(/Ф/g);						mlat.push("F");
	mcyr.push(/х/g);						mlat.push("h");
	mcyr.push(/Х/g);						mlat.push("H");
	mcyr.push(/ц/g);						mlat.push("ts");
	mcyr.push(/Ц/g);						mlat.push("Ts");
	mcyr.push(/ч/g);						mlat.push("č");
	mcyr.push(/Ч/g);						mlat.push("Č");
	mcyr.push(/ӵ/g);						mlat.push("c");
	mcyr.push(/Ӵ/g);						mlat.push("C");
	mcyr.push(/ш/g);						mlat.push("š");
	mcyr.push(/Ш/g);						mlat.push("Š");
	mcyr.push(/щ/g);						mlat.push("šč");
	mcyr.push(/Щ/g);						mlat.push("Šč");
	mcyr.push(/[Ьь]/g);					 mlat.push("ʼ");
	mcyr.push(/([ŚśŹź])ʼ/g);				mlat.push("$1");
	mcyr.push(/[Ъъ]/g);					 mlat.push("");

	for (var i = 0; i < mcyr.length; i++)
		text = text.replace(mcyr[i], mlat[i]);
		
	return text;
}

// Следующая функция запускается при нажатии на кнопку латинизации. Её задача проста: взять текст с
// вики-страницы, передать его на обработку функции latinisation_udm и вывести результат на страницу

function LatinizeIt(variant)
{
	var str;
	if (variant == 1)
		str = latinisation_udm1( $( '#content' ).html() );
	else
		str = latinisation_udm2( $( '#content' ).html() );
	
	$( '#content' ).html(str);	
}

// Следующая функция добавляет кнопку латинизации на панель инструментов вверху страницы

function AddLatinisationButton()
{
	mw.util.addPortletLink('p-variants', 'javascript:LatinizeIt(1);', 'Латинкаен учкон (1-тӥ вариант)', 'ca-varlang-0');
	mw.util.addPortletLink('p-variants', 'javascript:LatinizeIt(2);', 'Латинкаен учкон (2-тӥ вариант)', 'ca-varlang-1');
}

if (mw.config.get('wgAction') == "view" && mw.config.get('wgNamespaceNumber') >= 0)
	mw.hook( 'wikipage.content' ).add( AddLatinisationButton );