var transliterate = (
function() {
var rus = "щ ш ч ц ю я ё ж ъ ы э а б в г д е з и й к л м н о п р с т у ф х ь".split(/ +/g),
eng = "shh sh ch cz yu ya yo zh `` y' e` a b v g d e z i j k l m n o p r s t u f x `".split(/ +/g);
var rus_char = "й ц у к е н г ш щ з х ъ ф ы в а п р о л д ж э я ч с м и т ь б ю".split(/ +/g),
eng_char = "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 , .".split(/ +/g);
return function(text, engToRus, bool, trans = true) {
var x;
for (x = 0; x < rus.length; x++) {
text = text.split(engToRus ? eng[x] : rus[x]).join(engToRus ? rus[x] : eng[x]);
text = text.split(engToRus ? eng[x].toUpperCase() : rus[x].toUpperCase()).join(engToRus ? rus[x].toUpperCase() : eng[x].toUpperCase());
if (bool) text = text.split(trans ? eng_char[x] : rus_char[x]).join(trans ? rus_char[x] : eng_char[x]);
}
return text;
}
}
)();
console.log(transliterate("ьщдщвсщм", true, true, false));
console.log(transliterate("кщпщ", true, true, false));
Данный код неправильно переводит ьщдщвсщм
, результат должен быть molodcov
, а на деле получается mололcоv
. Кто подскажет, где я допустил ошибку?
Решил проблему тем, что доработал условие:
if (bool) {
text = text.split(trans ? eng_char[x] : rus_char[x]).join(trans ? rus_char[x] : eng_char[x]);
} else {
text = text.split(engToRus ? eng[x] : rus[x]).join(engToRus ? rus[x] : eng[x]);
text = text.split(engToRus ? eng[x].toUpperCase() : rus[x].toUpperCase()).join(engToRus ? rus[x].toUpperCase() : eng[x].toUpperCase());
}
var transliterate = (
function() {
var rus = "щ ш ч ц ю я ё ж ъ ы э а б в г д е з и й к л м н о п р с т у ф х ь".split(/ +/g),
eng = "shh sh ch cz yu ya yo zh `` y' e` a b v g d e z i j k l m n o p r s t u f x `".split(/ +/g);
var rus_char = "й ц у к е н г ш щ з х ъ ф ы в а п р о л д ж э я ч с м и т ь б ю".split(/ +/g),
eng_char = "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 , .".split(/ +/g);
return function(text, engToRus, bool, trans = true) {
var x;
for (x = 0; x < rus.length; x++) {
if (bool) {
text = text.split(trans ? eng_char[x] : rus_char[x]).join(trans ? rus_char[x] : eng_char[x]);
} else {
text = text.split(engToRus ? eng[x] : rus[x]).join(engToRus ? rus[x] : eng[x]);
text = text.split(engToRus ? eng[x].toUpperCase() : rus[x].toUpperCase()).join(engToRus ? rus[x].toUpperCase() : eng[x].toUpperCase());
}
}
return text;
}
}
)();
console.log(transliterate("ьщдщвсщм", true, true, false));
console.log(transliterate("кщпщ", true, true, false));
Теперь работает как надо.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Суть такая: я выбираю первый select и в зависимости от значениея value (из первого селекта), у меня строится второй selectт
Возможно ли в js узнать существование значения отличного от null? В голову приходит простое решение:
Делаю бесконечный скрол, но не нашел ничего на pure jsПроблема возникает при отправке запроса к admin-ajax