必威体育下载基督教Heilmann

您目前正在浏览国际化类别的存档。必威体育简介

“国际化”类别的存档

利用谷歌翻译API实现twitter多语言

周一,3月31日,2008

后帮助用正确的语言属性修复Yahoo搜索结果页面为了让屏幕阅读器用户能够访问它们,我想知道如何使用用户生成的内容来实现这一点。当然,最简单的选择是要求用户在配置文件中提供正确的语言,但如果你像我一样会说两种语言,你实际上是在用不同的语言写作。另一种选择是让我作为用户在输入时选择语言,这是令人讨厌的。

然后我偶然发现谷歌的Ajax翻译API并认为它应该很容易与它结婚,例如JSON的输出推特API动态添加正确的lang属性。

唉,这并不像我想的那么容易。从表面上看它很容易使用谷歌API告诉我一篇文章是什么语言可能是:


var text = "¿Donde esta el bano ?"
google.language.detect(文本、函数(结果){
如果(! result.error) {
var语言= ' unknown';
for (l in google.language.Languages) {
if (google.language.Languages[l] result.language) {
语言= l;
打破;
}

}
var container = document.getElementById("detection");
container.innerHTML = text + " is: " + language + "";
}

});

然而,如果你想在循环中使用它,那你就不走运了。的google.language.detect方法触发内部XHR调用,结果集只给你一个错误代码,信心水平,一个可靠的布尔值和语言代码。这是很多,但是没有办法告诉得到结果的函数分析了哪些文本。如果……那就太好了API重复文本,或者至少允许您为当前设置唯一的IDXHR请求。

当Ajax请求以随机顺序返回时,无法判断哪个结果对哪个文本有效,所以我被困住了。

输入Firebug。分析通过的请求,我意识到有一个REST URL被google.language的内部方法调用。就翻译而言,这是:


http://www.google.com/uds/GlangDetect?callback= {CALLBACK_METHOD}上下文={}数量q = {URL_ENCODED_TEXT}关键= notsupplied&v = 1.0

您可以使用数字和自己的回调方法来创建脚本返回这些结果的文档中的节点。回电是:


CALLBACK_METHOD(' NUMBER',{"language": "es"," isreliability ": true,"confidence": 0.24716422},200,null,200)

然而,我已经用过了PHP从其他服务获取信息,我最终使用curl作为整个概念证明,让twitter用自然语言说话:


    //卷曲twitter提要
    $ url = ' http://twitter.com/statuses/public_timeline.rss ';
    $ ch = curl_init ();
    curl_setopt (ch,美元CURLOPT_URL,$ url);
    curl_setopt (ch,美元CURLOPT_RETURNTRANSFER,1);
    (twitterdata = curl_exec美元ch);
    curl_close (ch);
    //获取所有的描述
    preg_match_all (" / ([^ <]+) / msi”,twitterdata美元,美元desc);
    //跳过主要的提要描述
    foreach (desc美元[1]键= > d美元){
    如果(关键= 0美元){
    继续;
    }

    / /组装休息调用并卷曲结果
    $url = ‘http://www.google.com/uds/GlangDetect?callback=' .
    “feedresult&context =”。美元的关键。q =。urlencode ($ d)。
    “关键= notsupplied&v = 1.0”;
    $ ch = curl_init ();
    curl_setopt (ch,美元CURLOPT_URL,$ url);
    curl_setopt (ch,美元CURLOPT_RETURNTRANSFER,1);
    (langcode = curl_exec美元ch);
    curl_close (ch);
    //掌握语言
    preg_match(“/“语言”:“([^]+)/“langcode美元,美元res);
    //写出列表项
    回声的

  • ”。$ d。’
  • ”;
    }

    ? >

检查结果:支持自然语言的公共twitter提要

我很快会做一些纯JavaScript的解决方案,了。这可能是一个很好的机会用户原创内容更容易理解。

感谢马克·托马斯和蒂姆·休顿提出了如何解决这个问题的想法XHR问题。