rails_locale_sorter 0.0.8 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  Rails Locale Sorter
2
2
  ===================
3
- This is a small utility to assist in generating language files, so that as you add strings to your locale files you can have them translated quickly.
3
+ This is a small utility to assist in handling your I18n YAML files in a Ruby on Rails project.
4
4
 
5
5
  Installation
6
6
  ============
@@ -8,13 +8,37 @@ Installation
8
8
  $ gem install rails_locale_sorter
9
9
  ```
10
10
 
11
- Generating New Files
12
- ====================
13
- The command tool that comes with the gem will go through your locales directory, and update all the locale files based on your "default" language.
11
+ Creating/Applying Patches
12
+ =========================
13
+ To create a patch, just provide input and output directories, and a "source of truth" locale that will be the template for the other languages.
14
14
 
15
- For instance, if I've added keys to the en.yml file, then the command will create new yaml files for es.yml, zh.yml, etc with blank values set as the new keys.
15
+ ```
16
+ $ locale_patch path/to/locales path/to/output en.yml
17
+ ```
18
+
19
+ The output directory will now contain a list of YAML files containing missing translations.
20
+
21
+ Once the strings have been translated, they can be applied back into your project:
22
+
23
+ ```
24
+ $ locale_apply path/to/translated_patches path/to/locales
25
+ ```
26
+ The patching process also sorts the file's content alphabetically.
27
+
28
+ Defaults
29
+ ========
30
+ These commands default to "locales/", "new-locales/", and "en.yml". Meaning that all you need to do to run through the entire process is:
31
+
32
+ ```
33
+ $ cd my_rails_app/config
34
+ $ locale_patch
35
+ $ locale_apply
36
+ ```
37
+
38
+ Or use the handy, descriptive aliases:
16
39
 
17
- It defaults to english as the base language; you can change it by passing in a parameter.
18
40
  ```
19
- $ locale_generator path/to/locales path/to/output [en.yml]
41
+ $ cd my_rails_app/config
42
+ $ poop
43
+ $ scoop
20
44
  ```
data/bin/locale_apply CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'rails_locale_sorter'
3
3
 
4
- puts "Usage: scoop [source-dir] [out-dir]\n\n\n"
4
+ puts "Usage: locale_apply [source-dir] [out-dir]\n\n\n"
5
5
 
6
6
  source_dir = ARGV[0] || "new-locales"
7
7
  out_dir = ARGV[1] || "locales"
data/bin/locale_patch CHANGED
@@ -1,11 +1,26 @@
1
1
  #!/usr/bin/env ruby
2
+ require 'rubygems'
2
3
  require 'rails_locale_sorter'
4
+ require 'optparse'
3
5
 
4
- puts "Usage: poop [source-path] [out-path] [default-language]\n\n\n"
6
+ options = { :filter => [] }
7
+ optparse = OptionParser.new do |o|
8
+ o.banner = "Usage: locale_patch [source-path] [out-path] [default-language]\n\n\n"
5
9
 
6
- source_dir = ARGV[0] || "locales"
7
- out_dir = ARGV[1] || "new-locales"
8
- truth_locale = ARGV[2] || "en.yml"
10
+ o.separator "Options:"
11
+
12
+ o.on('-i', '--ignore x,y,z', 'Ignore a locale section by name') do |filt|
13
+ options[:filter].concat filt.split(",")
14
+ end
15
+
16
+ puts o
17
+ end
18
+
19
+ optparse.parse!
20
+
21
+ source_dir = ARGV.shift || "locales"
22
+ out_dir = ARGV.shift || "new-locales"
23
+ truth_locale = ARGV.shift || "en.yml"
9
24
 
10
25
  lm = RailsLocaleSorter::LocaleManager.new source_dir, out_dir
11
- lm.create_patches truth_locale
26
+ lm.create_patches truth_locale, options[:filter]
data/bin/poop CHANGED
@@ -1,11 +1,26 @@
1
1
  #!/usr/bin/env ruby
2
+ require 'rubygems'
2
3
  require 'rails_locale_sorter'
4
+ require 'optparse'
3
5
 
4
- puts "Usage: poop [source-path] [out-path] [default-language]\n\n\n"
6
+ options = { :filter => [] }
7
+ optparse = OptionParser.new do |o|
8
+ o.banner = "Usage: locale_patch [source-path] [out-path] [default-language]\n\n\n"
5
9
 
6
- source_dir = ARGV[0] || "locales"
7
- out_dir = ARGV[1] || "new-locales"
8
- truth_locale = ARGV[2] || "en.yml"
10
+ o.separator "Options:"
11
+
12
+ o.on('-i', '--ignore x,y,z', 'Ignore a locale section by name') do |filt|
13
+ options[:filter].concat filt.split(",")
14
+ end
15
+
16
+ puts o
17
+ end
18
+
19
+ optparse.parse!
20
+
21
+ source_dir = ARGV.shift || "locales"
22
+ out_dir = ARGV.shift || "new-locales"
23
+ truth_locale = ARGV.shift || "en.yml"
9
24
 
10
25
  lm = RailsLocaleSorter::LocaleManager.new source_dir, out_dir
11
- lm.create_patches truth_locale
26
+ lm.create_patches truth_locale, options[:filter]
data/bin/scoop CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'rails_locale_sorter'
3
3
 
4
- puts "Usage: scoop [source-dir] [out-dir]\n\n\n"
4
+ puts "Usage: locale_apply [source-dir] [out-dir]\n\n\n"
5
5
 
6
6
  source_dir = ARGV[0] || "new-locales"
7
7
  out_dir = ARGV[1] || "locales"
@@ -60,7 +60,7 @@ module RailsLocaleSorter
60
60
  end
61
61
  end
62
62
 
63
- def create_patches(truth = "en.yml")
63
+ def create_patches(truth = "en.yml", filters = [])
64
64
  translations = YAML::load_file("#{@source}/#{truth}")
65
65
 
66
66
  process_each_file do |hash, file, filename|
@@ -68,7 +68,7 @@ module RailsLocaleSorter
68
68
  hash = list_missing_keys(translations, hash)
69
69
  end
70
70
 
71
- sort_and_write(filename, hash)
71
+ sort_and_write(filename, hash, filters)
72
72
  end
73
73
  end
74
74
 
@@ -108,18 +108,24 @@ module RailsLocaleSorter
108
108
  def process_each_file(&block)
109
109
  # for ya2yaml
110
110
  $KCODE="UTF8"
111
-
111
+
112
+ puts 'Processing...'
113
+
112
114
  with_each_file do |f, filename|
113
- puts "Processing #{filename}..."
115
+ print " #{filename.split('.').first} "
116
+ STDOUT.flush
114
117
  hash = YAML::load(f)
115
118
 
116
119
  block.call(hash, f, filename)
117
120
  end
121
+ puts "Done!"
118
122
  end
119
123
 
120
- def sort_and_write(filename, hash)
124
+ def sort_and_write(filename, hash, filters = [])
121
125
  hash = OrderFact.convert_and_sort(hash, true)
122
126
 
127
+ filters.each { |filt| hash.first.last.delete(filt) }
128
+
123
129
  File.open("#{@out}/#{filename}", "w+") do |fw|
124
130
  fw.puts hash.ya2yaml(:syck_compatible => true)
125
131
  end
@@ -1,3 +1,3 @@
1
1
  module RailsLocaleSorter
2
- VERSION = "0.0.8"
2
+ VERSION = "0.1.0"
3
3
  end
data/spec/rls-spec.rb CHANGED
@@ -44,6 +44,19 @@ describe RailsLocaleSorter::LocaleManager do
44
44
  result.should_not include "both: Both"
45
45
  result.should_not include "exotic: 下一页!След"
46
46
  end
47
+
48
+ it "allows for filtering of sections" do
49
+ @lm.create_patches "src.yml", "date"
50
+
51
+ result = File.open("#{OUT_DIR}/out.yml").read
52
+ result.should include "out:"
53
+ result.should include "text:"
54
+ result.should include "source_only: "
55
+ result.should_not include "date:"
56
+ result.should_not include "src_only: "
57
+ result.should_not include "both: Both"
58
+ result.should_not include "exotic: 下一页!След"
59
+ end
47
60
  end
48
61
 
49
62
  describe "poop and scoop" do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_locale_sorter
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
4
+ hash: 27
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
+ - 1
8
9
  - 0
9
- - 8
10
- version: 0.0.8
10
+ version: 0.1.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Michael Wheeler
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-03-20 00:00:00 -07:00
18
+ date: 2012-03-24 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency