traduction 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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