]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - lib/rbot/language.rb
Previous attempt at cleaning up the prefix matcher were too restrictive, try using...
[user/henk/code/ruby/rbot.git] / lib / rbot / language.rb
index d48607b83bef5dd4636bffa3fd9244a4da316f77..edb3cafaaf0ade3214385d8ec93ca430a351285a 100644 (file)
@@ -1,26 +1,42 @@
 module Irc
+module Language
 
   class Language
     BotConfig.register BotConfigEnumValue.new('core.language', 
       :default => "english", :wizard => true,
-      :values => Dir.new(Config::DATADIR + "/languages").collect {|f|
-                   f =~ /\.lang$/ ? f.gsub(/\.lang$/, "") : nil
-                 }.compact,   
+      :values => Proc.new{|bot|
+            Dir.new(Config::datadir + "/languages").collect {|f|
+              f =~ /\.lang$/ ? f.gsub(/\.lang$/, "") : nil
+            }.compact
+          },   
       :on_change => Proc.new {|bot, v| bot.lang.set_language v},
       :desc => "Which language file the bot should use")
     
-    def initialize(language)
+    def initialize(bot, language)
+      @bot = bot
       set_language language
     end
+    attr_reader :language
 
     def set_language(language)
-      file = Config::DATADIR + "/languages/#{language}.lang"
+      file = Config::datadir + "/languages/#{language}.lang"
       unless(FileTest.exist?(file))
         raise "no such language: #{language} (no such file #{file})"
       end
       @language = language
       @file = file
       scan
+      return if @bot.plugins.nil?
+      @bot.plugins.core_modules.each { |p|
+        if p.respond_to?('set_language')
+          p.set_language(@language)
+        end
+      }
+      @bot.plugins.plugins.each { |p|
+        if p.respond_to?('set_language')
+          p.set_language(@language)
+        end
+      }
     end
 
     def scan
@@ -63,3 +79,4 @@ module Irc
   end
 
 end
+end