##// END OF EJS Templates
fix typo at test/unit/helpers/application_helper_test.rb...
fix typo at test/unit/helpers/application_helper_test.rb git-svn-id: http://svn.redmine.org/redmine/trunk@13093 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r10866:3218b8204c09
r12818:a581f35dff23
Show More
locales.rake
183 lines | 6.0 KiB | text/x-ruby | RubyLexer
Jean-Philippe Lang
Adds tasks for locales maintenance....
r4817 desc 'Updates and checks locales against en.yml'
task :locales do
%w(locales:update locales:check_interpolation).collect do |task|
Rake::Task[task].invoke
end
end
Jean-Philippe Lang
Adds locales:update task as a replacement for gloc:update....
r2438 namespace :locales do
desc 'Updates language files based on en.yml content (only works for new top level keys).'
task :update do
dir = ENV['DIR'] || './config/locales'
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/locales.rake....
r5604
Jean-Philippe Lang
Adds locales:update task as a replacement for gloc:update....
r2438 en_strings = YAML.load(File.read(File.join(dir,'en.yml')))['en']
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/locales.rake....
r5604
Jean-Philippe Lang
Process all translations files....
r2439 files = Dir.glob(File.join(dir,'*.{yaml,yml}'))
Toshi MARUYAMA
sort files in locales:update rake task...
r9738 files.sort.each do |file|
Jean-Philippe Lang
Adds locales:update task as a replacement for gloc:update....
r2438 puts "Updating file #{file}"
file_strings = YAML.load(File.read(file))
file_strings = file_strings[file_strings.keys.first]
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/locales.rake....
r5604
Jean-Philippe Lang
Adds locales:update task as a replacement for gloc:update....
r2438 missing_keys = en_strings.keys - file_strings.keys
next if missing_keys.empty?
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/locales.rake....
r5604
Jean-Philippe Lang
Adds locales:update task as a replacement for gloc:update....
r2438 puts "==> Missing #{missing_keys.size} keys (#{missing_keys.join(', ')})"
lang = File.open(file, 'a')
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/locales.rake....
r5604
Jean-Philippe Lang
Adds locales:update task as a replacement for gloc:update....
r2438 missing_keys.each do |key|
{key => en_strings[key]}.to_yaml.each_line do |line|
next if line =~ /^---/ || line.empty?
puts " #{line}"
lang << " #{line}"
end
end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/locales.rake....
r5604
Jean-Philippe Lang
Adds locales:update task as a replacement for gloc:update....
r2438 lang.close
end
end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/locales.rake....
r5604
Jean-Philippe Lang
Adds tasks for locales maintenance....
r4817 desc 'Checks interpolation arguments in locals against en.yml'
task :check_interpolation do
dir = ENV['DIR'] || './config/locales'
en_strings = YAML.load(File.read(File.join(dir,'en.yml')))['en']
files = Dir.glob(File.join(dir,'*.{yaml,yml}'))
Toshi MARUYAMA
sort files in locales:check_interpolation and locales:check_parsing_by_psych rake tasks...
r9732 files.sort.each do |file|
puts "parsing #{file}..."
Jean-Philippe Lang
Check that locale is well formed....
r10866 file_strings = YAML.load_file(file)
unless file_strings.is_a?(Hash)
puts "#{file}: content is not a Hash (#{file_strings.class.name})"
next
end
unless file_strings.keys.size == 1
puts "#{file}: content has multiple keys (#{file_strings.keys.size})"
next
end
Jean-Philippe Lang
Adds tasks for locales maintenance....
r4817 file_strings = file_strings[file_strings.keys.first]
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/locales.rake....
r5604
Jean-Philippe Lang
Adds tasks for locales maintenance....
r4817 file_strings.each do |key, string|
next unless string.is_a?(String)
string.scan /%\{\w+\}/ do |match|
unless en_strings[key].nil? || en_strings[key].include?(match)
puts "#{file}: #{key} uses #{match} not found in en.yml"
end
end
end
end
end
Eric Davis
Add rake tasks to add and remove keys in the locales. #6548...
r4140
desc <<-END_DESC
Removes a translation string from all locale file (only works for top-level childless non-multiline keys, probably doesn\'t work on windows).
Toshi MARUYAMA
add description that locales:remove_key rake task does not work on Ruby 1.8.6....
r6514 This task does not work on Ruby 1.8.6.
You need to use Ruby 1.8.7 or later.
Eric Davis
Add rake tasks to add and remove keys in the locales. #6548...
r4140 Options:
key=key_1,key_2 Comma-separated list of keys to delete
skip=en,de Comma-separated list of locale files to ignore (filename without extension)
END_DESC
task :remove_key do
dir = ENV['DIR'] || './config/locales'
files = Dir.glob(File.join(dir,'*.yml'))
skips = ENV['skip'] ? Regexp.union(ENV['skip'].split(',')) : nil
deletes = ENV['key'] ? Regexp.union(ENV['key'].split(',')) : nil
# Ignore multiline keys (begin with | or >) and keys with children (nothing meaningful after :)
delete_regex = /\A #{deletes}: +[^\|>\s#].*\z/
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/locales.rake....
r5604
Eric Davis
Add rake tasks to add and remove keys in the locales. #6548...
r4140 files.each do |path|
# Skip certain locales
(puts "Skipping #{path}"; next) if File.basename(path, ".yml") =~ skips
puts "Deleting selected keys from #{path}"
orig_content = File.open(path, 'r') {|file| file.read}
File.open(path, 'w') {|file| orig_content.each_line {|line| file.puts line unless line.chomp =~ delete_regex}}
end
end
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/locales.rake....
r5604
Eric Davis
Add rake tasks to add and remove keys in the locales. #6548...
r4140 desc <<-END_DESC
Adds a new top-level translation string to all locale file (only works for childless keys, probably doesn\'t work on windows, doesn't check for duplicates).
Options:
key="some_key=foo"
key1="another_key=bar"
key_fb="foo=bar" Keys to add in the form key=value, every option of the form key[,\\d,_*] will be recognised
skip=en,de Comma-separated list of locale files to ignore (filename without extension)
END_DESC
task :add_key do
dir = ENV['DIR'] || './config/locales'
files = Dir.glob(File.join(dir,'*.yml'))
skips = ENV['skip'] ? Regexp.union(ENV['skip'].split(',')) : nil
keys_regex = /\Akey(\d+|_.+)?\z/
adds = ENV.reject {|k,v| !(k =~ keys_regex)}.values.collect {|v| Array.new v.split("=",2)}
key_list = adds.collect {|v| v[0]}.join(", ")
files.each do |path|
# Skip certain locales
(puts "Skipping #{path}"; next) if File.basename(path, ".yml") =~ skips
# TODO: Check for dupliate/existing keys
puts "Adding #{key_list} to #{path}"
File.open(path, 'a') do |file|
adds.each do |kv|
Hash[*kv].to_yaml.each_line do |line|
file.puts " #{line}" unless (line =~ /^---/ || line.empty?)
end
end
end
end
end
Toshi MARUYAMA
Ruby 1.9: add rake task to check parsing yaml by psych library (#8847, #4050)....
r6527
Jean-Philippe Lang
Adds a task to duplicate a string in locales....
r9897 desc 'Duplicates a key. Exemple rake locales:dup key=foo new_key=bar'
task :dup do
dir = ENV['DIR'] || './config/locales'
files = Dir.glob(File.join(dir,'*.yml'))
skips = ENV['skip'] ? Regexp.union(ENV['skip'].split(',')) : nil
key = ENV['key']
new_key = ENV['new_key']
abort "Missing key argument" if key.blank?
abort "Missing new_key argument" if new_key.blank?
files.each do |path|
# Skip certain locales
(puts "Skipping #{path}"; next) if File.basename(path, ".yml") =~ skips
puts "Adding #{new_key} to #{path}"
strings = File.read(path)
unless strings =~ /^( #{key}: .+)$/
puts "Key not found in #{path}"
next
end
line = $1
File.open(path, 'a') do |file|
file.puts(line.sub(key, new_key))
end
end
end
Toshi MARUYAMA
Ruby 1.9: add rake task to check parsing yaml by psych library (#8847, #4050)....
r6527 desc 'Check parsing yaml by psych library on Ruby 1.9.'
# On Fedora 12 and 13, if libyaml-devel is available,
# in case of installing by rvm,
# Ruby 1.9 default yaml library is psych.
Toshi MARUYAMA
Ruby 1.9: fix typo of rake task name to check parsing yaml by psych library (#8847, #4050)....
r6529 task :check_parsing_by_psych do
Toshi MARUYAMA
Ruby 1.9: add rake task to check parsing yaml by psych library (#8847, #4050)....
r6527 begin
require 'psych'
parser = Psych::Parser.new
dir = ENV['DIR'] || './config/locales'
files = Dir.glob(File.join(dir,'*.yml'))
Toshi MARUYAMA
sort files in locales:check_interpolation and locales:check_parsing_by_psych rake tasks...
r9732 files.sort.each do |filename|
Toshi MARUYAMA
Ruby 1.9: add rake task to check parsing yaml by psych library (#8847, #4050)....
r6527 next if File.directory? filename
Toshi MARUYAMA
remove trailing white-spaces from lib/tasks/locales.rake...
r6955 puts "parsing #{filename}..."
Toshi MARUYAMA
Ruby 1.9: add rake task to check parsing yaml by psych library (#8847, #4050)....
r6527 begin
parser.parse File.open(filename)
rescue Exception => e1
puts(e1.message)
puts("")
end
end
rescue Exception => e
puts(e.message)
end
end
Jean-Philippe Lang
Adds locales:update task as a replacement for gloc:update....
r2438 end