# .lang file etc.
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
: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
return 'english'
end
- BotConfig.register BotConfigEnumValue.new('core.language',
- :default => Irc::Language.from_locale, :wizard => true,
+ 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
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
end
end
+end