spree_i18n 1.0.0

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