如何将英语输入布局转换为波斯语(波斯语)



>假设我们有一个搜索输入字段。 我们的用户有两种键盘布局(En)(Fa):

有时用户忘记更改键盘布局,
因此代替 =>"سلام">
输入 =>"sghl"。

在这种情况下,Google几乎可以检测到问题,并提供适当的结果。

首先,我不知道这个算法叫什么名字。
我在 https://searchengineland.com/how-google-instant-autocomplete-suggestions-work-62592 中搜索并找到了"谷歌即搜即得的自动完成",但这不是我的情况, 检查我的屏幕截图:https://imggmi.com/full/2019/4/12/b411bcbe08dcd1eb02a46487e836a0b2-full.png.html 我写"لخخلمث"而不是"谷歌",但谷歌提供了正确的结果。

第二个也是主要问题,我在 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

我写这篇文章是为了我个人使用。随意根据您的需要修改它(您可以在此处找到它作为要点):

function fixPersian(input) {
var letters = {
'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': 'پ',
',': 'و',
'C': 'ژ',
'H': 'آ',
'A': 'ؤ',
'S': 'ئ',
'G': 'أ',
'L': '«',
'K': '»'
};
var output = '';
for (var i = 0, il = input.length; i < il; i++) {
output += letters[input.charAt(i)] || input.charAt(i);
}
return output;
}

我认为你不需要使用任何库来做到这一点。您可以编写一个简单的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;
}

最新更新