traduction 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 629c318e186d7c51213c2de944b13a54e6787b41
4
- data.tar.gz: a78f2a7d171e7fadf460de5827ad5acd209b7248
3
+ metadata.gz: 7896ef7c18bc6753af115c08c21d08853872306f
4
+ data.tar.gz: 16a30f34948b80f751b9f99fd270fef7fbe1c0ac
5
5
  SHA512:
6
- metadata.gz: f9f2649e1057e6c6b223c4f7ecb166751b97f6d884f5b791aea3f29e34e9e7df529026d42f2beef46fc8aedd135c60e6e525e80f33bc4f6b3019ac3f71ae563f
7
- data.tar.gz: 3d6f0427004ef38cb1b99e658df588be2d61e9c42e0133f19320b0994286b1017c8fd6c27ad596dad818f77c9354a0d5cc3c4d9b9bee0d56ffe87a4b5c76ff86
6
+ metadata.gz: 84101da38daa7cf6f464d9358e114ba1d53c6a5f0565e63082d2c13dca4ae23c5df365ed6b09e832c5e2f30a5307f85d5444d0cd05d4df823f199aab8c846411
7
+ data.tar.gz: a52079aaff217cd3e19432757122c76cb8bee75e39618b1912f682621019a92a9466e91c895f6ade2189030a3be8e5d3247129b510b426b8fce65a0fa53d896e
data/README.md CHANGED
@@ -24,14 +24,19 @@ Using Rake tasks, you may list :
24
24
  - obsolete changes in a specific locale, compared to default locale
25
25
  - untranslated changes in a specific locale, still compared to default locale
26
26
  - added keys since an old git commit
27
+ - all keys including modifications from a file (the file you might get back from translators)
28
+
29
+ Format used for import/output is CSV having ';' as field separator and '"' as text quote char.
27
30
 
28
31
  Rake tasks are prefixed by 'traduction' namespace :
29
32
 
30
33
  ```
31
34
  $ rake -T | grep 'traduction'
32
- rake traduction:added[locale,revision] # Show added keys for locale LOCALE since git revision
33
- rake traduction:obsolete[locale] # Show obsolete keys for locale LOCALE
34
- rake traduction:untranslated[locale] # Show untranslated keys for locale LOCALE
35
+ rake traduction:added[locale,revision] # Show added keys for locale LOCALE since git revision
36
+ rake traduction:all[locale] # Show all keys for locale LOCALE
37
+ rake traduction:import[locale,filename] # List keys from csv file returned by translators
38
+ rake traduction:obsolete[locale] # Show obsolete keys for locale LOCALE
39
+ rake traduction:untranslated[locale] # Show untranslated keys for locale LOCALE
35
40
  ```
36
41
 
37
42
  If you do not specify locale, Traduction will use `I18n.default_locale`.
@@ -8,6 +8,22 @@ end
8
8
 
9
9
  namespace :traduction do
10
10
 
11
+ desc "Show all keys for locale LOCALE"
12
+ task :all, [:locale] do |t, args|
13
+ args.with_defaults(:locale => 'es')
14
+ locale_to_check = args.locale
15
+ default_locale = Traduction::I18n.load_default_locale
16
+
17
+ puts Traduction::I18n.diff_all(
18
+ from: [default_locale[:key], File.open(default_locale[:file])],
19
+ to: [locale_to_check, File.open(Traduction::I18n.locale_file(locale_to_check))],
20
+ prefix: locale_to_check,
21
+ header: ['All keys', 'original value', 'translated value'],
22
+ dont_ignore_values: true
23
+ )
24
+ end
25
+ task :all => :environment
26
+
11
27
  desc "Show untranslated keys for locale LOCALE"
12
28
  task :untranslated, [:locale] do |t, args|
13
29
  args.with_defaults(:locale => 'es')
@@ -20,6 +20,25 @@ module Traduction
20
20
  ret
21
21
  end
22
22
 
23
+ def merge_hash(hash, options = {})
24
+ ret = {}
25
+ skip_remaining_hash = options[:skip_remaining_hash] || false
26
+
27
+ remaining_hash = hash
28
+ self.each do |k,v|
29
+ ret[k] = [v, hash[k]]
30
+ remaining_hash.delete(k) unless skip_remaining_hash
31
+ end
32
+
33
+ unless skip_remaining_hash
34
+ remaining_hash.each do |k,v|
35
+ ret[k] = [self[k], v]
36
+ end
37
+ end
38
+
39
+ ret
40
+ end
41
+
23
42
  def diff_more(other_hash, options = {})
24
43
  ignore_values = options[:ignore_values] || false
25
44
 
@@ -3,23 +3,39 @@ require 'yaml'
3
3
  module Traduction
4
4
  module I18n
5
5
  module I18nMethods
6
- def diff_locales(options = {})
6
+ def diff_method(options = {}, &block)
7
7
  from_prefix, from_content = options[:from].to_a
8
8
  to_prefix, to_content = options[:to].to_a
9
- prefix = options[:prefix]
10
9
  header = options[:header]
11
10
  format = options[:format] || :csv
11
+ flatten = options[:flatten] || false
12
12
 
13
13
  from = YAML::load(from_content)[from_prefix]
14
14
  to = YAML::load(to_content)[to_prefix]
15
15
 
16
- data = diff_yaml(from, to, prefix: prefix)
16
+ data = yield from, to
17
+
18
+ generate_csv(data, header: header, flatten: flatten)
19
+ end
17
20
 
18
- generate_csv(data, header: header)
21
+ def diff_all(options = {})
22
+ diff_method(options.merge(flatten: true)) do |from, to|
23
+ from.flatten_keys.merge_hash(to.flatten_keys)
24
+ end
25
+ end
26
+
27
+ def diff_locales(options = {})
28
+ prefix = options[:prefix]
29
+ dont_ignore_values = options[:dont_ignore_values] || false
30
+
31
+ diff_method(options) do |from, to|
32
+ diff_yaml(from, to, prefix: prefix, dont_ignore_values: dont_ignore_values)
33
+ end
19
34
  end
20
35
 
21
36
  def generate_csv(data, options = {})
22
37
  header = options[:header] || nil
38
+ flatten = options[:flatten] || false
23
39
 
24
40
  CSV.generate(Traduction::CSV_FORMAT) do |csv|
25
41
  unless header.nil?
@@ -30,7 +46,8 @@ module Traduction
30
46
  csv << header
31
47
  end
32
48
  end
33
- data.each { |m| csv << m } if data.present?
49
+ #binding.pry
50
+ data.each { |m| csv << (flatten ? m.flatten : m) } if data.present?
34
51
  end
35
52
  end
36
53
 
@@ -48,9 +65,10 @@ module Traduction
48
65
 
49
66
  def diff_yaml(from, to, options = {}, &block)
50
67
  prefix = options[:prefix] || nil
68
+ ignore_values = !(options[:dont_ignore_values] || false)
51
69
  data = []
52
70
 
53
- from.diff_more(to, :ignore_values => true).flatten_keys(prefix).each do |k,v|
71
+ from.diff_more(to, :ignore_values => ignore_values).flatten_keys(prefix).each do |k,v|
54
72
  data << [k,v]
55
73
  end
56
74
 
@@ -61,13 +79,3 @@ module Traduction
61
79
  extend I18nMethods
62
80
  end
63
81
  end
64
- #
65
- #
66
- #text: (CSV.generate do |csv|
67
- # 63 csv << @header
68
- # 64 @ragreements.each do |o|
69
- # 65 csv << o.values.map { |l| l.is_a?(Array) ? l.join("\n") : l }
70
- # 66 end
71
- # 67 end)
72
- #
73
- #
@@ -1,3 +1,3 @@
1
1
  module Traduction
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: traduction
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Kienlen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-06-20 00:00:00.000000000 Z
11
+ date: 2013-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -132,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
132
132
  version: '0'
133
133
  requirements: []
134
134
  rubyforge_project:
135
- rubygems_version: 2.0.0
135
+ rubygems_version: 2.0.3
136
136
  signing_key:
137
137
  specification_version: 4
138
138
  summary: Help maintaining Rails translation files