Участник:Ole Førsten/qwerty2.js
Перейти к навигации
Перейти к поиску
Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.
- Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl+F5 или Ctrl+R (⌘+R на Mac)
- Google Chrome: Нажмите Ctrl+Shift+R (⌘+Shift+R на Mac)
- Internet Explorer / Edge: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl+F5
- Opera: Нажмите Ctrl+F5.
//Транслитерация выделенного текста из клавиатуры ЙЦУКЕН в клавиатуру QWERTY.
//Основной код взят из http://ru.wikipedia.org/wiki/Участник:X-romix/translit.js
//Автор: Ole Førsten
var OleFørsten_Qwerty_CantWork = 'Транслит не может работать в вашем браузере.\n\nTranslit cannot work in your browser' // английский текст для тех, кто не видит русские буквы
var OleFørsten_Qwerty_FullText = 'Эта кнопка предназначена для транслитерации текста из клавиатуры ЙЦУКЕН в клавиатуру QWERTY.';
//Добавляет кнопку
function addQwertyButton(){
var toolbar = document.getElementById('toolbar')
var textbox = document.getElementById('wpTextbox1')
if (!textbox || !toolbar) return
var i = document.createElement('img')
i.src = 'http://data.cyclowiki.org/images/d/d5/QWERTY-button2.png'
i.alt = i.title = 'Qwerty'
i.onclick = OleFørsten_Qwerty
i.style.cursor = 'pointer'
toolbar.appendChild(i)
}
//Этот код выполняется в начале.
if (wgAction == 'edit' || wgAction == 'submit'){
addOnloadHook(addQwertyButton)
}
//Функция для оформления таблицы
function OleFørsten_Qwerty(){
//Проверяем, поддерживает ли браузер регулярные выражения (RegExp)
if (('code'.replace(/d/g, 'r') != 'core')
|| (navigator.appName=='Netscape' && navigator.appVersion.substr (0, 1) < 5))
{ alert(OleFørsten_Qwerty_CantWork); return }
var txt, hidden = [], hidIdx = 0, wpTextbox1 = document.editform.wpTextbox1
var winScroll = document.documentElement.scrollTop //remember window scroll
wpTextbox1.focus()
if (typeof wpTextbox1.selectionStart != 'undefined'
&& (navigator.productSub > 20031000 || is_safari)) { //Mozilla/Opera/Safari3
var textScroll = wpTextbox1.scrollTop
var startPos = wpTextbox1.selectionStart
var endPos = wpTextbox1.selectionEnd
txt = wpTextbox1.value.substring(startPos, endPos)
if (txt == '') {alert(OleFørsten_Qwerty_FullText); ShowHelp(); return}
else{
processText()
wpTextbox1.value = wpTextbox1.value.substring(0, startPos) + txt + wpTextbox1.value.substring(endPos)
}
wpTextbox1.selectionStart = startPos
wpTextbox1.selectionEnd = startPos + txt.length
wpTextbox1.scrollTop = textScroll
}else if (document.selection && document.selection.createRange) { //IE
//alert("IE");
var range = document.selection.createRange()
txt = range.text
if (txt == '') {alert(OleFørsten_Qwerty_FullText); ShowHelp(); return}
else{
processText()
range.text = txt
//if (!window.opera) txt = txt.replace(/\r/g,'')
if (range.moveStart) range.moveStart('character', - txt.length)
range.select()
}
}else // Для браузеров, которые не умеют возвращать выделенный фрагмент, выдаем ошибку
{ alert(OleFørsten_Qwerty_CantWork); return }
document.documentElement.scrollTop = winScroll // scroll back, for IE/Opera
//Здесь производим замену в переменной txt - это отразится на выделенном фрагменте текста
function processText(){
//txt = txt.replace(/^\s+|\s+$/g, '') //Обрезаем пробелы слева и справа
//txt = txt.replace(/\n/g, '\n|-\n| ') //Концы строк
//q w e r t y u i o p [ ] a s d f g h j k l ; ' z x c v b n m , . /
txt = txt.replace(/й/g, 'q');
txt = txt.replace(/ц/g, 'w');
txt = txt.replace(/у/g, 'e');
txt = txt.replace(/к/g, 'r');
txt = txt.replace(/е/g, 't');
txt = txt.replace(/н/g, 'y');
txt = txt.replace(/г/g, 'u');
txt = txt.replace(/ш/g, 'i');
txt = txt.replace(/щ/g, 'o');
txt = txt.replace(/з/g, 'p');
txt = txt.replace(/х/g, '[');
txt = txt.replace(/ъ/g, ']');
txt = txt.replace(/Й/g, 'Q');
txt = txt.replace(/Ц/g, 'W');
txt = txt.replace(/У/g, 'E');
txt = txt.replace(/К/g, 'R');
txt = txt.replace(/Е/g, 'T');
txt = txt.replace(/Н/g, 'Y');
txt = txt.replace(/Г/g, 'U');
txt = txt.replace(/Ш/g, 'I');
txt = txt.replace(/Щ/g, 'O');
txt = txt.replace(/З/g, 'P');
txt = txt.replace(/Х/g, '{');
txt = txt.replace(/Ъ/g, '}');
txt = txt.replace(/ф/g, 'a');
txt = txt.replace(/ы/g, 's');
txt = txt.replace(/в/g, 'd');
txt = txt.replace(/а/g, 'f');
txt = txt.replace(/п/g, 'g');
txt = txt.replace(/р/g, 'h');
txt = txt.replace(/о/g, 'j');
txt = txt.replace(/л/g, 'k');
txt = txt.replace(/д/g, 'l');
txt = txt.replace(/ж/g, ';');
txt = txt.replace(/э/g, '’');
txt = txt.replace(/Ф/g, 'A');
txt = txt.replace(/Ы/g, 'S');
txt = txt.replace(/В/g, 'D');
txt = txt.replace(/А/g, 'F');
txt = txt.replace(/П/g, 'G');
txt = txt.replace(/Р/g, 'H');
txt = txt.replace(/О/g, 'J');
txt = txt.replace(/Л/g, 'K');
txt = txt.replace(/Д/g, 'L');
txt = txt.replace(/Ж/g, ':');
txt = txt.replace(/Э/g, '"');
txt = txt.replace(/я/g, 'z');
txt = txt.replace(/ч/g, 'x');
txt = txt.replace(/с/g, 'c');
txt = txt.replace(/м/g, 'v');
txt = txt.replace(/и/g, 'b');
txt = txt.replace(/т/g, 'n');
txt = txt.replace(/ь/g, 'm');
txt = txt.replace(/б/g, ',');
txt = txt.replace(/ю/g, '.');
txt = txt.replace(/Я/g, 'Z');
txt = txt.replace(/Ч/g, 'X');
txt = txt.replace(/С/g, 'C');
txt = txt.replace(/М/g, 'V');
txt = txt.replace(/И/g, 'B');
txt = txt.replace(/Т/g, 'N');
txt = txt.replace(/Ь/g, 'M');
txt = txt.replace(/Б/g, '<');
txt = txt.replace(/Ю/g, '>');
txt = txt.replace(/,/g, '?');
txt = txt.replace(/ё/g, '`');
txt = txt.replace(/Ё/g, '~');
txt = txt.replace(/"/g, '@');
txt = txt.replace(/№/g, '#');
txt = txt.replace(/\;/g, '$;');
txt = txt.replace(/\:/g, '^');
txt = txt.replace(/\?/g, '&');
setWpSummary();
}
function ShowHelp(){
var select, inputId, isEdit, maxChars = 250, useMWPreview
if (wgAction == 'edit' || wgAction == 'submit'){
inputId = 'wpSummary'
}else if (wgCanonicalNamespace == 'Special' && wgCanonicalSpecialPageName == 'Movepage'){
inputId = 'wpReason'
}else if (wgAction == 'protect'){
inputId = 'mwProtect-reason'
}else return
var hlp = document.getElementById("translit_help")
if (hlp) return
var input = document.getElementById(inputId)
if (!input) return
//create counter span
var cnt = document.createElement('span')
cnt.id = 'inputCounter'
cnt.style.marginLeft = '3px'
input.parentNode.insertBefore(cnt, input.nextSibling)
cnt.innerHTML = '<table class="standard" id="translit_help">\
<tr>\
<th>Й<th>Ц<th>У<th>К<th>Е<th>Н<th>Г<th>Ш<th>Щ<th>З<th>Х<th>Ъ<th>Ф<th>Ы<th>В<th>А<th>П<th>Р<th>О<th>Л<th>Д<th>Ж<th>Э<th>Я<th>Ч<th>С<th>М<th>И<th>Т<th>Ь<th>Б<th>Ю<th>,<th>Ё<th>й<th>ц<th>у<th>к<th>е<th>н<th>г<th>ш<th>щ<th>з<th>х<th>ъ<th>ф<th>ы<th>в<th>а<th>п<th>р<th>о<th>л<th>д<th>ж<th>э<th>я<th>ч<th>с<th>м<th>и<th>т<th>ь<th>б<th>ю<th>.<th>ё<th>"<th>№<th>;<th>:<th>?\
</tr>\
<tr>\
<td>Q<td>W<td>E<td>R<td>T<td>Y<td>U<td>I<td>O<td>P<td>{<td>}<td>A<td>S<td>D<td>F<td>G<td>H<td>J<td>K<td>L<td>:<td>"<td>Z<td>X<td>C<td>V<td>B<td>N<td>M<td><<td>><td>?<td>~<td>q<td>w<td>e<td>r<td>t<td>y<td>u<td>i<td>o<td>p<td>[<td>]<td>a<td>s<td>d<td>f<td>g<td>h<td>j<td>k<td>l<td>;<td>\'<td>z<td>x<td>c<td>v<td>b<td>n<td>m<td>,<td>.<td>/<td>`<td>@<td>#<td>$<td>^<td>&\
</tr></table>';
}
function setWpSummary(){
var wpSummary = document.getElementById('wpSummary')
if(wpSummary){
var temp=wpSummary.value;
temp=temp.replace(/\/\*.*?\*\// , ""); //комментарии
temp=temp.replace(/[\s]*/ , ""); //пробелы
if (temp==""){
wpSummary.value=wpSummary.value+" ";
}
}
}
}