fork(50) download
  1. //【登録場所】 全体、レス表示、選択テキスト
  2. //【ラベル】 Google翻訳ポップアップ
  3. //【コマンド1】 ${SCRIPT:S} google_translation.js //自動判定⇒日本語
  4. //【コマンド2】 ${SCRIPT:S} google_translation.js enja //英語⇒日本語
  5. //【コマンド3】 ${SCRIPT:S} google_translation.js jaen //日本語⇒英語
  6. //【コマンド4】 ${SCRIPT:S} google_translation.js chja //中国語(簡体字)⇒日本語
  7. //【コマンド5】 ${SCRIPT:S} google_translation.js chjab //中国語(繁体字)⇒日本語
  8. //【コマンド6】 ${SCRIPT:S} google_translation.js koja //韓国語⇒日本語
  9. //【コマンド7】 ${SCRIPT:S} google_translation.js frja //フランス語⇒日本語
  10. //【コマンド8】 ${SCRIPT:S} google_translation.js deja //ドイツ語⇒日本語
  11. //【コマンド9】 ${SCRIPT:S} google_translation.js itja //イタリア語⇒日本語
  12. //【コマンド10】 ${SCRIPT:S} google_translation.js esja //スペイン語⇒日本語
  13. //【コマンド11】 ${SCRIPT:S} google_translation.js ptja //ポルトガル語⇒日本語
  14. //【コマンド12】 ${SCRIPT:S} google_translation.js ruja //ロシア語⇒日本語
  15. //【コマンド13】 ${SCRIPT:S} google_translation.js arja //アラビア語⇒日本語
  16. //【コマンド14】 ${SCRIPT:S} google_translation.js menu //コマンド1~13のメニュー表示
  17. //【スクリプト】
  18. // ----- 次の行から -----
  19. //設定
  20. var copyText = false;//クリップボードにコピーする。
  21. var closePopupMenu = false;//引数'menu'の場合、選択ポップアップを入力後閉じる。
  22. var closeOnMouseExit = true;//カーソルのポップアップ外でポップアップを閉じます。
  23.  
  24. var vcx = v2c.context,
  25. text = vcx.selText || vcx.res.message;
  26. vcx.setDefaultCloseOnMouseExit( closeOnMouseExit );
  27.  
  28. //引数からURLに使う文字列を取得
  29. var arg2data = ( function(){
  30. var data = {
  31. 'enja' : ['en%7Cja'],
  32. 'jaen' : ['ja%7Cen'],
  33. 'chja' : ['zh-CN%7Cja'],
  34. 'chjab' : ['zh-TW%7Cja'],
  35. 'koja' : ['ko%7Cja'],
  36. 'frja' : ['fr%7Cja'],
  37. 'deja' : ['de%7Cja'],
  38. 'itja' : ['ita%7Cja'],
  39. 'esja' : ['es%7Cja'],
  40. 'ptja' : ['pt%7Cja'],
  41. 'ruja' : ['ru%7Cja'],
  42. 'arja' : ['ar%7Cja']
  43. };
  44. return function(arg) { return data[arg] || ['auto%7Cja'];};
  45. })();
  46. //翻訳の選択ポップアップでフォーム送信時の動作
  47. function formSubmitted( u,sm,sd ){
  48. var m = ( u + '' ).match( /^(.+)\?(.+?)=/ );
  49. var d = arg2data( m[2] );
  50. createPopupString( 'http://www.google.com/translate_t?langpair=' + d[0] + '&text=' + encodeURIComponent( text ) );
  51. if( closePopupMenu ) vcx.closeOriginalPopup();//入力後閉じる。
  52. }
  53. //翻訳結果のポップアップ表示
  54. function createPopupString( su ){
  55. var hr = v2c.createHttpRequest( su );
  56. var sr = hr.getContentsAsString();
  57. if ( !sr ) {
  58. v2c.alert( 'ページを取得できませんでした。: ' + hr.responseCode + ' '+ hr.responseMessage );
  59. return;
  60. }
  61. var mt = new Array(2);
  62. mt = sr.match( new RegExp( 'id=result_box[^>]+?>([^]+?)</div>', 'i' ) );
  63. if( !mt ){
  64. v2c.alert( '検索結果を取得できませんでした。' ); return;
  65. }
  66. ph = '<html><body style="margin:0 5px;">' + mt[1] + '</body></html>';
  67. vcx.setPopupHTML( ph );
  68. v2c.context.setPopupFocusable(true);
  69. if( copyText ) v2c.context.setClipboardText( mt[1] );//クリップボードにコピーする。
  70. }
  71. //翻訳する文字列の整形
  72. function editText( text ){
  73. text = text.replaceAll( '>>([[\\d]+[,-]?]+)\\n', '$1さん。' );//アンカー+改行⇒番号さん。
  74. text = text.replaceAll( '>>([[\\d]+[,-]?]+)', '$1' );//アンカー⇒番号
  75. text = text.replaceAll( '[\\s ]', ' ' );//改行削除
  76. text = text.replaceAll( '(?:[R|Q]T ?|)[@#]([\\w]+)[:]?', '$1' );//Twitter用、ハッシュタグ等削除
  77. var links = vcx.res.links, link;
  78. for ( var i=0, l = links.length; i < l; i++ ){//リンクの削除
  79. link = ( links[i] + '' ).substring(1);
  80. if( ( text + '' ).charAt( ( text + '' ).lastIndexOf( link ) - 1 ) == 'h' ) {
  81. link = 'h' + link;
  82. }
  83. text = text.replace( link+'','' );
  84. }
  85. text = text.trim();
  86. return text;
  87. }
  88. //実行形式の呼び出し
  89. (function(){
  90. var arg = vcx.args[0];
  91. text = editText( text );
  92. if ( arg == 'menu' ) {
  93. vcx.setPopupHTML( '<html lang="ja"><style type = "text/css">'
  94. +'<!--body{background-color:#cccccc; color:black; text-align:center;}.header{font-size:small;}--></style>'
  95. +'<body><form action="http://www.google.com/translate_t"><table border="0" cellspacing="0" cellpadding="0">'
  96. +'<tr><input type="submit" value=" 英⇒日 " name="enja"></tr><tr><input type="submit" value=" 日⇒英 " name="jaen"></tr>'
  97. +'<tr><input type="submit" value="中(簡)⇒日" name="chja"></tr><tr><input type="submit" value="中(繁)⇒日" name="chjab"></tr>'
  98. +'<tr><input type="submit" value=" 韓⇒日 " name="koja"></tr><tr><input type="submit" value=" 仏⇒日 " name="frja"></tr>'
  99. +'<tr><input type="submit" value=" 独⇒日 " name="deja"></tr><tr><input type="submit" value=" 伊⇒日 " name="itja"></tr>'
  100. +'<tr><input type="submit" value=" 西⇒日 " name="esja"></tr><tr><input type="submit" value=" 葡⇒日 " name="ptja"></tr>'
  101. +'<tr><input type="submit" value=" 露⇒日 " name="ruja"></tr><tr><input type="submit" value=" 亜⇒日 " name="arja"></tr>'
  102. +'</table></form></body></html>' );
  103. vcx.setTrapFormSubmission( true );
  104. vcx.setMaxPopupWidth( 97 );
  105. } else if ( arg != 'menu' && text && ( text.length() > 0 ) ) {
  106. text = encodeURIComponent( text );
  107. var d = arg2data( arg );
  108. createPopupString( 'http://www.google.com/translate_t?langpair='+d[0]+'&text='+text);
  109. }
  110. })();
  111. // ----- 前の行まで -----
Runtime error #stdin #stdout 0.44s 382976KB
stdin
Standard input is empty
stdout
Standard output is empty