0

複数の言語のコンテンツを含むWebサイトのJavaScriptに取り組んでいます。Google Translate APIを使用して、ユーザーが単語(またはフレーズ)を選択し、翻訳を自動的に提供できるようにしたいと思います。とりあえず、テストの結果を警告するだけです。

これは私がこれまでに持っているものです:google.load( "language"、 "1");

function getSelection() {
    var selection = (!!document.getSelection) ? document.getSelection() :
           (!!window.getSelection)   ? window.getSelection() :
           document.selection.createRange().text;
    if (selection.text)
        selection = selection.text
    console.log(selection);
    return selection
}

$(document).ready(function() {    
    $(window).mouseup(function() {
        var selection = getSelection();
        if (selection != "") {
            google.language.translate(selection, "", "en", function(result) {
                if (!result.error) {
                    alert(result.translation);
                } else {
                    alert(result.error);
                }
            });
        }
    });
});

私が遭遇している問題は、getSelection()関数がRangeオブジェクトを返していることです。これは、明らかにgoogleのlanguage.translate()関数と互換性がありません。私が本当に必要としているのは、範囲から実際のテキストを文字列として取得して、それを渡すことができるようにする方法だけです。私が知っている限り、これを行うための本当に簡単で明白な方法がいくつかありますが(はい、selection.textを使用してみました)、JavaScriptの経験は限られており、グーグルで使用しても有用なものは何も見つかりませんでした。

誰か助けてもらえますか?

4

3 に答える 3

1

jQuerygoogletranslateを試してください-http ://code.google.com/p/jquery-translate/

于 2009-11-12T02:01:06.217 に答える
1

当然のことながら、私が完全に見逃していた本当に明白な答えがありました。selection.toString()...

于 2009-11-12T02:10:37.447 に答える
1

次のようなことができます。

function getSelection() {
    var selection = window.getSelection ? window.getSelection() + ''
                                        : document.selection.createRange().text;
    return selection
}

空の文字列をgetSelection()メソッドの結果に連結することにより、その値が文字列に変換されます。これは一般的な省略形であり、toString メソッドを呼び出すのと同じです。理由は次のとおりです。

var test = {
  toString: function () { 
    return 'foo';
  }
};

test+'' == 'foo'; // true

!!また、最初のオペランドである条件が自動的にブール値に変換されるため、三項で二重論理否定 ( ) を使用する必要もありません。

于 2009-11-12T02:12:50.357 に答える