Adds a branch for unlimited project hierarchy.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/work@2148 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
namespace :gloc do
|
||||
desc 'Sorts the keys in the lang ymls'
|
||||
task :sort do
|
||||
dir = ENV['DIR'] || '{.,vendor/plugins/*}/lang'
|
||||
puts "Processing directory #{dir}"
|
||||
files = Dir.glob(File.join(dir,'*.{yaml,yml}'))
|
||||
puts 'No files found.' if files.empty?
|
||||
files.each {|file|
|
||||
puts "Sorting file: #{file}"
|
||||
header = []
|
||||
content = IO.readlines(file)
|
||||
content.each {|line| line.gsub!(/[\s\r\n\t]+$/,'')}
|
||||
content.delete_if {|line| line==''}
|
||||
tmp= []
|
||||
content.each {|x| tmp << x unless tmp.include?(x)}
|
||||
content= tmp
|
||||
header << content.shift if !content.empty? && content[0] =~ /^file_charset:/
|
||||
content.sort!
|
||||
filebak = "#{file}.bak"
|
||||
File.rename file, filebak
|
||||
File.open(file, 'w') {|fout| fout << header.join("\n") << content.join("\n") << "\n"}
|
||||
File.delete filebak
|
||||
# Report duplicates
|
||||
count= {}
|
||||
content.map {|x| x.gsub(/:.+$/, '') }.each {|x| count[x] ||= 0; count[x] += 1}
|
||||
count.delete_if {|k,v|v==1}
|
||||
puts count.keys.sort.map{|x|" WARNING: Duplicate key '#{x}' (#{count[x]} occurances)"}.join("\n") unless count.empty?
|
||||
}
|
||||
end
|
||||
|
||||
desc 'Updates language files based on en.yml content'
|
||||
task :update do
|
||||
dir = ENV['DIR'] || './lang'
|
||||
|
||||
en_strings = {}
|
||||
en_file = File.open(File.join(dir,'en.yml'), 'r')
|
||||
en_file.each_line {|line| en_strings[$1] = $2 if line =~ %r{^([\w_]+):\s(.+)$} }
|
||||
en_file.close
|
||||
|
||||
files = Dir.glob(File.join(dir,'*.{yaml,yml}'))
|
||||
files.each do |file|
|
||||
puts "Updating file #{file}"
|
||||
keys = IO.readlines(file).collect {|line| $1 if line =~ %r{^([\w_]+):\s(.+)$} }.compact
|
||||
lang = File.open(file, 'a')
|
||||
en_strings.each do |key, str|
|
||||
next if keys.include?(key)
|
||||
puts "added: #{key}"
|
||||
lang << "#{key}: #{str}\n"
|
||||
end
|
||||
lang.close
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user