TCL8.5とeggdropの最新バージョンを備えた新しいDebianサーバーにEggdropをインストールしました。残念ながら、スクリプトと、é、J'aime などの特殊文字の処理に問題があります。
例を示すのが最適かもしれません:
13:41 <@me> test
13:41 <@me> !tr nl This is a test
13:41 < bot> Dit is een test
13:41 <@me> !tr fr I am a stranger
13:41 < bot> Je suis un étranger
13:41 <@me> !tr fr I love you
13:42 < bot> Je t'aime
convert-to utf-8 という行を追加しました。eggdrop も utf-8 で実行されています。これにより、irc クライアントで étranger が読めるようになりましたが、ほとんどの文字 (中国語、アラビア語) はまったく似ていませんでした。TCL コードは次のとおりです。
namespace eval gTranslator {
bind pub - !tr gTranslator::translate
proc translate { nick uhost handle chan text } {
package require http
package require json
set lngto [string tolower [lindex [split $text] 0]]
set text [::http::formatQuery q [join [lrange [split $text] 1 end]]]
set dturl "http://ajax.googleapis.com/ajax/services/language/detect?v=1.0&q=$text"
set res [::json::json2dict [::http::data [::http::geturl $dturl]]]
set lng [dict get $res responseData language]
if { $lng == $lngto } {
putserv "PRIVMSG $chan :\002Error\002 translating $lng to $lngto."
return 0
}
set trurl "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&langpair=$lng%7c$lngto&$text"
putlog $trurl
set res [::json::json2dict [::http::data [::http::geturl $trurl]]]
putlog $res
#putserv "PRIVMSG $chan :Language detected: $lng"
set translated [dict get $res responseData translatedText]
putserv "PRIVMSG $chan :[encoding convertto utf-8 $translated]"
}
}
telnet 経由で接続すると、次の追加情報が得られました。
*** Me joined the party line.
[13:49:34] http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&langpair=en%7cfr&q=I%20like%20cookies
[13:49:34] responseData {translatedText {J'aime les cookies}} responseDetails null responseStatus 200
[13:50:11] http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&langpair=en%7cfr&q=I%20am%20a%20stranger
[13:50:11] responseData {translatedText {Je suis un étranger}} responseDetails null responseStatus 200