21 / 24 / 1
Регистрация: 23.04.2012
Сообщений: 628

Как сделать переводчик на JavaScript?

13.11.2019, 14:56. Показов 10450. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Обратилась знакомая за помощью, ей нужно помочь сделать простейший переводчик на JS из текстовой БД, где есть слово на одном языке, соответствует слову на другом, например:

JavaScript
1
2
3
4
5
6
7
8
9
10
var slovar=[ 
 
['Привет','Hello'],
['Обезьяна','monkey'],
['Апельсин','orange'],
['Тарелка','plate'],
['Книга','book'],
['мышь','mouse']
 
];
Но сложность в том, что переводчик должен уметь переводить не только по жестким соответствиям слов но и по их корням - другими словами по маскам, то есть без учета окончаний и суффиксов.

В соседней теме есть нерабочий код, но он переводит в любом случае только по жесткому соответствию слов. Есть у кого-нить примеры?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.11.2019, 14:56
Ответы с готовыми решениями:

Нужен переводчик на javascript
Ребята, если кто знает как, напишите плз вот такой переводчик на джава. Есть например два textarea: одно для ввода текста, другое для...

Как сделать транслит Javascript
Чтоб слово в тексте автоматически при воде менялось, чтоб при нажатии на клавишу в text area, сверху над text area было показано какой то...

Как сделать запрос к transmission на javascript?
Коллеги, никогда не программировал на javascript и ajax. Сейчас изучаю эти технологии. Есть задача послать запрос на сервер torrent...

5
380 / 230 / 115
Регистрация: 22.11.2016
Сообщений: 379
13.11.2019, 17:03
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<!DOCTYPE html>
<html>
<head>
    <title>!!!!!!!!!!</title>
</head>
<body>
    с [русского] на [английский] 
    или
    с [английского] на [русский]
    <br><input id="text_translate" type="text" name="name">
    <button id="button_translate">Translate</button>
    <p id="result_translate">Here</p>
    
    <script type="text/javascript">
        "use strict";
 
        let slovar = [
        [['привет'], ['hi', 'hello', 'hallo']],
        [['обезьяна', 'обезьянка'], 'monkey'],
        [['апельсин', 'апельсинка'], 'orange'],
        [['книга', 'книжка'], 'book'],
        [['работать', 'трудиться', 'действовать', 'заниматься', 'потрудиться', 'стремиться'], 'work']
        ];
 
        
        let btn = document.getElementById("button_translate");
        
 
        btn.addEventListener("click", () => {
            let text = document.getElementById("text_translate").value.toLowerCase();
            let result = document.getElementById("result_translate");
            if(!text) return false;
            
            for(let i = 0; i < slovar.length; i++) {
                if (slovar[i][0].includes(text)) { 
                    result.innerHTML = slovar[i][1]; 
                    return false;
                } 
                else if (slovar[i][1].includes(text)) { 
                    result.innerHTML = slovar[i][0]; 
                    return false;
                }   
            }
            // slovar.forEach(e => {
            //     if (e[0].includes(text)) { result.innerHTML = e[1]; } 
            //     else if (e[1].includes(text)) { result.innerHTML = e[0]; }
            // });
        });
    </script>                        
</body>
</html>
1
21 / 24 / 1
Регистрация: 23.04.2012
Сообщений: 628
15.11.2019, 20:19  [ТС]
А если использовать для этого не массив, а текстовый файл с разделителем?
0
380 / 230 / 115
Регистрация: 22.11.2016
Сообщений: 379
15.11.2019, 22:05
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
"use strict";
 
        // let slovar = [
        // [['привет'], ['hi', 'hello', 'hallo']],
        // [['обезьяна', 'обезьянка'], 'monkey'],
        // [['апельсин', 'апельсинка'], 'orange'],
        // [['книга', 'книжка'], 'book'],
        // [['работать', 'трудиться', 'действовать', 'заниматься', 'потрудиться', 'стремиться'], 'work']
        // ];
 
       
       
        function genArraySlovar(text) {
            text = text.trim().split("\n").map(el => el.trim());
            text.forEach((el, i) => {
                text[i] = el.split("-");
            });
            return text;
        }
 
        // Разделитель переход на новую строку
        // Разделитель на ru en - "-"
        let text = `
                привет-hi, hello, hallo     
                обезьяна, обезьянка-monkey
                апельсин, апельсинка-orange
                книга, книжка-book
                работать, трудиться, действовать, заниматься, потрудиться, стремиться-work
        `;
 
        let slovar = genArraySlovar(text);
 
        let btn = document.getElementById("button_translate");
        btn.addEventListener("click", () => {
            let text = document.getElementById("text_translate").value.toLowerCase();
            let result = document.getElementById("result_translate");
            if(!text) return false;
            
            for(let i = 0; i < slovar.length; i++) {
                if (slovar[i][0].includes(text)) { 
                    result.innerHTML = slovar[i][1]; 
                    return false;
                } 
                else if (slovar[i][1].includes(text)) { 
                    result.innerHTML = slovar[i][0]; 
                    return false;
                }   
            }
            // slovar.forEach(e => {
            //     if (e[0].includes(text)) { result.innerHTML = e[1]; } 
            //     else if (e[1].includes(text)) { result.innerHTML = e[0]; }
            // });
        });
1
21 / 24 / 1
Регистрация: 23.04.2012
Сообщений: 628
16.11.2019, 08:35  [ТС]
fixeri, честно говоря не осилил))

Допустим есть у меня файл db.txt. В нем текст с разделителем, возьмем для примера шуточный язык freelhara (думаю автор не обидится):

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
         pyq       ||     able
         wuw       ||     about
         owu       ||     account
         sel       ||     acid
         xar       ||     across
         rec       ||     act
         eza       ||     addition
         ywu       ||     adjustment
         fij       ||     advertisement
         vyr       ||     after
         ixi       ||     again
         cos       ||     against
         fyc       ||     agreement
         pez       ||     air
         nal       ||     all
         eva       ||     almost
Как мне использовать данный файл в привязке со скриптом?
0
380 / 230 / 115
Регистрация: 22.11.2016
Сообщений: 379
17.11.2019, 11:34
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function genArraySlovar(text) {
            text = text.trim().split("\n").map(el => el.trim());
            text.forEach((el, i) => {
                text[i] = el.split("||");
            });
            return text;
        }
 
        let request = new XMLHttpRequest();
        request.open('GET', 'slovar.txt', true);
 
        request.onload = function() {
 
            let text = request.responseText;
            let slovar = genArraySlovar(text);
 
            let btn = document.getElementById("button_translate");
            btn.addEventListener("click", () => {
                let text = document.getElementById("text_translate").value.toLowerCase();
                let result = document.getElementById("result_translate");
                if(!text) return false;
                
                for(let i = 0; i < slovar.length; i++) {
                    if (slovar[i][0].includes(text)) { 
                        result.innerHTML = slovar[i][1]; 
                        return false;
                    } 
                    else if (slovar[i][1].includes(text)) { 
                        result.innerHTML = slovar[i][0]; 
                        return false;
                    }   
                }
            });
        };
 
        request.send(null);
slovar.txt
XML
1
2
3
4
5
привет || hi, hello, hallo     
обезьяна, обезьянка || monkey
апельсин, апельсинка || orange
книга, книжка || book
работать, трудиться, действовать, заниматься, потрудиться, стремиться || work
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.11.2019, 11:34
Помогаю со студенческими работами здесь

Javascript. Как сделать кнопку на ajax?
Javascript. Как сделать кнопку на ajax?

как сделать 3D модель объекта на javascript
&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;3D Модели&lt;/title&gt; &lt;script type=&quot;text/javascript&quot; src=&quot;turntable.js&quot;&gt;&lt;/script&gt; &lt;script...

Подскажите как сделать тест на JavaScript!?
Тест типа игры &quot;Кто хочет стать миллионером&quot;? но мне сам принцип нужен, как это все реализовать и немного по другому, должна выводиться...

Калькулятор на Javascript - как его сделать?
Здравствуйте, уважаемые гуру Javascript'a. Помогите, пжлста, с написанием калькулятора на javascript. Я просто не знаю, с какой стороны к...

Как сделать паузу в JavaScript на часть кода?
Например setTimeout(function() { alert(&quot;сообщение 1&quot;); }, 5000); alert(&quot;сообщение 2&quot;); Выводится с начало &quot;сообщение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru