【问题标题】:Dictionary of words and their translation in JavaScript [closed]单词字典及其在 JavaScript 中的翻译 [关闭]
【发布时间】:2017-07-19 05:15:27
【问题描述】:

考虑以下简单的 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. 字典是定制的(这意味着我必须构建它,我不能指望外部 API,例如 Google 的)。
  3. 我估计字典键的大小可能在数千个数量级,例如在 1 到 5000 之间。
  4. 不确定是否相关,但最终我希望翻译实时进行(只要用户完成输入而无需单击按钮)。目前这是次要的。

什么是“客观地”构建地图/字典 {key:value} 以实现翻译功能/API 的好方法?可以考虑任何细节,例如速度、可扩展性、成本等,同时考虑我的上述要求。

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

  1. 使用包含字典的很长的 js 文件(可能不是一个好主意)
  2. 将所有内容存储在文本文件中并从那里读取
  3. 查看一些数据库(但这会不会有点矫枉过正?)

感谢宝贵的建议。感谢您的帮助。

【问题讨论】:

  • 字典只包含单词?您是否打算在翻译的同时添加更多描述、帮助材料、链接等?
  • 好点。现在我认为单词应该没问题(例如只是一个 translate('foo') = 'bar')。显然,越灵活越好,我想我将来是否应该决定添加更多内容。
  • 只需使用适合您的任何结构的 JSON 文件。
  • 经过@TalhaAwan 的善意编辑,这个问题是否仍然过于宽泛?
  • @Tommy,我不知道编辑后如何以及何时删除保留。我认为这个问题的答案仍然是基于意见的,但这确实是一个好问题。我想回答这个问题,但我现在不能。也许尝试另一个有针对性的问题。如果你这样做,请在此处标记我。谢谢

标签: javascript jquery node.js dictionary


【解决方案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'

【讨论】:

  • 再次感谢您的回答。所以我可以正确获取 dict,但 dict[key] 返回未定义。任何想法为什么?
  • 知道了!我认为应该是 acc[pair[0]] = pair[1]。
  • @Tommy 是的,我的错误,已更新。
  • 不用担心,这很好,它实际上迫使我了解我在做什么。 :) 有一件事,请原谅这个愚蠢的问题,但“acc”代表什么?
  • @Tommy 累加器
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-24
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多