5 BotConfig.register BotConfigEnumValue.new('core.language',
6 :default => "english", :wizard => true,
7 :values => Proc.new{|bot|
8 Dir.new(Config::datadir + "/languages").collect {|f|
9 f =~ /\.lang$/ ? f.gsub(/\.lang$/, "") : nil
12 :on_change => Proc.new {|bot, v| bot.lang.set_language v},
13 :desc => "Which language file the bot should use")
15 def initialize(bot, language)
21 def set_language(language)
22 file = Config::datadir + "/languages/#{language}.lang"
23 unless(FileTest.exist?(file))
24 raise "no such language: #{language} (no such file #{file})"
29 return if @bot.plugins.nil?
30 @bot.plugins.core_modules.each { |p|
31 if p.respond_to?('set_language')
32 p.set_language(@language)
35 @bot.plugins.plugins.each { |p|
36 if p.respond_to?('set_language')
37 p.set_language(@language)
45 IO.foreach(@file) {|l|
49 @strings[$1] = Array.new
51 elsif(l =~ /^\s*(.*)$/)
52 @strings[current_key] << $1
62 if(@strings.has_key?(key))
63 return @strings[key][rand(@strings[key].length)]
65 raise "undefined language key"
70 File.open(@file, "w") {|file|
71 @strings.each {|key,val|