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 +4 -4
- data/lib/tasks/traduction.rake +37 -12
- data/lib/traduction.rb +1 -0
- data/lib/traduction/hash_methods.rb +10 -0
- data/lib/traduction/i18n.rb +32 -13
- data/lib/traduction/version.rb +1 -1
- data/traduction.gemspec +2 -0
- metadata +30 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 629c318e186d7c51213c2de944b13a54e6787b41
|
4
|
+
data.tar.gz: a78f2a7d171e7fadf460de5827ad5acd209b7248
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f9f2649e1057e6c6b223c4f7ecb166751b97f6d884f5b791aea3f29e34e9e7df529026d42f2beef46fc8aedd135c60e6e525e80f33bc4f6b3019ac3f71ae563f
|
7
|
+
data.tar.gz: 3d6f0427004ef38cb1b99e658df588be2d61e9c42e0133f19320b0994286b1017c8fd6c27ad596dad818f77c9354a0d5cc3c4d9b9bee0d56ffe87a4b5c76ff86
|
data/lib/tasks/traduction.rake
CHANGED
@@ -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(
|
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
|
-
|
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(
|
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
|
-
|
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(
|
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
|
-
|
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
|
data/lib/traduction.rb
CHANGED
@@ -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
|
data/lib/traduction/i18n.rb
CHANGED
@@ -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
|
-
|
15
|
-
yield k,v
|
16
|
-
end
|
16
|
+
data = diff_yaml(from, to, prefix: prefix)
|
17
17
|
|
18
|
-
|
18
|
+
generate_csv(data, header: header)
|
19
19
|
end
|
20
20
|
|
21
|
-
def
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
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
|
-
|
54
|
+
data << [k,v]
|
47
55
|
end
|
48
|
-
|
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
|
+
#
|
data/lib/traduction/version.rb
CHANGED
data/traduction.gemspec
CHANGED
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.
|
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-
|
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
|