プロが教える店舗&オフィスのセキュリティ対策術

google翻訳apiで、#TEXTを翻訳する。
http://oshiete.goo.ne.jp/qa/6283012.html の#1を参考にして
#TEXTノードを全て翻訳しようとしてみました。

<script type="text/javascript" src="http://www.google.com/jsapi"></script>
google.load("language", "1"); // 翻訳ライブラリ ver 1を読み込む
function NodeTextScan2(){
var tags=document.getElementsByTagName("body")[0].getElementsByTagName("*");
for(var i=0;i<tags.length;i++){
var n=tags[i].firstChild;
while(n){
if(n.nodeName=="#text" && n.nodeValue.length>3){
var CrntNodeTEXT=n;
var text=n.nodeValue;
google.setOnLoadCallback(function(){
// 日本語(ja)から英語(en)に翻訳
google.language.translate(text, "ja", "en", function(result){
var Kekka=result.translation;
alert('結果='+Kekka); //(3)

// 翻訳結果と入れ替える
CrntNodeTEXT.nodeValue=Kekka; //(1)
});
});
//CrntNodeTEXT.nodeValue="aaa"; //(2)
}
n=n.nextSibling;
}
}
}

http://journal.mycom.co.jp/articles/2008/04/16/g …
より、
「完全にライブラリファイルが読み込まれたら実行するようにしなければなりません。ライブラリが完全に読み込まれたら処理を行うにはgoogle.setOnLoadCallback()を使います。」
と、いうことで、
setOnLoadCallback
を使用しました。

CrntNodeTEXT,text,Kekkaという変数を新たに定義したのは、ただ、nだけでは、同一名変数がどこかでバッティングしていないかと思ってのことです。
var宣言しているのでその心配もないとは思うのですが、念のため。
(1)をレムにして、(2)を実行すると、全ての#TEXTが"aaa"に変換されます。
しかし、(2)をレムにして(1)を実行しても何も変化ありません。
(3)は、変換結果を調べようと思い挿入してみましたが、Kekkaは表示されません。

いろいろとこのほかも試してみましたが、一つの<div>を翻訳することはできるのですが、body内の#TEXTを一括して翻訳することができません。
どうぞよろしくお願いいたします。

A 回答 (2件)

#1 です。



> javascript-xpath-latest-cmp.js について、調べたのですが、リンク切れが多くて良くわかりませんでした。
下記ライブラリを利用しています。

JavaScript-XPath – CodeRepos::Share – Trac
http://coderepos.org/share/wiki/JavaScript-XPath
JavaScript-XPath をリリースしました!さあ、あなたも XPath を使おう!(解説付き) - IT戦記
http://d.hatena.ne.jp/amachang/20071112/1194856493

> ExtXPathEvaluator.jsについては、上記に置いてあったものと、...ExtXPathEvaluator.html より、DLしたものが異なっているようでした。
GitHub に更新しても表示されるコードが古いものになる不具合があったようです。([download] すれば最新のExtXPathEvaluator.jsが手に入ります。)
GitHub に連絡して「現在は修正されている」との返答を得ましたが、新しく gist を作り直すしか解がないそうなので、「gist: 658057」に移動しました。

gist: 658057 - (ExtXPathEvaluator.js) - GitHub
http://gist.github.com/658057
    • good
    • 0
この回答へのお礼

think49さん、お早うございます。
ご丁寧に詳しく教えていただきありがとうございます。
確認しました。全て大丈夫でした。
どうもありがとうございました。

お礼日時:2010/11/02 09:47

#1 ではなく #4 ベースですが、GitHub にサンプルを置きました。



gist: 655307 - はじめての Google AJAX Language API - GitHub
http://gist.github.com/655307

# Google のデベロッパーガイドを参考に作りました。

はじめての Google AJAX Language API - Google Code
http://code.google.com/intl/ja/apis/ajaxlanguage …
    • good
    • 0
この回答へのお礼

think49さん、重ねてありがとうございます。
できました。
感激です。
XPathについて学習しないとよく理解できません。
これから挑戦します。

また、
javascript-xpath-latest-cmp.js
について、調べたのですが、リンク切れが多くて良くわかりませんでした。
スクリプト自体は、
http://vird2002.s8.xrea.com/javascript/google_aj …
より頂いてきました。
また、
ExtXPathEvaluator.jsについては、
上記に置いてあったものと、
http://vird2002.s8.xrea.com/javascript/ExtXPathE …
より、DLしたものが異なっているようでした。

これから、更に学習します。
どうもありがとうございました。

お礼日時:2010/10/31 06:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!