]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - data/rbot/plugins/translator.rb
nickserv: add 'ghosted' to nickserv.nick_avail
[user/henk/code/ruby/rbot.git] / data / rbot / plugins / translator.rb
index a046b2069dd3151442997104118b294907c12717..a32ea16dfa059d56789a83ae0f4942f4b54c1e08 100644 (file)
@@ -318,6 +318,10 @@ class TranslatorPlugin < Plugin
     end
   end
 
+  def languages
+    @languages ||= @translators.map { |t| t.last.directions.keys }.flatten.uniq
+  end
+
   def update_default
     @default_translators = bot.config['translator.default_list'] & @translators.keys
   end
@@ -325,7 +329,15 @@ class TranslatorPlugin < Plugin
   def cmd_translator(m, params)
     params[:to] = @bot.config['translator.destination'] if params[:to].nil?
 
-    translator = @default_translators.find {|t| @translators[t].support?(params[:from], params[:to])}
+    # Use google translate as translator if source language has not been given
+    # and auto-detect it
+    if params[:from].nil?
+      params[:from] = "auto"
+      translator = "google_translate"
+    else
+      translator = @default_translators.find {|t| @translators[t].support?(params[:from], params[:to])}
+    end
+
     if translator
       cmd_translate m, params.merge({:translator => translator, :show_provider => true})
     else
@@ -345,7 +357,7 @@ class TranslatorPlugin < Plugin
         end
         m.reply(if params[:show_provider]
                   _('%{translation} (provided by %{translator})') %
-                    {:translation => translation, :translator => tname}
+                    {:translation => translation, :translator => tname.gsub("_", " ")}
                 else
                   translation
                 end)
@@ -366,5 +378,9 @@ class TranslatorPlugin < Plugin
 end
 
 plugin = TranslatorPlugin.new
-plugin.map 'translator :from [:to] *phrase',
-           :action => :cmd_translator, :thread => true
+req = Hash[*%w(from to).map { |e| [e.to_sym, /#{plugin.languages.join("|")}/] }.flatten]
+
+plugin.map 'translate [:from] [:to] *phrase',
+           :action => :cmd_translator, :thread => true, :requirements => req
+plugin.map 'translator [:from] [:to] *phrase',
+           :action => :cmd_translator, :thread => true, :requirements => req