class BabelPlugin < Plugin
LANGS = %w{en fr de it pt es nl ru zh zt el ja ko}
+ BASEURL = 'http://babelfish.yahoo.com'
- BotConfig.register BotConfigEnumValue.new('translate.default_from',
+ Config.register Config::EnumValue.new('translate.default_from',
:values => LANGS, :default => 'en',
:desc => "Default language to translate from")
- BotConfig.register BotConfigEnumValue.new('translate.default_to',
+ Config.register Config::EnumValue.new('translate.default_to',
:values => LANGS, :default => 'en',
:desc => "Default language to translate to")
trans_from = params[:fromlang] ? params[:fromlang] : @bot.config['translate.default_from']
trans_to = params[:tolang] ? params[:tolang] : @bot.config['translate.default_to']
trans_text = params[:phrase].to_s
-
+
lang_match = langs.join("|")
unless(trans_from =~ /^(#{lang_match})$/ && trans_to =~ /^(#{lang_match})$/)
m.reply "invalid language: valid languagess are: #{langs.join(' ')}"
return
end
- data_text = URI.escape trans_text
+ data_text = CGI.escape trans_text
trans_pair = "#{trans_from}_#{trans_to}"
if (trans_text =~ /^http:\/\//) && (URI.parse(trans_text) rescue nil)
- url = 'http://babelfish.altavista.com/babelfish/trurl_pagecontent' +
- "?lp=#{trans_pair}&url=#{data_text}"
-
- return Utils.get_first_pars([url], 1, :message => m)
+ m.reply 'webpage translation is not currently supported'
+ return
+ # TODO FIXME
+ # url = BASEURL+'/translate_url' +
+ # "?lp=#{trans_pair}&trurl=#{data_text}"
+ #
+ # return Utils.get_first_pars([url], 1, :message => m)
end
data = "lp=#{trans_pair}&doit=done&intl=1&tt=urltext&urltext=#{data_text}"
"content-type" => "application/x-www-form-urlencoded; charset=utf-8"
}
- query = "/babelfish/tr"
+ query = "/translate_txt"
begin
- body = @bot.httputil.get('http://babelfish.altavista.com'+query,
+ body = @bot.httputil.get(BASEURL+query,
:method => :post,
:body => data,
:headers => headers)
case body
when nil
m.reply "couldn't talk to babelfish :("
- when /^\s+<td bgcolor=white class=s><div style=padding:10px;>(.*)<\/div><\/td>\s*<\/tr>/m
- answer = $1.gsub(/\s*[\r\n]+\s*/,' ')
+ when /^\s*<div id="result"><div style="[^"]*">(.*?)<\/div><\/div>\s*$/
+ answer = $1
# cache the answer
if(answer.length > 0)
@registry["#{trans_pair}/#{data_text}"] = answer
plugin.default_auth('cache', false)
-plugin.map 'translate to :tolang *phrase'
-plugin.map 'translate from :fromlang *phrase'
+plugin.map 'translate to :tolang *phrase', :thread => true
+plugin.map 'translate from :fromlang *phrase', :thread => true
plugin.map 'translate cache :cmd', :action => :cache_mgmt, :auth_path => 'cache!', :requirements => { :cmd => /view|clear/ }
-plugin.map 'translate :fromlang :tolang *phrase'
+plugin.map 'translate :fromlang :tolang *phrase', :thread => true