必威体育下载克里斯蒂安·海尔曼

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

“国际化”类别的存档

通过对谷歌翻译API的黑客攻击使Twitter多语言化

星期一,3月31日,二千零八

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

然后我偶然发现谷歌的Ajax翻译美国石油学会并且认为它应该很容易与之结合,例如杰森产量推特美国石油学会动态添加正确的语言属性。

唉,这不像我想的那么容易。表面上使用谷歌很容易美国石油学会告诉我某个文本是什么语言可能是:


var text=“?d_nde est_el ba_o?”;
google.language.detect(文本,功能(结果)
如果(!)结果.错误){
var language='未知';
对于(l在google.language.languages中)
if(google.language.languages[l]结果.language)
语言= L;
断裂;
}

}
var container=document.getElementByID(“检测”);
container.innerhtml=text+“是:”+language+“”;
}

(});

然而,如果你想在一个循环中使用这个,你就走运了。这个google.language.detect检测方法触发内部XHR调用,结果集只提供一个错误代码,信心水平,一个可交付的布尔值和语言代码。这是很多,但没有办法告诉函数得到的结果,哪些文本被分析。如果美国石油学会重复文本或至少允许您为当前XHR请求。

当Ajax请求以随机顺序返回时,无法判断哪种结果适用于哪种文本,所以我被卡住了。

输入萤火虫。分析正在处理的请求时,我意识到搁置网址由google.language的内部方法调用。在翻译的情况下,这是:


http://www.google.com/uds/glangdetect?callback=callback_method&context=number&q=url_encoded_text&key=notsupplied&v=1.0

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


callback_method('number',“language”:“es”,“isreliable”:true,“confidence”:0.24716422,200,null,200)

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


    //卷曲Twitter订阅源
    $url='http://twitter.com/status/public_timeline.rss';
    $ch=curl_init();
    卷发($ch,科洛普网址$URL);
    卷发($ch,科洛普返回传输,1);
    $twitterdata=curl_exec($ch);
    卷曲关闭($ch);
    //获取所有描述
    preg_match_all(“/ ([^<]) /MSI“,$twitterdata,$descs);
    //跳过主源描述
    foreach($descs[1]作为$key=>d)
    如果($ key=0){
    继续;
    }

    /组装休息调用并卷曲结果
    $url='http://www.google.com/uds/glangdetect?回调=
    'FeedResult&Context='。$KEY。“& Q=”。URLNECODE($D)。
    '&key=notsupplied&v=1.0';
    $ch=curl_init();
    卷发($ch,科洛普网址$URL);
    卷发($ch,科洛普返回传输,1);
    $langcode=curl_exec($ch);
    卷曲关闭($ch);
    //获取语言
    preg_match(“/”language“:”([^”]+)“/”,$langcode,$res);
    //写出列表项
    回声

  • ‘D元’。

  • }

    ?>

查看结果:支持自然语言的公共Twitter订阅源

我将很快做一些纯javascript解决方案,也是。这可能是一个很好的机会UGC更容易接近。

感谢马克·托马斯和蒂姆·休格登对如何在XHR问题。