traduction 0.0.1 → 0.0.2

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: 9008e3461cbd3d36f81d7b0e9e756f8302fb61e7
4
- data.tar.gz: adaaa13c0a30bd81ca964025340a336ce372e9b6
3
+ metadata.gz: 629c318e186d7c51213c2de944b13a54e6787b41
4
+ data.tar.gz: a78f2a7d171e7fadf460de5827ad5acd209b7248
5
5
  SHA512:
6
- metadata.gz: 15e40f1133311669790db05048295c046ebd9170441df26e5049d442a959fc125335ef8b7dfe216a24937900cf9a831eddc564500eb50eb3e6d22236fc9aa076
7
- data.tar.gz: fbf7848a8098a682046c0aa0d8e4de25e8c2d3c5c0e64028c8ee452936a4177b3afe98dbcc649c3c47d5f12a33bf8e97f213ea1a3e0403e5cd7784fa4d856bbd
6
+ metadata.gz: f9f2649e1057e6c6b223c4f7ecb166751b97f6d884f5b791aea3f29e34e9e7df529026d42f2beef46fc8aedd135c60e6e525e80f33bc4f6b3019ac3f71ae563f
7
+ data.tar.gz: 3d6f0427004ef38cb1b99e658df588be2d61e9c42e0133f19320b0994286b1017c8fd6c27ad596dad818f77c9354a0d5cc3c4d9b9bee0d56ffe87a4b5c76ff86
@@ -1,4 +1,6 @@
1
1
  require 'git'
2
+ require 'csv'
3
+ require 'active_support'
2
4
 
3
5
  class Hash
4
6
  include Traduction::HashMethods
@@ -12,12 +14,11 @@ namespace :traduction do
12
14
  locale_to_check = args.locale
13
15
  default_locale = Traduction::I18n.load_default_locale
14
16
 
15
- Traduction::I18n.diff_locales(from: [default_locale[:key], File.open(default_locale[:file])],
17
+ puts Traduction::I18n.diff_locales(
18
+ from: [default_locale[:key], File.open(default_locale[:file])],
16
19
  to: [locale_to_check, File.open(Traduction::I18n.locale_file(locale_to_check))],
17
20
  prefix: locale_to_check,
18
- empty_message: 'No untranslated key') do |k,v|
19
- "'#{k}' key missing (original value '#{v}')"
20
- end
21
+ header: ['Untranslated keys', 'original value'])
21
22
  end
22
23
  task :untranslated => :environment
23
24
 
@@ -27,12 +28,11 @@ namespace :traduction do
27
28
  locale_to_check = args.locale
28
29
  default_locale = Traduction::I18n.load_default_locale
29
30
 
30
- Traduction::I18n.diff_locales(from: [locale_to_check, File.open(Traduction::I18n.locale_file(locale_to_check))],
31
+ puts Traduction::I18n.diff_locales(
32
+ from: [locale_to_check, File.open(Traduction::I18n.locale_file(locale_to_check))],
31
33
  to: [default_locale[:key], File.open(default_locale[:file])],
32
34
  prefix: locale_to_check,
33
- empty_message: 'No obsolete key') do |k,v|
34
- "'#{k}' (value \"#{v}\") key is obsolete"
35
- end
35
+ header: ['Obsolete key', 'value'])
36
36
  end
37
37
  task :obsolete => :environment
38
38
 
@@ -46,13 +46,38 @@ namespace :traduction do
46
46
 
47
47
  commit_sha = args.revision
48
48
 
49
- Traduction::I18n.diff_locales(from: [locale_to_check, File.open(Traduction::I18n.locale_file(locale_to_check))],
49
+ puts Traduction::I18n.diff_locales(
50
+ from: [locale_to_check, File.open(Traduction::I18n.locale_file(locale_to_check))],
50
51
  to: [locale_to_check, g.object("#{commit_sha}:#{Traduction::I18n.locale_file(locale_to_check)}").contents],
51
52
  prefix: default_locale[:key],
52
- empty_message: 'No added key') do |k,v|
53
- "'#{k}' key has been added since #{commit_sha} (value '#{v}')"
54
- end
53
+ header: ["Added key since #{commit_sha}", 'value'])
55
54
  end
56
55
  task :added => :environment
57
56
 
57
+ desc "List keys from csv file returned by translators"
58
+ task :import, [:locale, :filename] do |t, args|
59
+ default_locale = Traduction::I18n.load_default_locale
60
+ args.with_defaults(:locale => default_locale[:key], :filename => nil)
61
+ locale_to_check = args.locale
62
+
63
+ keys_to_import = {}
64
+
65
+ csv = CSV.foreach(args.filename, Traduction::CSV_FORMAT) do |row|
66
+ yaml_full = row[0].split('.')
67
+ keys = {}
68
+ yaml_full.reverse.each_with_index do |key, idx|
69
+ if idx == 0
70
+ keys[key] = row[1]
71
+ else
72
+ keys = {key => keys}
73
+ end
74
+ end
75
+ keys_to_import.deep_merge!(keys)
76
+ end
77
+
78
+ origin_content = YAML::load(File.open(Traduction::I18n.locale_file(locale_to_check)))
79
+ puts origin_content.to_hash.deep_merge(keys_to_import).sort_by_key(true).to_yaml
80
+ end
81
+ task :import => :environment
82
+
58
83
  end
@@ -3,6 +3,7 @@ require "traduction/hash_methods"
3
3
  require "traduction/i18n"
4
4
 
5
5
  module Traduction
6
+ CSV_FORMAT = { :col_sep => ';', :force_quotes=>true, :quote_char => '"' }
6
7
  class Engine < Rails::Engine
7
8
  end if defined?(Rails) && Rails::VERSION::MAJOR >= 3
8
9
  end
@@ -38,5 +38,15 @@ module Traduction
38
38
  diff_hash
39
39
  end
40
40
 
41
+ def sort_by_key(recursive=false, &block)
42
+ self.keys.sort(&block).reduce({}) do |seed, key|
43
+ seed[key] = self[key]
44
+ if recursive && seed[key].is_a?(Hash)
45
+ seed[key] = seed[key].sort_by_key(true, &block)
46
+ end
47
+ seed
48
+ end
49
+ end
50
+
41
51
  end
42
52
  end
@@ -7,23 +7,30 @@ module Traduction
7
7
  from_prefix, from_content = options[:from].to_a
8
8
  to_prefix, to_content = options[:to].to_a
9
9
  prefix = options[:prefix]
10
+ header = options[:header]
11
+ format = options[:format] || :csv
10
12
 
11
13
  from = YAML::load(from_content)[from_prefix]
12
14
  to = YAML::load(to_content)[to_prefix]
13
15
 
14
- messages = diff_yaml(from, to, prefix: prefix) do |k,v|
15
- yield k,v
16
- end
16
+ data = diff_yaml(from, to, prefix: prefix)
17
17
 
18
- display_messages(messages, empty_message: 'No added keys')
18
+ generate_csv(data, header: header)
19
19
  end
20
20
 
21
- def display_messages(messages, options = {})
22
- empty_message = options[:empty_message] || 'Nothing found'
23
- if messages.present?
24
- messages.each { |m| puts m }
25
- else
26
- puts empty_message
21
+ def generate_csv(data, options = {})
22
+ header = options[:header] || nil
23
+
24
+ CSV.generate(Traduction::CSV_FORMAT) do |csv|
25
+ unless header.nil?
26
+ case header
27
+ when String
28
+ csv << [header]
29
+ when Array
30
+ csv << header
31
+ end
32
+ end
33
+ data.each { |m| csv << m } if data.present?
27
34
  end
28
35
  end
29
36
 
@@ -40,15 +47,27 @@ module Traduction
40
47
  end
41
48
 
42
49
  def diff_yaml(from, to, options = {}, &block)
43
- messages = []
44
50
  prefix = options[:prefix] || nil
51
+ data = []
52
+
45
53
  from.diff_more(to, :ignore_values => true).flatten_keys(prefix).each do |k,v|
46
- messages << yield(k,v)
54
+ data << [k,v]
47
55
  end
48
- messages
56
+
57
+ data
49
58
  end
50
59
  end
51
60
 
52
61
  extend I18nMethods
53
62
  end
54
63
  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.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -22,4 +22,6 @@ Gem::Specification.new do |spec|
22
22
  spec.add_development_dependency "rake"
23
23
  spec.add_dependency "rake"
24
24
  spec.add_dependency "git"
25
+ spec.add_dependency "fastercsv"
26
+ spec.add_dependency "activesupport"
25
27
  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.1
4
+ version: 0.0.2
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-05-28 00:00:00.000000000 Z
11
+ date: 2013-06-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,6 +66,34 @@ dependencies:
66
66
  - - '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: fastercsv
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: activesupport
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
69
97
  description: Simple tool to ease synchronization of locale files
70
98
  email:
71
99
  - thomas.kienlen@lafourmi-immo.com