Sha256: 0584b4e7f2fab45aadca64b27a08ea6eae9c08c269d7e85fb21e734fe3b40d2c
Contents?: true
Size: 1.73 KB
Versions: 1
Compression:
Stored size: 1.73 KB
Contents
class Knj::Gettext_threadded attr_reader :langs, :args def initialize(args = {}) @args = args @langs = {} @dirs = [] load_dir(@args["dir"]) if @args["dir"] end def load_dir(dir) @dirs << dir check_folders = ["LC_MESSAGES", "LC_ALL"] Dir.new(dir).each do |file| fn = "#{dir}/#{file}" if File.directory?(fn) and file.match(/^[a-z]{2}_[A-Z]{2}$/) @langs[file] = {} if !@langs[file] check_folders.each do |fname| fpath = "#{dir}/#{file}/#{fname}" if File.exists?(fpath) and File.directory?(fpath) Dir.new(fpath).each do |pofile| if pofile.match(/\.po$/) pofn = "#{dir}/#{file}/#{fname}/#{pofile}" cont = File.read(pofn) cont.scan(/msgid\s+\"(.+)\"\nmsgstr\s+\"(.+)\"\n\n/) do |match| @langs[file][match[0]] = match[1] end end end end end end end end def trans(locale, str) locale = locale.to_s str = str.to_s if !@langs.key?(locale) raise "Locale was not found: '#{locale}' in '#{@langs.keys.join(", ")}'." end return str if !@langs[locale].key?(str) return @langs[locale][str] end #This function can be used to make your string be recognized by gettext tools. def gettext(str, locale) return trans(locale, str) end #Returns a hash with the language ID string as key and the language human-readable-title as value. def lang_opts langs = {} @langs.keys.sort.each do |lang| title = nil @dirs.each do |dir| title_file_path = "#{dir}/#{lang}/title.txt" if File.exists?(title_file_path) title = File.read(title_file_path).to_s.strip else title = lang.to_s.strip end break if title end langs[lang] = title end return langs end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
knjrbfw-0.0.8 | lib/knj/gettext_threadded.rb |