词典词典及其在JavaScript中的翻译
考虑以下简单的HTML代码:
<input id="dict_field" type="text"/> <button id="translate_btn" type="button" class="btn">translate</button>
用户input一些东西,然后点击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" }
鉴于以下情况:
- 翻译只需要一种方法(价值的关键)。
- 字典是定制的(意味着我必须build立它,我不能指望外部的API,如谷歌的)。
- 我估计字典键的大小可能是几千的数量级,比如1到5000。
- 不知道是否相关,但最终我希望翻译实时发生(只要用户完成input,而不需要点击button)。 目前这是次要的。
什么是“客观地”build立地图/字典{key:value}来实现翻译function/ API的好方法? 任何细节都可以考虑,比如速度,可扩展性,成本等,同时考虑到我的上述要求。
我对这种事情一点经验也没有,但是我有一些想法,比如:
- 使用包含字典的非常长的js文件(可能不是个好主意)
- 将所有内容存储在文本文件中,然后从中读取
- 看看一些数据库(但不会是矫枉过正?)
欣赏宝贵的build议。 谢谢你的帮助。
将其存储为文本文件,例如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'
。
你可以使用一个对象{"key":"value"}
或一个数组[["key", "value"]]
array,array [["key", "value"]]
array,array,array,array,array,array, [{"key":"value0"}, {"key":"value1"}]
; 如果后两者允许同一个词的多个定义,则处理模棱两可的语言; 以及包括与数组或对象内的单词或术语有关的元数据的能力,例如口语单词的audio表示 。