You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

gloc.rake 1.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. namespace :gloc do
  2. desc 'Sorts the keys in the lang ymls'
  3. task :sort do
  4. dir = ENV['DIR'] || '{.,vendor/plugins/*}/lang'
  5. puts "Processing directory #{dir}"
  6. files = Dir.glob(File.join(dir,'*.{yaml,yml}'))
  7. puts 'No files found.' if files.empty?
  8. files.each {|file|
  9. puts "Sorting file: #{file}"
  10. header = []
  11. content = IO.readlines(file)
  12. content.each {|line| line.gsub!(/[\s\r\n\t]+$/,'')}
  13. content.delete_if {|line| line==''}
  14. tmp= []
  15. content.each {|x| tmp << x unless tmp.include?(x)}
  16. content= tmp
  17. header << content.shift if !content.empty? && content[0] =~ /^file_charset:/
  18. content.sort!
  19. filebak = "#{file}.bak"
  20. File.rename file, filebak
  21. File.open(file, 'w') {|fout| fout << header.join("\n") << content.join("\n") << "\n"}
  22. File.delete filebak
  23. # Report duplicates
  24. count= {}
  25. content.map {|x| x.gsub(/:.+$/, '') }.each {|x| count[x] ||= 0; count[x] += 1}
  26. count.delete_if {|k,v|v==1}
  27. puts count.keys.sort.map{|x|" WARNING: Duplicate key '#{x}' (#{count[x]} occurances)"}.join("\n") unless count.empty?
  28. }
  29. end
  30. desc 'Updates language files based on em.yml content'
  31. task :update do
  32. dir = ENV['DIR'] || './lang'
  33. en_strings = {}
  34. en_file = File.open(File.join(dir,'en.yml'), 'r')
  35. en_file.each_line {|line| en_strings[$1] = $2 if line =~ %r{^([\w_]+):\s(.+)$} }
  36. en_file.close
  37. files = Dir.glob(File.join(dir,'*.{yaml,yml}'))
  38. files.each do |file|
  39. puts "Updating file #{file}"
  40. keys = IO.readlines(file).collect {|line| $1 if line =~ %r{^([\w_]+):\s(.+)$} }.compact
  41. lang = File.open(file, 'a')
  42. en_strings.each do |key, str|
  43. next if keys.include?(key)
  44. puts "added: #{key}"
  45. lang << "#{key}: #{str}\n"
  46. end
  47. lang.close
  48. end
  49. end
  50. end