diff lib/tasks/.svn/text-base/locales.rake.svn-base @ 0:513646585e45

* Import Redmine trunk SVN rev 3859
author Chris Cannam
date Fri, 23 Jul 2010 15:52:44 +0100
parents
children 94944d00e43c
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/tasks/.svn/text-base/locales.rake.svn-base	Fri Jul 23 15:52:44 2010 +0100
@@ -0,0 +1,31 @@
+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'
+    
+    en_strings = YAML.load(File.read(File.join(dir,'en.yml')))['en']
+    
+    files = Dir.glob(File.join(dir,'*.{yaml,yml}'))
+    files.each do |file|
+      puts "Updating file #{file}"
+      file_strings = YAML.load(File.read(file))
+      file_strings = file_strings[file_strings.keys.first]
+    
+      missing_keys = en_strings.keys - file_strings.keys
+      next if missing_keys.empty?
+      
+      puts "==> Missing #{missing_keys.size} keys (#{missing_keys.join(', ')})"
+      lang = File.open(file, 'a')
+      
+      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
+      
+      lang.close
+    end
+  end
+end