Как преобразовать английскую раскладку в персидский (фарси) - PullRequest
0 голосов
/ 12 апреля 2019

Предположим, у нас есть поле ввода для поиска. а у наших пользователей две раскладки клавиатуры (ан) (фа):

иногда пользователи забывают изменить раскладку клавиатуры,
поэтому вместо => "سلام"
input => "sghl" .

в этом случае Google почти обнаруживает проблему и предлагает правильные результаты.

первый , я не знаю, как называется этот алгоритм.
Я нашел и нашел «Автозаполнение Google Instant» в https://searchengineland.com/how-google-instant-autocomplete-suggestions-work-62592,, но это не мой случай, проверьте мой скриншот: https://imggmi.com/full/2019/4/12/b411bcbe08dcd1eb02a46487e836a0b2-full.png.html Я пишу "لخخلمث" вместо "Google", но Google предлагает правильный результат.

вторая и главная проблема , я нашел "convert-layout" в https://www.npmjs.com/package/convert-layout, это то, что мне нужно. функция 'fromEn ()' изменяет неправильный ввод на правильный,

так как мой проект угловой, я пишу:

declare var require:any;
var fa = require('convert-layout/fa.js');
let correct = fa.fromEn('sghl');  

Я ожидаю получить "سلام", но возвращается "س`شا", и это не правильно.
Я проверил источник в https://github.com/ai/convert-layout/blob/master/fa.json и карта верна:

"s": "س",
"g": "ل",
"h": "ا",
"l": "م",

в чем проблема?

простой редактируемый адрес: https://stackblitz.com/edit/angular-mnnsg9

1 Ответ

0 голосов
/ 12 апреля 2019

Я думаю, вам не нужно использовать какую-либо библиотеку для этого. Вы можете написать простую функцию javascript и передать ей неправильное слово (например, sghl в вашем случае). Эта функция может быть примерно такой:

function correctWord(input) {
   var fa = require('convert-layout/fa.json');
   var result = '';
   var charArray = input.split('');
   for (let ch of charArray) {
      result += fa[ch];
   }
   return result;
}
...