# Return the shortest language for the current
# GetText locale
def Language.from_locale
+ return 'english' unless defined?(GetText)
lang = locale.language
if locale.country
str = lang + "_#{locale.country}"
if Lang2Locale.value?(str)
# Get the shortest key in Lang2Locale which maps to the given lang_country
- return Lang2Locale.select { |k, v| v == str }.transpose.first.map { |v| v.to_s }.sort { |a, b| a.length <=> b.length }.first
+ lang_str = Lang2Locale.select { |k, v| v == str }.transpose.first.map { |v| v.to_s }.sort { |a, b| a.length <=> b.length }.first
+ if File.exist?(File.join(Config::datadir, "languages/#{lang_str}.lang"))
+ return lang_str
+ end
end
end
# lang_country didn't work, let's try lan
if Lang2Locale.value?(lang)
# Get the shortest key in Lang2Locale which maps to the given lang
- return Lang2Locale.select { |k, v| v == lang }.transpose.first.map { |v| v.to_s }.sort { |a, b| a.length <=> b.length }.first
+ lang_str = Lang2Locale.select { |k, v| v == lang }.transpose.first.map { |v| v.to_s }.sort { |a, b| a.length <=> b.length }.first
+ if File.exist?(File.join(Config::datadir, "/languages/#{lang_str}.lang"))
+ return lang_str
+ end
end
# all else fail, return 'english'
return 'english'
@bot = bot
set_language language
end
- attr_reader :language, :locale
+ attr_reader :language
def set_language(language)
- l = language.to_s.gsub(/\s+/,'_').intern
- if Lang2Locale.key?(l)
- @locale = Lang2Locale[l]
- setlocale(@locale)
+ 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])
debug "locale set to #{locale}"
+ rbot_gettext_debug
else
- warn "Unable to set locale, unknown language #{l}"
+ warning "Unable to set locale, unknown language #{language} (#{lang_str})"
end
- file = Config::datadir + "/languages/#{language}.lang"
+ file = Config::datadir + "/languages/#{lang_str}.lang"
unless(FileTest.exist?(file))
- raise "no such language: #{language} (no such file #{file})"
+ raise "no such language: #{lang_str} (no such file #{file})"
end
- @language = language
+ @language = lang_str
@file = file
scan
return if @bot.plugins.nil?