单词词典及其在JavaScript中的翻译

时间:2017-07-19 05:15:28

标签: javascript jquery node.js dictionary

考虑以下简单的HTML代码:

<input id="dict_field" type="text"/>
<button id="translate_btn" type="button" class="btn">translate</button>

用户输入内容并单击按钮会触发返回翻译的功能。

和JQuery代码:

$(document).ready(function(){

  $('#translate_btn').click(function(){
    var word = $('#dict_field').val();
    var translation = "";
    translation = translate(word (, dictionary?));
    // For simplicity for now just display the result in the same input field
    $('#dict_field').val(translation)
  });

});

// pseudo code. How to implement this and build the dictionary I need?

function translate(word (, dictionary?)){
  if word in dictionary.keys() -> return dictionary[word]
  else return "no such word in dict"
}

鉴于以下内容:

  1. 翻译只需要一种方式(价值的关键)。
  2. 字典是自定义的(意思是我必须构建它,我不能指望像Google这样的外部API)。
  3. 我估计字典键的大小可能是数千的数量级,比如1到5000之间。
  4. 不确定是否相关但最终我希望翻译实时发生(一旦用户完成输入而不需要点击按钮)。现在这是次要的。
  5. 建立地图/字典{key:value}来实现翻译功能/ API,有什么好方法,客观地#34;可以考虑任何细节,例如速度,可扩展性,成本等,同时考虑我的上述要求。

    我对这类事情的经验不多,但我有一些想法,例如:

    1. 使用包含字典的非常长的js文件(可能不是一个好主意)
    2. 将所有内容存储在文本文件中并从那里阅读
    3. 查看一些数据库(但是不会有些过分?)
    4. 欣赏有价值的建议。谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

将其存储为文本文件,例如CSV。

foo,bar
baz,quux

然后用ajax获取它,然后拆分它。您可以对此进行优化,但不一定非必要。

var dict = text
  .split('\n')
  .map(function(x) { return x.split(',') })
  .reduce(function(acc, pair) { acc[pair[0]] = pair[1]; return acc }, {});

然后dict['bar'] === 'quux'

答案 1 :(得分:0)

您可以使用对象{"key":"value"}或数组[["key", "value"]]数组或对象数组或数组[{"key":"value0"}, {"key":"value1"}];后两者允许同一个词的多个定义,以处理模棱两可的语言;以及在数组或对象中包含与单词或术语相关的元数据的能力,例如audio representation of the spoken word