X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=lib%2Frbot%2Flanguage.rb;h=8055ea0e8e986ae588ff624408617daef803d0f0;hb=07a397f63f0c7dc7f53830a57ce9048cfd9efb53;hp=3e4c77f0c37ba77a67d507ceb8149d64eaaafcfe;hpb=6f5528a63b44e610a3d25d7fe583399163d7d2da;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/lib/rbot/language.rb b/lib/rbot/language.rb index 3e4c77f0..8055ea0e 100644 --- a/lib/rbot/language.rb +++ b/lib/rbot/language.rb @@ -11,6 +11,9 @@ module Irc class Bot class Language + # Access needed for tests: + attr_reader :strings + # This constant hash holds the mapping # from long language names to the usual POSIX # locale specifications @@ -24,9 +27,12 @@ class Bot :dutch => 'nl', :japanese => 'ja', :russian => 'ru', + :finnish => 'fi', :traditional_chinese => 'zh_TW', :simplified_chinese => 'zh_CN' } + # On WIN32 it appears necessary to have ".UTF-8" explicitly for gettext to use UTF-8 + Lang2Locale.each_value {|v| v.replace(v + '.UTF-8')} # Return the shortest language for the current # GetText locale @@ -55,16 +61,16 @@ class Bot return 'english' end - Config.register Config::EnumValue.new('core.language', + Config.register Config::EnumValue.new('core.language', :default => Irc::Bot::Language.from_locale, :wizard => true, :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(bot, language) @bot = bot set_language language @@ -75,7 +81,7 @@ class Bot lang_str = language.to_s.downcase.gsub(/\s+/,'_') lang_sym = lang_str.intern if defined?(GetText) and Lang2Locale.key?(lang_sym) - setlocale(Lang2Locale[lang_sym]) + GetText.set_locale(Lang2Locale[lang_sym]) debug "locale set to #{locale}" rbot_gettext_debug else