用过 Google 字典的朋友应该都知道,Google 字典的功能相当强大,而且其单词发音相当的纯正,什么金山什么有道,在 Google 面前都是浮云,浮云。但是和 Google 的其他项目不同,字典的 API 却迟迟未能公布,早在 08 年,就有人提向 google 提出希望开发字典 API 的请求,但直到今天都没有得到任何回应。不过好在有强大的网友找到了这个 API,尽管不是官方公布的,但是使用起来基本上没有什么问题。
http://www.google.com/dictionary/json?callback=dict_api.callbacks.id100&q=test&sl=en&tl=en&restrict=pr%2Cde&client=te
从上面这个地址就可以获取到"test"的相关解释。
参数 q 即使查询的内容,sl 为源语言, tl 为目标语言。下面是 Google 所支持的语言的标识:
var google.language.Languages = { \'AFRIKAANS\' : \'af\', \'ALBANIAN\' : \'sq\', \'AMHARIC\' : \'am\', \'ARABIC\' : \'ar\', \'ARMENIAN\' : \'hy\', \'AZERBAIJANI\' : \'az\', \'BASQUE\' : \'eu\', \'BELARUSIAN\' : \'be\', \'BENGALI\' : \'bn\', \'BIHARI\' : \'bh\', \'BULGARIAN\' : \'bg\', \'BURMESE\' : \'my\', \'CATALAN\' : \'ca\', \'CHEROKEE\' : \'chr\', \'CHINESE\' : \'zh\', \'CHINESE_SIMPLIFIED\' : \'zh-CN\', \'CHINESE_TRADITIONAL\' : \'zh-TW\', \'CROATIAN\' : \'hr\', \'CZECH\' : \'cs\', \'DANISH\' : \'da\', \'DHIVEHI\' : \'dv\', \'DUTCH\': \'nl\', \'ENGLISH\' : \'en\', \'ESPERANTO\' : \'eo\', \'ESTONIAN\' : \'et\', \'FILIPINO\' : \'tl\', \'FINNISH\' : \'fi\', \'FRENCH\' : \'fr\', \'GALICIAN\' : \'gl\', \'GEORGIAN\' : \'ka\', \'GERMAN\' : \'de\', \'GREEK\' : \'el\', \'GUARANI\' : \'gn\', \'GUJARATI\' : \'gu\', \'HEBREW\' : \'iw\', \'HINDI\' : \'hi\', \'HUNGARIAN\' : \'hu\', \'ICELANDIC\' : \'is\', \'INDONESIAN\' : \'id\', \'INUKTITUT\' : \'iu\', \'IRISH\' : \'ga\', \'ITALIAN\' : \'it\', \'JAPANESE\' : \'ja\', \'KANNADA\' : \'kn\', \'KAZAKH\' : \'kk\', \'KHMER\' : \'km\', \'KOREAN\' : \'ko\', \'KURDISH\': \'ku\', \'KYRGYZ\': \'ky\', \'LAOTHIAN\': \'lo\', \'LATVIAN\' : \'lv\', \'LITHUANIAN\' : \'lt\', \'MACEDONIAN\' : \'mk\', \'MALAY\' : \'ms\', \'MALAYALAM\' : \'ml\', \'MALTESE\' : \'mt\', \'MARATHI\' : \'mr\', \'MONGOLIAN\' : \'mn\', \'NEPALI\' : \'ne\', \'NORWEGIAN\' : \'no\', \'ORIYA\' : \'or\', \'PASHTO\' : \'ps\', \'PERSIAN\' : \'fa\', \'POLISH\' : \'pl\', \'PORTUGUESE\' : \'pt-PT\', \'PUNJABI\' : \'pa\', \'ROMANIAN\' : \'ro\', \'RUSSIAN\' : \'ru\', \'SANSKRIT\' : \'sa\', \'SERBIAN\' : \'sr\', \'SINDHI\' : \'sd\', \'SINHALESE\' : \'si\', \'SLOVAK\' : \'sk\', \'SLOVENIAN\' : \'sl\', \'SPANISH\' : \'es\', \'SWAHILI\' : \'sw\', \'SWEDISH\' : \'sv\', \'TAJIK\' : \'tg\', \'TAMIL\' : \'ta\', \'TAGALOG\' : \'tl\', \'TELUGU\' : \'te\', \'THAI\' : \'th\', \'TIBETAN\' : \'bo\', \'TURKISH\' : \'tr\', \'UKRAINIAN\' : \'uk\', \'URDU\' : \'ur\', \'UZBEK\' : \'uz\', \'UIGHUR\' : \'ug\', \'VIETNAMESE\' : \'vi\', \'WELSH\' : \'cy\', \'YIDDISH\' : \'yi\', \'UNKNOWN\' : \'\' };
从这个地址得到一个 JSON 字符串,包含了查询内容的解释,音标,例句等等信息,当然还有查询内容的语音地址(如果查询有效),像下面这样:
{ "type" : "sound" , "text" : "http://www.gstatic.com/dictionary/static/sounds/de/0/test.mp3" , "language" : "und" }
事实上,我们发现,如果使用 Google 中文字典查询出来后的语音朗读并不是很好,相反其他以其他语言做查询得到的朗读语音非常地纯正。上面代码中的 text 所对应的值,是一个以查询内容为文件名,mp3为后缀名的音频文件,这个地址保存的总是纯正的发音。如果有兴趣基于 Google 字典做开发的朋友,可以直接使用这个地址来获取音频,而不必再从那一段 JSON 里面去查找。