Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name lat
- // @namespace lat
- // @description латинизация страницы
- // @include *
- // @version 0.1
- // @grant none
- // ==/UserScript==
- setTimeout(function(){
- function latinisation(str) {
- // popytka vosstanovitj ё tam, gde prosto е
- str = str.replace(/( |^)(е|Е)ще/g, "$1$2щё");
- str = str.replace(/( |^)(е|Е)е/g, "$1$2ё");
- str = str.replace(/( |^)(в|В)ре(т|шь)/g, "$1$2рё$3");
- str = str.replace(/( |^)(в|В)се (это|же|время|поймет|будет|объяснится|больше|более|самое)/g, "$1$2сё $3");
- // -ca vmesto -tsya/-tjsya
- str = str.replace(/(([ёйцукенгшщзхъфывапролджэячсмитьбюЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ])ться|тся)/g, "$2ца");
- str = str.replace(/(([ёйцукенгшщзхъфывапролджэячсмитьбюЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ])ТЬСЯ|ТСЯ)/g, "$2ЦА");
- // ne vzletelo
- // // zhi/shi/ci pishi s y
- // str = str.replace(/(ж|ш|ц)и/g, "$1ы");
- // str = str.replace(/(Ж|Ш|Ц)и/g, "$1ы");
- // str = str.replace(/(Ж|Ш|Ц)И/g, "$1Ы");
- str = str.replace(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])(ь|Ь)([еЕёЁиИюЮяЯ])/g, function(a) {
- a = a.replace(/ь/g, "j");
- a = a.replace(/Ь/g, "J");
- a = a.replace(/е/g, "e");
- a = a.replace(/Е/g, "E");
- a = a.replace(/ё/g, "o");
- a = a.replace(/Ё/g, "O");
- a = a.replace(/и/g, "i");
- a = a.replace(/И/g, "I");
- a = a.replace(/ю/g, "u");
- a = a.replace(/Ю/g, "U");
- a = a.replace(/я/g, "a");
- a = a.replace(/Я/g, "A");
- a = a.replace(/е/g, "e");
- a = a.replace(/Е/g, "E");
- return a;
- });
- str = str.replace(/([бвгдзклмнпрстфхцБВГДЗКЛМНПРСТФХЦ])ь/g, "$1j");
- str = str.replace(/([бвгдзклмнпрстфхцБВГДЗКЛМНПРСТФХЦ])Ь/g, "$1J");
- str = str.replace(/([жчшщЖЧШЩ])ь/g, "$1");
- str = str.replace(/([жчшщЖЧШЩ])Ь/g, "$1");
- str = str.replace(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])е/g, "$1e");
- str = str.replace(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])Е/g, "$1E");
- // str = str.replace(/([бвгдзклмнпрстфхцБВГДЗКЛМНПРСТФХЦ])е/g, "$1ye"); // popytka oboznachitj smyagchenije
- // str = str.replace(/([бвгдзклмнпрстфхцБВГДЗКЛМНПРСТФХЦ])Е/g, "$1Ye"); // pered "е". ne vzletelo
- // str = str.replace(/([жчшщЖЧШЩ])е/g, "$1e");
- // str = str.replace(/([жчшщЖЧШЩ])Е/g, "$1e");
- str = str.replace(/е/g, "je");
- str = str.replace(/Е/g, "Je");
- str = str.replace(/([бвгдзклмнпрстфхцБВГДЗКЛМНПРСТФХЦ])ё/g, "$1yo");
- str = str.replace(/([бвгдзклмнпрстфхцБВГДЗКЛМНПРСТФХЦ])Ё/g, "$1Yo");
- str = str.replace(/([жчшщЖЧШЩ])ё/g, "$1o");
- str = str.replace(/([жчшщЖЧШЩ])Ё/g, "$1o");
- str = str.replace(/ё/g, "jo");
- str = str.replace(/Ё/g, "Jo");
- str = str.replace(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])ю/g, "$1yu");
- str = str.replace(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])Ю/g, "$1Yu");
- str = str.replace(/ю/g, "ju");
- str = str.replace(/Ю/g, "Ju");
- str = str.replace(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])я/g, "$1ya");
- str = str.replace(/([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ])Я/g, "$1Ya");
- str = str.replace(/я/g, "ja");
- str = str.replace(/Я/g, "Ja");
- str = str.replace(/щ/g, "sch");
- str = str.replace(/Щ/g, "Sch");
- str = str.replace(/зх|Зх|ЗХ|зХ|цх|Цх|ЦХ|цХ|сх|Сх|СХ|сХ|ыо|ЫО|ыО|Ыо|ыу|Ыу|ыУ|ЫУ|ыа|ЫА|ыА|Ыа/g, function(a) {
- return a[0]+"'"+a[1];
- });
- str = str.replace(/[ъЪ]/g, "");
- var symbolsFrom, symbolsTo, re;
- symbolsFrom = "абвгдезийклмнопрстуфхцыьэАБВГДЕЗИЙКЛМНОПРСТУФХЦЫЬЭ";
- symbolsTo = "abvgdezijklmnoprstufhcyjeABVGDEZIJKLMNOPRSTUFHCYJE";
- for (var i = 0; i < symbolsFrom.length; i++) {
- re = new RegExp(symbolsFrom[i], "g");
- str = str.replace(re, symbolsTo[i]);
- };
- symbolsFrom = ["ж", "Ж", "ч", "Ч", "ш", "Ш"];
- symbolsTo = ["zh","Zh","ch","Ch","sh","Sh"];
- for (var i = 0; i < symbolsFrom.length; i++) {
- re = new RegExp(symbolsFrom[i], "g");
- str = str.replace(re, symbolsTo[i]);
- };
- // fiksim KAPS
- str = str.replace(/([ABVGDEZIJKLMNOPRSTUFHCY])(Sch)/g, "$1SCH");
- str = str.replace(/(Sch)([ABVGDEZIJKLMNOPRSTUFHCY])/g, "SCH$2");
- str = str.replace(/([ABVGDEZIJKLMNOPRSTUFHCY])(Z|C|S)h/g, "$1$2H");
- str = str.replace(/(Z|C|S)h([ABVGDEZIJKLMNOPRSTUFHCY])/g, "$1H$2");
- str = str.replace(/([ABVGDEZIJKLMNOPRSTUFHCY])(Y|J)o/g, "$1$2O");
- str = str.replace(/(Y|J)o([ABVGDEZIJKLMNOPRSTUFHCY])/g, "$1O$2");
- str = str.replace(/([ABVGDEZIJKLMNOPRSTUFHCY])(Y|J)u/g, "$1$2U");
- str = str.replace(/(Y|J)u([ABVGDEZIJKLMNOPRSTUFHCY])/g, "$1U$2");
- str = str.replace(/([ABVGDEZIJKLMNOPRSTUFHCY])(Y|J)a/g, "$1$2A");
- str = str.replace(/(Y|J)a([ABVGDEZIJKLMNOPRSTUFHCY])/g, "$1A$2");
- str = str.replace(/([ABVGDEZIJKLMNOPRSTUFHCY])(Y|J)e/g, "$1$2E");
- str = str.replace(/(Y|J)e([ABVGDEZIJKLMNOPRSTUFHCY])/g, "$1E$2");
- str = str.replace(/( |^)SSHA/g, "$1SShA");
- return str;
- };
- // rekursivnyj obhod elementov
- function getElem(node) {
- for (var childItem in node.childNodes) {
- if (node.childNodes[childItem].nodeType === 1) {
- (function(){
- var newItem = node.childNodes[childItem];
- // asinhronno vyzyvajem
- setTimeout(function(){
- getElem(newItem);
- },0);
- })();
- // zamena v knopkah
- if ((node.childNodes[childItem].type === "button")||(node.childNodes[childItem].type === "submit")) {
- node.childNodes[childItem].value = latinisation(node.childNodes[childItem].value);
- }
- // zamena v title
- if (node.childNodes[childItem].title)
- if ((node.childNodes[childItem].title.search(
- /[ёйцукенгшщзхъфывапролджэячсмитьбюЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ]/) !== -1)) {
- node.childNodes[childItem].title = latinisation(node.childNodes[childItem].title);
- }
- }
- // zamena v tekstovyh polyah
- if (node.childNodes[childItem].nodeType === 3) {
- if (node.childNodes[childItem].nodeValue.search(
- /[ёйцукенгшщзхъфывапролджэячсмитьбюЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ]/) !== -1) {
- node.childNodes[childItem].nodeValue =
- latinisation(node.childNodes[childItem].nodeValue);
- }
- }
- }
- }
- // dobavlyajem knopku sprava vnizu
- var latButton = document.createElement("div");
- document.body.appendChild(latButton);
- latButton.innerHTML = "lat";
- latButton.style["position"] = "fixed";
- latButton.style["bottom"] = "3px";
- latButton.style["right"] = "3px";
- latButton.style["border"] = "1px solid #999";
- latButton.style["padding"] = "3px";
- latButton.style["background"] = "#fff";
- latButton.style["color"] = "#000";
- latButton.style["z-index"] = "9999999999";
- latButton.style["cursor"] = "pointer";
- latButton.style["opacity"] = "0.3";
- latButton.style["font-size"] = "10px";
- latButton.style["font-family"] = "sans-serif";
- latButton.onclick = function () {
- document.title = latinisation(document.title);
- getElem(document.body);
- }
- // jesli na stranice jestj kirillica - konvertirujem
- if (document.body.innerHTML.search(
- /[ёйцукенгшщзхъфывапролджэячсмитьбюЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ]/) !== -1) {
- // document.title = latinisation(document.title);
- getElem(document);
- }
- },10);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement