module I18nData::FileDataProvider
Constants
- DATA_SEPARATOR
Public Instance Methods
codes(type, language_code)
click to toggle source
# File lib/i18n_data/file_data_provider.rb, line 6 def codes(type, language_code) unless data = read_from_file(cache_file_for(type, language_code)) raise NoTranslationAvailable, "#{type}-#{language_code}" end data end
write_cache(provider)
click to toggle source
# File lib/i18n_data/file_data_provider.rb, line 13 def write_cache(provider) languages = provider.codes(:languages, 'EN').keys + ['zh_CN', 'zh_TW', 'zh_HK','bn_IN','pt_BR'] languages.each do |language_code| [:languages, :countries].each do |type| begin data = provider.send(:codes, type, language_code) write_to_file(data, cache_file_for(type, language_code)) rescue NoTranslationAvailable end end end end
Private Instance Methods
cache_file_for(type,language_code)
click to toggle source
# File lib/i18n_data/file_data_provider.rb, line 46 def cache_file_for(type,language_code) file = "#{type}-#{language_code.upcase}" File.join(File.dirname(__FILE__), '..', '..', 'cache', 'file_data_provider', "#{file}.txt") end
read_from_file(file)
click to toggle source
# File lib/i18n_data/file_data_provider.rb, line 28 def read_from_file(file) return nil unless File.exist?(file) data = {} File.readlines(file).each do |line| code, translation = line.strip.split(DATA_SEPARATOR, 2) data[code] = translation end data end
write_to_file(data, file)
click to toggle source
# File lib/i18n_data/file_data_provider.rb, line 38 def write_to_file(data, file) return if data.empty? FileUtils.mkdir_p File.dirname(file) File.open(file,'w') do |f| f.write data.map{|code, translation| "#{code}#{DATA_SEPARATOR}#{translation}" } * "\n" end end