bing V2 JavaScript API が機能するには、コールバックが必要です。jQuery を使用してスクリプト ブロックを動的に追加します (グローバル名前空間の汚染を無視します)。
function translate(text) {
var txt = "text=" + text;
var lang = "&to=fr";
var appId = "&appid=apikey"; // Add your AppId here
var func = "&oncomplete=window.translated";
$("<script><\/script>")
.attr("src", "http://api.microsofttranslator.com/V2/ajax.svc/Translate?" + txt + lang + appId + func)
.appendTo("HEAD");
}
次に、複数の要素でクリック イベントを使用して翻訳をトリガーします。
$(document).ready(function () {
$('a').click(function () {
var tr = $(this).parent().parent();
var txtin = tr.find('.in').text();
var out = tr.find('.out'); // would like translation inserted here
translate(txtin);
return false;
});
});
最後に、API が必要とするコールバック:
function translated(text) {
$("#translation").text(text);
}
翻訳を開始するためにクリックされた要素に応じて、翻訳されたテキストを受け取るさまざまな要素を指定したいのですが、上記のアプローチを使用すると、追加のパラメーターを bing に渡してコールバックで返すことはできません。
行 1 の el をクリックして行 1 に翻訳を配置し、行 2 の el をクリックして行 2 に翻訳を配置できるようにするには、これをどのように書き直す必要がありますか? つまり、クリック イベントで「out」に割り当てられた要素を使用します。