//【登録場所】 全体、レス表示、選択テキスト //【ラベル】 Google翻訳ポップアップ //【コマンド1】 ${SCRIPT:S} google_translation.js //自動判定⇒日本語 //【コマンド2】 ${SCRIPT:S} google_translation.js enja //英語⇒日本語 //【コマンド3】 ${SCRIPT:S} google_translation.js jaen //日本語⇒英語 //【コマンド4】 ${SCRIPT:S} google_translation.js chja //中国語(簡体字)⇒日本語 //【コマンド5】 ${SCRIPT:S} google_translation.js chjab //中国語(繁体字)⇒日本語 //【コマンド6】 ${SCRIPT:S} google_translation.js koja //韓国語⇒日本語 //【コマンド7】 ${SCRIPT:S} google_translation.js frja //フランス語⇒日本語 //【コマンド8】 ${SCRIPT:S} google_translation.js deja //ドイツ語⇒日本語 //【コマンド9】 ${SCRIPT:S} google_translation.js itja //イタリア語⇒日本語 //【コマンド10】 ${SCRIPT:S} google_translation.js esja //スペイン語⇒日本語 //【コマンド11】 ${SCRIPT:S} google_translation.js ptja //ポルトガル語⇒日本語 //【コマンド12】 ${SCRIPT:S} google_translation.js ruja //ロシア語⇒日本語 //【コマンド13】 ${SCRIPT:S} google_translation.js arja //アラビア語⇒日本語 //【コマンド14】 ${SCRIPT:S} google_translation.js menu //コマンド1~13のメニュー表示 //【スクリプト】 // ----- 次の行から ----- //設定 var copyText = false;//クリップボードにコピーする。 var closePopupMenu = false;//引数'menu'の場合、選択ポップアップを入力後閉じる。 var closeOnMouseExit = true;//カーソルのポップアップ外でポップアップを閉じます。 var vcx = v2c.context, text = vcx.selText || vcx.res.message; vcx.setDefaultCloseOnMouseExit( closeOnMouseExit ); //引数からURLに使う文字列を取得 var arg2data = ( function(){ var data = { 'enja' : ['en%7Cja'], 'jaen' : ['ja%7Cen'], 'chja' : ['zh-CN%7Cja'], 'chjab' : ['zh-TW%7Cja'], 'koja' : ['ko%7Cja'], 'frja' : ['fr%7Cja'], 'deja' : ['de%7Cja'], 'itja' : ['ita%7Cja'], 'esja' : ['es%7Cja'], 'ptja' : ['pt%7Cja'], 'ruja' : ['ru%7Cja'], 'arja' : ['ar%7Cja'] }; return function(arg) { return data[arg] || ['auto%7Cja'];}; })(); //翻訳の選択ポップアップでフォーム送信時の動作 function formSubmitted( u,sm,sd ){ var m = ( u + '' ).match( /^(.+)\?(.+?)=/ ); var d = arg2data( m[2] ); createPopupString( 'http://www.google.com/translate_t?langpair=' + d[0] + '&text=' + encodeURIComponent( text ) ); if( closePopupMenu ) vcx.closeOriginalPopup();//入力後閉じる。 } //翻訳結果のポップアップ表示 function createPopupString( su ){ var hr = v2c.createHttpRequest( su ); var sr = hr.getContentsAsString(); if ( !sr ) { v2c.alert( 'ページを取得できませんでした。: ' + hr.responseCode + ' '+ hr.responseMessage ); return; } var mt = new Array(2); mt = sr.match( new RegExp( 'id=result_box[^>]+?>([^]+?)', 'i' ) ); if( !mt ){ v2c.alert( '検索結果を取得できませんでした。' ); return; } ph = '' + mt[1] + ''; vcx.setPopupHTML( ph ); v2c.context.setPopupFocusable(true); if( copyText ) v2c.context.setClipboardText( mt[1] );//クリップボードにコピーする。 } //翻訳する文字列の整形 function editText( text ){ text = text.replaceAll( '>>([[\\d]+[,-]?]+)\\n', '$1さん。' );//アンカー+改行⇒番号さん。 text = text.replaceAll( '>>([[\\d]+[,-]?]+)', '$1' );//アンカー⇒番号 text = text.replaceAll( '[\\s ]', ' ' );//改行削除 text = text.replaceAll( '(?:[R|Q]T ?|)[@#]([\\w]+)[:]?', '$1' );//Twitter用、ハッシュタグ等削除 var links = vcx.res.links, link; for ( var i=0, l = links.length; i < l; i++ ){//リンクの削除 link = ( links[i] + '' ).substring(1); if( ( text + '' ).charAt( ( text + '' ).lastIndexOf( link ) - 1 ) == 'h' ) { link = 'h' + link; } text = text.replace( link+'','' ); } text = text.trim(); return text; } //実行形式の呼び出し (function(){ var arg = vcx.args[0]; text = editText( text ); if ( arg == 'menu' ) { vcx.setPopupHTML( '' +'
' +'' +'' +'' +'' +'' +'' +'
' ); vcx.setTrapFormSubmission( true ); vcx.setMaxPopupWidth( 97 ); } else if ( arg != 'menu' && text && ( text.length() > 0 ) ) { text = encodeURIComponent( text ); var d = arg2data( arg ); createPopupString( 'http://www.google.com/translate_t?langpair='+d[0]+'&text='+text); } })(); // ----- 前の行まで -----