spree_i18n 1.0.0

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.
Files changed (52) hide show
  1. data/README.md +15 -0
  2. data/config/locales/ca.yml +1207 -0
  3. data/config/locales/cs-CZ.yml +1206 -0
  4. data/config/locales/da.yml +1206 -0
  5. data/config/locales/de-CH.yml +1206 -0
  6. data/config/locales/de.yml +1206 -0
  7. data/config/locales/en-AU.yml +1206 -0
  8. data/config/locales/en-GB.yml +1206 -0
  9. data/config/locales/en-IN.yml +1206 -0
  10. data/config/locales/en-NZ.yml +1206 -0
  11. data/config/locales/es-MX.yml +1206 -0
  12. data/config/locales/es.yml +1206 -0
  13. data/config/locales/et.yml +1206 -0
  14. data/config/locales/fa.yml +1209 -0
  15. data/config/locales/fi.yml +1206 -0
  16. data/config/locales/fr.yml +1206 -0
  17. data/config/locales/il.yml +1206 -0
  18. data/config/locales/it.yml +1193 -0
  19. data/config/locales/ja/spree_api.yml +14 -0
  20. data/config/locales/ja/spree_auth.yml +46 -0
  21. data/config/locales/ja/spree_core.rb +16 -0
  22. data/config/locales/ja/spree_core.yml +1071 -0
  23. data/config/locales/ja/spree_dash.yml +5 -0
  24. data/config/locales/ja/spree_promo.yml +88 -0
  25. data/config/locales/ko.yml +1206 -0
  26. data/config/locales/lt.yml +1206 -0
  27. data/config/locales/lv.yml +1206 -0
  28. data/config/locales/nb-NO.yml +1206 -0
  29. data/config/locales/nl-BE.yml +1206 -0
  30. data/config/locales/nl.yml +1134 -0
  31. data/config/locales/pl.yml +1206 -0
  32. data/config/locales/pt-BR.yml +1206 -0
  33. data/config/locales/pt-PT.yml +1206 -0
  34. data/config/locales/ru.yml +1206 -0
  35. data/config/locales/sk.yml +1206 -0
  36. data/config/locales/sl-SI.yml +1206 -0
  37. data/config/locales/sv-SE.yml +1210 -0
  38. data/config/locales/th.yml +1206 -0
  39. data/config/locales/uk.yml +1206 -0
  40. data/config/locales/vn.yml +1206 -0
  41. data/config/locales/zh-CN.yml +1206 -0
  42. data/config/locales/zh-TW.yml +1206 -0
  43. data/default/spree_api.yml +21 -0
  44. data/default/spree_auth.yml +46 -0
  45. data/default/spree_core.yml +1123 -0
  46. data/default/spree_dash.yml +11 -0
  47. data/default/spree_promo.yml +92 -0
  48. data/lib/spree/i18n_utils.rb +50 -0
  49. data/lib/spree_i18n.rb +2 -0
  50. data/lib/spree_i18n/railtie.rb +24 -0
  51. data/lib/tasks/i18n.rake +107 -0
  52. metadata +224 -0
@@ -0,0 +1,11 @@
1
+ en:
2
+ agree_to_terms_of_service: Agree to Terms of Service
3
+ agree_to_privacy_policy: Agree to Privacy Policy
4
+ already_signed_up_for_analytics: You have already signed up for Spree Analytics
5
+ successfully_signed_up_for_analytics: Successfully signed up for Spree Analytics
6
+ analytics_desc_header_1: Spree Analytics
7
+ analytics_desc_header_2: Live analytics integrated into your Spree dashboard
8
+ analytics_desc_list_1: Get live sales information as it happens
9
+ analytics_desc_list_2: Requires only a free Spree account to activate
10
+ analytics_desc_list_3: Absolutely no code to install
11
+ analytics_desc_list_4: It's completely free!
@@ -0,0 +1,92 @@
1
+ ---
2
+ en:
3
+ activerecord:
4
+ attributes:
5
+ spree/promotion:
6
+ advertise: Advertise
7
+ code: Code
8
+ description: Description
9
+ event_name: Event Name
10
+ expires_at: Expires At
11
+ name: Name
12
+ path: Path
13
+ starts_at: Starts At
14
+ usage_limit: Usage Limit
15
+ add_action_of_type: Add action of type
16
+ add_rule_of_type: Add rule of type
17
+ back_to_promotions_list: "Back To Promotions List"
18
+ coupon: Coupon
19
+ coupon_code: Coupon code
20
+ coupon_code_applied: The coupon code was successfully applied to your order.
21
+ editing_promotion: Editing Promotion
22
+ events:
23
+ spree:
24
+ checkout:
25
+ coupon_code_added: Coupon code added
26
+ content:
27
+ visited: Visit static content page
28
+ expiry: Expiry
29
+ free_shipping: Free Shipping
30
+ item_total_rule:
31
+ operators:
32
+ gt: greater than
33
+ gte: greater than or equal to
34
+ landing_page_rule:
35
+ path: Path
36
+ new_promotion: New Promotion
37
+ no_rules_added: No rules added
38
+ percent_per_item: Percent Per Item
39
+ product_rule:
40
+ choose_products: Choose products
41
+ label: "Order must contain %{select} of these products"
42
+ match_any: at least one
43
+ match_all: all
44
+ product_source:
45
+ group: From product group
46
+ manual: Manually choose
47
+ promotion_not_found: The coupon code you entered doesn't exist. Please try again.
48
+ promotion: Promotion
49
+ promotion_action: Promotion Action
50
+ promotion_actions: Actions
51
+ promotion_action_types:
52
+ create_adjustment:
53
+ name: Create adjustment
54
+ description: Creates a promotion credit adjustment on the order
55
+ create_line_items:
56
+ name: Create line items
57
+ description: Populates the cart with the specified quantity of variant
58
+ give_store_credit:
59
+ name: Give store credit
60
+ description: Gives the user store credit of the amount specified
61
+ promotion_form:
62
+ match_policies:
63
+ all: Match all of these rules
64
+ any: Match any of these rules
65
+ promotions: Promotions
66
+ promotions_description: Manage offers and coupons with promotions
67
+ promotion_rule: Promotion Rule
68
+ promotion_rule_types:
69
+ first_order:
70
+ name: First order
71
+ description: "Must be the customer's first order"
72
+ item_total:
73
+ name: Item total
74
+ description: Order total meets these criteria
75
+ landing_page:
76
+ name: Landing Page
77
+ description: Customer must have visited the specified page
78
+ product:
79
+ name: Product(s)
80
+ description: Order includes specified product(s)
81
+ user:
82
+ name: User
83
+ description: Available only to the specified users
84
+ user_logged_in:
85
+ name: User Logged In
86
+ description: Available only to logged in users
87
+ rules: Rules
88
+ spree/order:
89
+ coupon_code: Coupon Code
90
+ user_rule:
91
+ choose_users: Choose users
92
+
@@ -0,0 +1,50 @@
1
+ require 'active_support/core_ext'
2
+
3
+ module Spree
4
+ module I18nUtils
5
+
6
+ # Retrieve comments, translation data in hash form
7
+ def read_file(filename, basename)
8
+ (comments, data) = IO.read(filename).split(/\n#{basename}:\s*\n/) #Add error checking for failed file read?
9
+ return comments, create_hash(data)
10
+ end
11
+ module_function :read_file
12
+
13
+ # Creates hash of translation data
14
+ def create_hash(data)
15
+ words = Hash.new
16
+ return words if !data
17
+ parent = Array.new
18
+ previous_key = 'base'
19
+ data.split("\n").each do |w|
20
+ next if w.strip.blank? || w.strip[0]=='#'
21
+ (key, value) = w.split(':', 2)
22
+ value ||= ''
23
+ shift = (key =~ /\w/)/2 - parent.size #Determine level of current key in comparison to parent array
24
+ key = key.sub(/^\s+/,'')
25
+ parent << previous_key if shift > 0 #If key is child of previous key, add previous key as parent
26
+ (shift*-1).times { parent.pop } if shift < 0 #If key is not related to previous key, remove parent keys
27
+ previous_key = key #Track key in case next key is child of this key
28
+ words[parent.join(':')+':'+key] = value
29
+ end
30
+ words
31
+ end
32
+ module_function :create_hash
33
+
34
+ # Writes to file from translation data hash structure
35
+ def write_file(filename,basename,comments,words,comment_values=true, fallback_values={})
36
+ File.open(filename, "w") do |log|
37
+ log.puts(comments+"\n"+basename+": \n")
38
+ words.sort.each do |k,v|
39
+ keys = k.split(':')
40
+ (keys.size-1).times { keys[keys.size-1] = ' ' + keys[keys.size-1] } #Add indentation for children keys
41
+ value = v.strip
42
+ value = ("#" + value) if comment_values and not value.blank?
43
+ log.puts "#{keys[keys.size-1]}: #{value}\n"
44
+ end
45
+ end
46
+ end
47
+ module_function :write_file
48
+
49
+ end
50
+ end
@@ -0,0 +1,2 @@
1
+ require 'spree_core'
2
+ require 'spree_i18n/railtie'
@@ -0,0 +1,24 @@
1
+ module SpreeI18n
2
+ class Railtie < ::Rails::Railtie #:nodoc:
3
+ initializer 'spree-i18n' do |app|
4
+ SpreeI18n::Railtie.instance_eval do
5
+ pattern = pattern_from app.config.i18n.available_locales
6
+
7
+ add("config/locales/#{pattern}/*.{rb,yml}")
8
+ add("config/locales/#{pattern}.{rb,yml}")
9
+ end
10
+ end
11
+
12
+ protected
13
+
14
+ def self.add(pattern)
15
+ files = Dir[File.join(File.dirname(__FILE__), '../..', pattern)]
16
+ I18n.load_path.concat(files)
17
+ end
18
+
19
+ def self.pattern_from(args)
20
+ array = Array(args || [])
21
+ array.blank? ? '*' : "{#{array.join ','}}"
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,107 @@
1
+ require 'active_support'
2
+ require 'spree/i18n_utils'
3
+
4
+ namespace :spree_i18n do
5
+
6
+ SPREE_MODULES = [ 'api', 'core', 'dash', 'promo' ].freeze
7
+
8
+ desc "Update by retrieving the latest Spree locale files"
9
+ task :update_default do
10
+ puts "Fetching latest Spree locale file to #{locales_dir}"
11
+ require "uri"; require "net/https"
12
+ SPREE_MODULES.each do |mod|
13
+ location = "https://raw.github.com/spree/spree/master/#{mod}/config/locales/en.yml"
14
+ begin
15
+ uri = URI.parse(location)
16
+ http = Net::HTTP.new(uri.host, uri.port)
17
+ http.use_ssl = true
18
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
19
+ puts "Getting from #{uri}"
20
+ request = Net::HTTP::Get.new(uri.request_uri)
21
+ case response = http.request(request)
22
+ when Net::HTTPRedirection then location = response['location']
23
+ when Net::HTTPClientError, Net::HTTPServerError then response.error!
24
+ end
25
+ end until Net::HTTPSuccess === response
26
+
27
+ File.open("#{default_dir}/spree_#{mod}.yml", 'w') { |file| file << response.body }
28
+ end
29
+ end
30
+
31
+ desc "Syncronize translation files with latest en (adds comments with fallback en value)"
32
+ task :sync do
33
+ puts "Starting syncronization..."
34
+ words = composite_keys
35
+ Dir["#{locales_dir}/*.yml"].each do |filename|
36
+ basename = File.basename(filename, '.yml')
37
+ (comments, other) = Spree::I18nUtils.read_file(filename, basename)
38
+ words.each { |k,v| other[k] ||= "#{words[k]}" } #Initializing hash variable as en fallback if it does not exist
39
+ other.delete_if { |k,v| !words[k] } #Remove if not defined in en locale
40
+ Spree::I18nUtils.write_file(filename, basename, comments, other, false)
41
+ end
42
+ end
43
+
44
+ desc "Create a new translation file based on en"
45
+ task :new do
46
+ unless locale = env_locale
47
+ print "You must provide a valid LOCALE value, for example:\nrake spree:i18:new LOCALE=pt-PT\n"
48
+ exit
49
+ end
50
+
51
+ Spree::I18nUtils.write_file "#{locales_dir}/#{locale}.yml", "#{locale}", '---', composite_keys
52
+ print "New locale generated.\n"
53
+ print "Don't forget to also download the rails translation from: http://github.com/svenfuchs/rails-i18n/tree/master/rails/locale\n"
54
+ end
55
+
56
+ desc "Show translation status for all supported locales other than en."
57
+ task :stats do
58
+ words = composite_keys
59
+ words.delete_if { |k,v| !v.match(/\w+/) or v.match(/^#/) }
60
+
61
+ results = ActiveSupport::OrderedHash.new
62
+ locale = ENV['LOCALE'] || ''
63
+ Dir["#{locales_dir}/*.yml"].each do |filename|
64
+ # next unless filename.match('_spree')
65
+ basename = File.basename(filename, '.yml')
66
+
67
+ # next if basename.starts_with?('en')
68
+ (comments, other) = Spree::I18nUtils.read_file(filename, basename)
69
+ other.delete_if { |k,v| !words[k] } #Remove if not defined in en.yml
70
+ other.delete_if { |k,v| !v.match(/\w+/) or v.match(/#/) }
71
+
72
+ translation_status = 100 * (other.values.size / words.values.size.to_f)
73
+ results[basename] = translation_status
74
+ end
75
+ puts "Translation status:"
76
+ results.sort.each do |basename, translation_status|
77
+ puts "#{basename}\t- #{sprintf('%.1f', translation_status)}%"
78
+ end
79
+ puts
80
+ end
81
+
82
+ # Returns a composite hash of all relevant translation keys from each of the gems
83
+ def composite_keys
84
+ Hash.new.tap do |hash|
85
+ SPREE_MODULES.each do |mod|
86
+ hash.merge! get_translation_keys("spree_#{mod}")
87
+ end
88
+ end
89
+ end
90
+
91
+ def get_translation_keys(gem_name)
92
+ (dummy_comments, words) = Spree::I18nUtils.read_file(File.dirname(__FILE__) + "/../../default/#{gem_name}.yml", "en")
93
+ words
94
+ end
95
+
96
+ def locales_dir
97
+ File.join File.dirname(__FILE__), "/../../config/locales"
98
+ end
99
+
100
+ def default_dir
101
+ File.join File.dirname(__FILE__), "/../../default"
102
+ end
103
+
104
+ def env_locale
105
+ ENV['LOCALE'].presence
106
+ end
107
+ end
metadata ADDED
@@ -0,0 +1,224 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: spree_i18n
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Sean Schofield
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-11-18 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: spree
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '1.1'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '1.1'
30
+ - !ruby/object:Gem::Dependency
31
+ name: i18n
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '0.5'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '0.5'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rails
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: 3.0.0
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 3.0.0
62
+ - !ruby/object:Gem::Dependency
63
+ name: rspec-rails
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: 2.7.0
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: 2.7.0
78
+ - !ruby/object:Gem::Dependency
79
+ name: i18n-spec
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0.2'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0.2'
94
+ - !ruby/object:Gem::Dependency
95
+ name: spork
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: 1.0rc
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 1.0rc
110
+ - !ruby/object:Gem::Dependency
111
+ name: sqlite3
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: 1.3.6
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: 1.3.6
126
+ - !ruby/object:Gem::Dependency
127
+ name: i18n-spec
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ description: Provides locale information for use in Spree.
143
+ email: sean@railsdog.com
144
+ executables: []
145
+ extensions: []
146
+ extra_rdoc_files: []
147
+ files:
148
+ - README.md
149
+ - default/spree_api.yml
150
+ - default/spree_auth.yml
151
+ - default/spree_core.yml
152
+ - default/spree_dash.yml
153
+ - default/spree_promo.yml
154
+ - config/locales/ca.yml
155
+ - config/locales/cs-CZ.yml
156
+ - config/locales/da.yml
157
+ - config/locales/de-CH.yml
158
+ - config/locales/de.yml
159
+ - config/locales/en-AU.yml
160
+ - config/locales/en-GB.yml
161
+ - config/locales/en-IN.yml
162
+ - config/locales/en-NZ.yml
163
+ - config/locales/es-MX.yml
164
+ - config/locales/es.yml
165
+ - config/locales/et.yml
166
+ - config/locales/fa.yml
167
+ - config/locales/fi.yml
168
+ - config/locales/fr.yml
169
+ - config/locales/il.yml
170
+ - config/locales/it.yml
171
+ - config/locales/ja/spree_api.yml
172
+ - config/locales/ja/spree_auth.yml
173
+ - config/locales/ja/spree_core.rb
174
+ - config/locales/ja/spree_core.yml
175
+ - config/locales/ja/spree_dash.yml
176
+ - config/locales/ja/spree_promo.yml
177
+ - config/locales/ko.yml
178
+ - config/locales/lt.yml
179
+ - config/locales/lv.yml
180
+ - config/locales/nb-NO.yml
181
+ - config/locales/nl-BE.yml
182
+ - config/locales/nl.yml
183
+ - config/locales/pl.yml
184
+ - config/locales/pt-BR.yml
185
+ - config/locales/pt-PT.yml
186
+ - config/locales/ru.yml
187
+ - config/locales/sk.yml
188
+ - config/locales/sl-SI.yml
189
+ - config/locales/sv-SE.yml
190
+ - config/locales/th.yml
191
+ - config/locales/uk.yml
192
+ - config/locales/vn.yml
193
+ - config/locales/zh-CN.yml
194
+ - config/locales/zh-TW.yml
195
+ - lib/spree/i18n_utils.rb
196
+ - lib/spree_i18n/railtie.rb
197
+ - lib/spree_i18n.rb
198
+ - lib/tasks/i18n.rake
199
+ homepage: http://spreecommerce.com
200
+ licenses: []
201
+ post_install_message:
202
+ rdoc_options: []
203
+ require_paths:
204
+ - lib
205
+ required_ruby_version: !ruby/object:Gem::Requirement
206
+ none: false
207
+ requirements:
208
+ - - ! '>='
209
+ - !ruby/object:Gem::Version
210
+ version: 1.8.7
211
+ required_rubygems_version: !ruby/object:Gem::Requirement
212
+ none: false
213
+ requirements:
214
+ - - ! '>='
215
+ - !ruby/object:Gem::Version
216
+ version: '0'
217
+ requirements:
218
+ - none
219
+ rubyforge_project: spree_i18n
220
+ rubygems_version: 1.8.24
221
+ signing_key:
222
+ specification_version: 3
223
+ summary: Provides locale information for use in Spree.
224
+ test_files: []