]> source.dussan.org Git - redmine.git/commitdiff
Adds a task to duplicate a string in locales.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Thu, 26 Jul 2012 17:32:22 +0000 (17:32 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Thu, 26 Jul 2012 17:32:22 +0000 (17:32 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10080 e93f8b46-1217-0410-a6f0-8f06a7374b81

lib/tasks/locales.rake

index 081acf60a6e1632eb9ceea25f14468611efa2752..8ad0118810a6bc97b567601afe03e4266dc3f5e7 100644 (file)
@@ -118,6 +118,34 @@ END_DESC
     end
   end
 
+  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
+
   desc 'Check parsing yaml by psych library on Ruby 1.9.'
 
   # On Fedora 12 and 13, if libyaml-devel is available,