Merged r4937 from trunk.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.1-stable@5017 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang 2011-03-06 13:08:02 +00:00
parent 1e01711e3d
commit c6693fc78b
1 changed files with 27 additions and 0 deletions

View File

@ -1,3 +1,10 @@
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
namespace :locales do namespace :locales do
desc 'Updates language files based on en.yml content (only works for new top level keys).' desc 'Updates language files based on en.yml content (only works for new top level keys).'
task :update do task :update do
@ -29,6 +36,26 @@ namespace :locales do
end end
end end
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}'))
files.each do |file|
file_strings = YAML.load(File.read(file))
file_strings = file_strings[file_strings.keys.first]
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
desc <<-END_DESC 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). Removes a translation string from all locale file (only works for top-level childless non-multiline keys, probably doesn\'t work on windows).