Adds tasks for locales maintenance.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4937 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang 2011-02-23 18:03:33 +00:00
parent ce84bb1a01
commit f27637b07c
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
@ -28,6 +35,26 @@ namespace :locales do
lang.close lang.close
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).