spree_core 4.2.0.beta → 4.2.0.rc5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/spree/base_controller.rb +2 -3
- data/app/controllers/spree/errors_controller.rb +11 -0
- data/app/finders/spree/addresses/find.rb +6 -0
- data/app/finders/spree/base_finder.rb +14 -0
- data/app/finders/spree/countries/find.rb +11 -3
- data/app/finders/spree/credit_cards/find.rb +2 -2
- data/app/finders/spree/orders/find_current.rb +2 -2
- data/app/finders/spree/products/find.rb +12 -1
- data/app/helpers/spree/base_helper.rb +38 -18
- data/app/helpers/spree/locale_helper.rb +19 -0
- data/app/helpers/spree/mail_helper.rb +12 -7
- data/app/helpers/spree/products_helper.rb +39 -13
- data/app/mailers/spree/base_mailer.rb +5 -5
- data/app/mailers/spree/order_mailer.rb +3 -3
- data/app/mailers/spree/reimbursement_mailer.rb +1 -1
- data/app/mailers/spree/shipment_mailer.rb +1 -1
- data/app/models/concerns/spree/default_price.rb +1 -5
- data/app/models/concerns/spree/user_methods.rb +2 -2
- data/app/models/concerns/spree/user_payment_source.rb +1 -1
- data/app/models/spree/ability.rb +45 -34
- data/app/models/spree/address.rb +17 -1
- data/app/models/spree/adjustment.rb +1 -0
- data/app/models/spree/app_configuration.rb +2 -3
- data/app/models/spree/app_dependencies.rb +10 -2
- data/app/models/spree/base.rb +5 -0
- data/app/models/spree/credit_card.rb +5 -0
- data/app/models/spree/fulfilment_changer.rb +58 -16
- data/app/models/spree/image.rb +14 -14
- data/app/models/spree/inventory_unit.rb +2 -7
- data/app/models/spree/line_item.rb +9 -16
- data/app/models/spree/log_entry.rb +1 -1
- data/app/models/spree/option_type.rb +2 -0
- data/app/models/spree/order.rb +12 -6
- data/app/models/spree/order/address_book.rb +7 -20
- data/app/models/spree/order/payments.rb +10 -2
- data/app/models/spree/payment.rb +18 -4
- data/app/models/spree/payment/processing.rb +2 -2
- data/app/models/spree/payment_method.rb +3 -3
- data/app/models/spree/preferences/store.rb +1 -1
- data/app/models/spree/price.rb +1 -6
- data/app/models/spree/product.rb +24 -17
- data/app/models/spree/promotion.rb +10 -15
- data/app/models/spree/promotion/rules/option_value.rb +1 -1
- data/app/models/spree/promotion/rules/product.rb +2 -1
- data/app/models/spree/promotion/rules/user.rb +2 -1
- data/app/models/spree/promotion_handler/coupon.rb +1 -2
- data/app/models/spree/promotion_handler/promotion_duplicator.rb +9 -3
- data/app/models/spree/refund.rb +2 -2
- data/app/models/spree/return_item/eligibility_validator/default.rb +0 -2
- data/app/models/spree/return_item/eligibility_validator/{r_m_a_required.rb → rma_required.rb} +0 -0
- data/app/models/spree/shipment.rb +1 -1
- data/app/models/spree/shipping_method.rb +1 -5
- data/app/models/spree/shipping_rate.rb +2 -11
- data/app/models/spree/stock/availability_validator.rb +3 -4
- data/app/models/spree/stock_item.rb +1 -5
- data/app/models/spree/store.rb +45 -1
- data/app/models/spree/store_credit.rb +1 -1
- data/app/models/spree/variant.rb +8 -15
- data/app/models/spree/zone.rb +17 -4
- data/app/presenters/spree/variant_presenter.rb +4 -6
- data/app/services/spree/account/addresses/create.rb +23 -0
- data/app/services/spree/account/addresses/helper.rb +37 -0
- data/app/services/spree/account/addresses/update.rb +23 -0
- data/app/services/spree/cart/estimate_shipping_rates.rb +1 -1
- data/app/services/spree/checkout/update.rb +13 -2
- data/app/services/spree/compare_line_items.rb +4 -2
- data/app/sorters/spree/base_sorter.rb +35 -0
- data/app/sorters/spree/orders/sort.rb +1 -37
- data/app/sorters/spree/products/sort.rb +9 -32
- data/app/validators/email_validator.rb +1 -1
- data/app/views/spree/errors/forbidden.html.erb +0 -0
- data/app/views/spree/errors/unauthorized.html.erb +0 -0
- data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +0 -2
- data/app/views/spree/shared/purchased_items_table/_line_item.html.erb +1 -1
- data/config/initializers/inflections.rb +3 -0
- data/config/initializers/rails61_fixes.rb +3 -0
- data/config/locales/en.yml +42 -63
- data/config/routes.rb +2 -1
- data/db/default/spree/countries.rb +10 -4
- data/db/default/spree/states.rb +42 -5
- data/db/default/spree/stores.rb +18 -13
- data/db/default/spree/zones.rb +5 -2
- data/db/migrate/20130326175857_add_stock_location_to_rma.rb +1 -1
- data/db/migrate/20200610113542_add_label_to_spree_addresses.rb +5 -0
- data/db/migrate/20201006110150_add_checkout_zone_field_to_store.rb +12 -0
- data/db/migrate/20201012091259_add_filterable_column_to_spree_option_types.rb +6 -0
- data/db/migrate/20201013084504_add_seo_robots_to_spree_stores.rb +5 -0
- data/db/migrate/20201127084048_add_default_country_kind_to_spree_zones.rb +5 -0
- data/db/migrate/20210112193440_remove_contact_email_from_spree_stores.rb +5 -0
- data/db/migrate/20210114182625_create_spree_payment_methods_stores.rb +10 -0
- data/db/migrate/20210114220232_migrate_data_payment_methods_stores.rb +15 -0
- data/db/migrate/20210117112551_remove_store_id_from_spree_payment_methods.rb +5 -0
- data/db/migrate/20210120142527_ensure_default_locale_in_spree_stores.rb +5 -0
- data/lib/generators/spree/install/templates/config/spree_storefront.yml +9 -9
- data/lib/spree/core.rb +3 -1
- data/lib/spree/core/controller_helpers/auth.rb +3 -1
- data/lib/spree/core/controller_helpers/common.rb +6 -8
- data/lib/spree/core/controller_helpers/currency.rb +45 -0
- data/lib/spree/core/controller_helpers/locale.rb +57 -0
- data/lib/spree/core/controller_helpers/order.rb +9 -4
- data/lib/spree/core/controller_helpers/store.rb +4 -16
- data/lib/spree/core/importer/order.rb +9 -9
- data/lib/spree/core/product_filters.rb +3 -3
- data/lib/spree/core/version.rb +1 -1
- data/lib/spree/i18n.rb +7 -21
- data/lib/spree/permitted_attributes.rb +3 -3
- data/lib/spree/service_module.rb +6 -2
- data/lib/spree/testing_support/capybara_config.rb +1 -1
- data/lib/spree/testing_support/factories/promotion_factory.rb +29 -17
- data/lib/spree/testing_support/factories/shipment_factory.rb +7 -9
- data/lib/spree/testing_support/factories/stock_location_factory.rb +2 -2
- data/lib/spree/testing_support/factories/zone_factory.rb +16 -13
- data/lib/spree/testing_support/i18n.rb +1 -1
- data/lib/spree/testing_support/order_walkthrough.rb +8 -3
- data/lib/spree/testing_support/rspec_retry_config.rb +10 -0
- data/spree_core.gemspec +7 -5
- metadata +90 -28
- data/lib/spree/core/controller_helpers/currency_helpers.rb +0 -15
- data/lib/spree/i18n/base.rb +0 -17
- data/lib/spree/i18n/initializer.rb +0 -1
@@ -0,0 +1,23 @@
|
|
1
|
+
module Spree
|
2
|
+
module Account
|
3
|
+
module Addresses
|
4
|
+
class Update
|
5
|
+
prepend Spree::ServiceModule::Base
|
6
|
+
include Spree::Account::Addresses::Helper
|
7
|
+
|
8
|
+
attr_accessor :country
|
9
|
+
|
10
|
+
def call(address:, address_params:)
|
11
|
+
address_params[:country_id] ||= address.country_id
|
12
|
+
fill_country_and_state_ids(address_params)
|
13
|
+
|
14
|
+
if address.update(address_params)
|
15
|
+
success(address)
|
16
|
+
else
|
17
|
+
failure(address)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -4,8 +4,12 @@ module Spree
|
|
4
4
|
prepend Spree::ServiceModule::Base
|
5
5
|
|
6
6
|
def call(order:, params:, permitted_attributes:, request_env:)
|
7
|
-
|
8
|
-
|
7
|
+
ship_changed = address_with_country_iso_present?(params, 'ship')
|
8
|
+
bill_changed = address_with_country_iso_present?(params, 'bill')
|
9
|
+
params = replace_country_iso_with_id(params, 'ship') if ship_changed
|
10
|
+
params = replace_country_iso_with_id(params, 'bill') if bill_changed
|
11
|
+
order.state = 'address' if (ship_changed || bill_changed) && order.has_checkout_step?('address')
|
12
|
+
order.state = 'delivery' if selected_shipping_rate_present?(params) && order.has_checkout_step?('delivery')
|
9
13
|
return success(order) if order.update_from_params(params, permitted_attributes, request_env)
|
10
14
|
|
11
15
|
failure(order)
|
@@ -20,6 +24,13 @@ module Spree
|
|
20
24
|
true
|
21
25
|
end
|
22
26
|
|
27
|
+
def selected_shipping_rate_present?(params)
|
28
|
+
shipments_attributes = params.dig(:order, :shipments_attributes)
|
29
|
+
return false unless shipments_attributes
|
30
|
+
|
31
|
+
shipments_attributes.any? { |s| s.dig(:selected_shipping_rate_id) }
|
32
|
+
end
|
33
|
+
|
23
34
|
def replace_country_iso_with_id(params, address_kind = 'ship')
|
24
35
|
country_id = Spree::Country.by_iso(params[:order]["#{address_kind}_address_attributes"].fetch(:country_iso))&.id
|
25
36
|
|
@@ -1,9 +1,11 @@
|
|
1
1
|
# This class should be refactored
|
2
2
|
module Spree
|
3
3
|
class CompareLineItems
|
4
|
-
prepend Spree::ServiceModule::
|
4
|
+
prepend Spree::ServiceModule::Base
|
5
|
+
|
6
|
+
def call(order:, line_item:, options: {}, comparison_hooks: nil)
|
7
|
+
comparison_hooks ||= Rails.application.config.spree.line_item_comparison_hooks
|
5
8
|
|
6
|
-
def call(order:, line_item:, options: {}, comparison_hooks: Rails.application.config.spree.line_item_comparison_hooks)
|
7
9
|
legacy_part = comparison_hooks.all? do |hook|
|
8
10
|
order.send(hook, line_item, options)
|
9
11
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Spree
|
2
|
+
class BaseSorter
|
3
|
+
def initialize(scope, params = {}, allowed_sort_attributes = [])
|
4
|
+
@scope = scope
|
5
|
+
@sort = params[:sort]
|
6
|
+
@allowed_sort_attributes = allowed_sort_attributes
|
7
|
+
end
|
8
|
+
|
9
|
+
def call
|
10
|
+
by_param_attribute(scope)
|
11
|
+
end
|
12
|
+
|
13
|
+
protected
|
14
|
+
|
15
|
+
attr_reader :scope, :collection, :sort, :allowed_sort_attributes
|
16
|
+
|
17
|
+
def by_param_attribute(scope)
|
18
|
+
return scope if sort_field.blank? || !allowed_sort_attributes.include?(sort_field.to_sym)
|
19
|
+
|
20
|
+
scope.order("#{sort_field}": order_direction)
|
21
|
+
end
|
22
|
+
|
23
|
+
def desc_order
|
24
|
+
@desc_order ||= String(sort)[0] == '-'
|
25
|
+
end
|
26
|
+
|
27
|
+
def sort_field
|
28
|
+
@sort_field ||= desc_order ? sort[1..-1] : sort
|
29
|
+
end
|
30
|
+
|
31
|
+
def order_direction
|
32
|
+
desc_order ? :desc : :asc
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -1,42 +1,6 @@
|
|
1
1
|
module Spree
|
2
2
|
module Orders
|
3
|
-
class Sort
|
4
|
-
attr_reader :scope, :sort
|
5
|
-
|
6
|
-
def initialize(scope, params)
|
7
|
-
@scope = scope
|
8
|
-
@sort = params[:sort]
|
9
|
-
end
|
10
|
-
|
11
|
-
def call
|
12
|
-
orders = completed_at(scope)
|
13
|
-
|
14
|
-
orders
|
15
|
-
end
|
16
|
-
|
17
|
-
private
|
18
|
-
|
19
|
-
def desc_order
|
20
|
-
@desc_order ||= String(sort)[0] == '-'
|
21
|
-
end
|
22
|
-
|
23
|
-
def sort_field
|
24
|
-
@sort_field ||= desc_order ? sort[1..-1] : sort
|
25
|
-
end
|
26
|
-
|
27
|
-
def order_direction
|
28
|
-
desc_order ? :asc : :desc
|
29
|
-
end
|
30
|
-
|
31
|
-
def completed_at?
|
32
|
-
sort_field.eql?('completed_at')
|
33
|
-
end
|
34
|
-
|
35
|
-
def completed_at(orders)
|
36
|
-
return orders unless completed_at?
|
37
|
-
|
38
|
-
orders.order(completed_at: order_direction)
|
39
|
-
end
|
3
|
+
class Sort < ::Spree::BaseSorter
|
40
4
|
end
|
41
5
|
end
|
42
6
|
end
|
@@ -1,53 +1,30 @@
|
|
1
1
|
module Spree
|
2
2
|
module Products
|
3
|
-
class Sort
|
4
|
-
def initialize(scope, params,
|
5
|
-
|
6
|
-
@sort = params[:sort]
|
3
|
+
class Sort < ::Spree::BaseSorter
|
4
|
+
def initialize(scope, current_currency, params = {}, allowed_sort_attributes = [])
|
5
|
+
super(scope, params, allowed_sort_attributes)
|
7
6
|
@currency = params[:currency] || current_currency
|
8
7
|
end
|
9
8
|
|
10
9
|
def call
|
11
|
-
products =
|
12
|
-
products =
|
10
|
+
products = by_param_attribute(scope)
|
11
|
+
products = by_price(products)
|
13
12
|
|
14
13
|
products.distinct
|
15
14
|
end
|
16
15
|
|
17
16
|
private
|
18
17
|
|
19
|
-
attr_reader :sort, :scope, :currency
|
20
|
-
|
21
|
-
def desc_order
|
22
|
-
@desc_order ||= String(sort)[0] == '-'
|
23
|
-
end
|
24
|
-
|
25
|
-
def sort_field
|
26
|
-
@sort_field ||= desc_order ? sort[1..-1] : sort
|
27
|
-
end
|
28
|
-
|
29
|
-
def updated_at?
|
30
|
-
sort_field == 'updated_at'
|
31
|
-
end
|
18
|
+
attr_reader :sort, :scope, :currency, :allowed_sort_attributes
|
32
19
|
|
33
20
|
def price?
|
34
21
|
sort_field == 'price'
|
35
22
|
end
|
36
23
|
|
37
|
-
def
|
38
|
-
|
39
|
-
end
|
40
|
-
|
41
|
-
def updated_at(products)
|
42
|
-
return products unless updated_at?
|
43
|
-
|
44
|
-
products.order(updated_at: order_direction)
|
45
|
-
end
|
46
|
-
|
47
|
-
def price(products)
|
48
|
-
return products unless price?
|
24
|
+
def by_price(scope)
|
25
|
+
return scope unless price?
|
49
26
|
|
50
|
-
|
27
|
+
scope.joins(master: :prices).
|
51
28
|
select("#{Spree::Product.table_name}.*, #{Spree::Price.table_name}.amount").
|
52
29
|
distinct.
|
53
30
|
where(spree_prices: { currency: currency }).
|
@@ -1,7 +1,7 @@
|
|
1
1
|
class EmailValidator < ActiveModel::EachValidator
|
2
2
|
def validate_each(record, attribute, value)
|
3
3
|
unless value =~ /\A[^@\s]+@[^@\s]+\z/
|
4
|
-
record.errors.add(attribute, :invalid, { value: value }.merge!(options))
|
4
|
+
record.errors.add(attribute, :invalid, **{ value: value }.merge!(options))
|
5
5
|
end
|
6
6
|
end
|
7
7
|
end
|
File without changes
|
File without changes
|
@@ -20,7 +20,7 @@
|
|
20
20
|
</td>
|
21
21
|
<td class="align-right">
|
22
22
|
<span class="f-fallback purchase_item_price">
|
23
|
-
<%= line_item.quantity %> x <%= line_item.single_money
|
23
|
+
<%= line_item.quantity %> x <%= line_item.single_money %><br>
|
24
24
|
<%= line_item.display_amount %>
|
25
25
|
</span>
|
26
26
|
</td>
|
data/config/locales/en.yml
CHANGED
@@ -6,13 +6,14 @@ en:
|
|
6
6
|
attributes:
|
7
7
|
desired_shipment:
|
8
8
|
can_not_transfer_within_same_shipment: can not be same as current shipment
|
9
|
-
|
9
|
+
has_not_enough_stock_at_desired_location: has not enough stock in desired stock location
|
10
10
|
current_shipment:
|
11
11
|
has_already_been_shipped: has already been shipped
|
12
12
|
can_not_have_backordered_inventory_units: has backordered inventory units
|
13
13
|
activerecord:
|
14
14
|
attributes:
|
15
15
|
spree/address:
|
16
|
+
label: Address name
|
16
17
|
address1: Address
|
17
18
|
address2: Address (contd.)
|
18
19
|
city: City
|
@@ -51,6 +52,7 @@ en:
|
|
51
52
|
spree/option_type:
|
52
53
|
name: Name
|
53
54
|
presentation: Presentation
|
55
|
+
filterable: Filterable
|
54
56
|
spree/order:
|
55
57
|
checkout_complete: Checkout Complete
|
56
58
|
completed_at: Completed At
|
@@ -140,7 +142,8 @@ en:
|
|
140
142
|
url: Site URL
|
141
143
|
meta_description: Meta Description
|
142
144
|
meta_keywords: Meta Keywords
|
143
|
-
|
145
|
+
seo_robots: SEO Robots
|
146
|
+
seo_title: SEO Title
|
144
147
|
name: Site Name
|
145
148
|
mail_from_address: Mail From Address
|
146
149
|
spree/store_credit:
|
@@ -502,10 +505,14 @@ en:
|
|
502
505
|
address_book:
|
503
506
|
other_address: "Other address"
|
504
507
|
add_new_shipping_address: "Add new address"
|
505
|
-
|
506
|
-
|
508
|
+
label: Address Name
|
509
|
+
address_name_label: Address Name
|
510
|
+
address_name_placeholder: Give this address a unique name (Work, Home, etc.)
|
511
|
+
new_address: "New Address"
|
512
|
+
edit_address: "Edit Address"
|
513
|
+
remove_address: Remove Address
|
507
514
|
no_shipping_addresses_on_file: "No addresses on file"
|
508
|
-
|
515
|
+
addresses: "Addresses"
|
509
516
|
successfully_created: "Address has been successfully created."
|
510
517
|
successfully_removed: "Address has been successfully removed."
|
511
518
|
successfully_saved: "Saved successfully"
|
@@ -569,9 +576,6 @@ en:
|
|
569
576
|
agree_to_privacy_policy: Agree to Privacy Policy
|
570
577
|
agree_to_terms_of_service: Agree to Terms of Service
|
571
578
|
all: All
|
572
|
-
allow_currency_change:
|
573
|
-
short: Allow Currency Change
|
574
|
-
long: Allow users to change their currency via the currency picker.
|
575
579
|
all_adjustments_closed: All adjustments successfully closed!
|
576
580
|
all_adjustments_opened: All adjustments successfully opened!
|
577
581
|
all_departments: All departments
|
@@ -659,7 +663,6 @@ en:
|
|
659
663
|
jackets_and_coats: JACKET & COASTS
|
660
664
|
new_collection: NEW COLLECTION
|
661
665
|
special_offers: SPECIAL OFFERS
|
662
|
-
summer_2019: SUMMER 2019
|
663
666
|
channel: Channel
|
664
667
|
charged: Charged
|
665
668
|
checkout: Checkout
|
@@ -692,7 +695,6 @@ en:
|
|
692
695
|
confirm: Confirm
|
693
696
|
confirm_delete: Confirm Deletion
|
694
697
|
confirm_password: Password Confirmation
|
695
|
-
contact_email: Contact email
|
696
698
|
contact_phone: Contact phone
|
697
699
|
contact_us: Contact us
|
698
700
|
continue: Continue
|
@@ -757,38 +759,10 @@ en:
|
|
757
759
|
date: Date
|
758
760
|
date_completed: Date Completed
|
759
761
|
date_picker:
|
760
|
-
am: 'AM'
|
761
762
|
first_day: 0
|
762
763
|
format: ! '%Y/%m/%d'
|
763
|
-
hourAriaLabel: 'Hour'
|
764
764
|
js_format: Y/m/d
|
765
765
|
js_date_time: Y/m/d - H:i
|
766
|
-
minuteAriaLabel: 'Minute'
|
767
|
-
pm: 'PM'
|
768
|
-
rangeSeparator: ' to '
|
769
|
-
scrollTitle: 'Scroll to increment'
|
770
|
-
toggleTitle: 'Click to toggle'
|
771
|
-
weekAbbreviation: 'Wk'
|
772
|
-
yearAriaLabel: 'Year'
|
773
|
-
sun: 'Sun'
|
774
|
-
mon: 'Mon'
|
775
|
-
tue: 'Tue'
|
776
|
-
wed: 'Wed'
|
777
|
-
thu: 'Thu'
|
778
|
-
fri: 'Fri'
|
779
|
-
sat: 'Sat'
|
780
|
-
lh_jan: 'January'
|
781
|
-
lh_feb: 'February'
|
782
|
-
lh_mar: 'March'
|
783
|
-
lh_apr: 'April'
|
784
|
-
lh_may: 'May'
|
785
|
-
lh_jun: 'June'
|
786
|
-
lh_jul: 'July'
|
787
|
-
lh_aug: 'August'
|
788
|
-
lh_sep: 'September'
|
789
|
-
lh_oct: 'October'
|
790
|
-
lh_nov: 'November'
|
791
|
-
lh_dec: 'December'
|
792
766
|
date_range: Date Range
|
793
767
|
default: Default
|
794
768
|
default_country_cannot_be_deleted: Default country cannot be deleted
|
@@ -847,6 +821,7 @@ en:
|
|
847
821
|
blank: can't be blank
|
848
822
|
could_not_create_taxon: Could not create taxon
|
849
823
|
no_shipping_methods_available: No shipping methods available for selected location, please change your address and try again.
|
824
|
+
cannot_remove_icon: Cannot remove image
|
850
825
|
services:
|
851
826
|
get_shipping_rates:
|
852
827
|
no_shipping_address: To generate Shipping Rates Order needs to have a Shipping Address
|
@@ -884,6 +859,7 @@ en:
|
|
884
859
|
filename: Filename
|
885
860
|
fill_in_customer_info: Please fill in customer info
|
886
861
|
filter: Filter
|
862
|
+
filterable: Filterable
|
887
863
|
filter_results: Filter Results
|
888
864
|
finalize: Finalize
|
889
865
|
find_a_taxon: Find a Taxon
|
@@ -896,7 +872,7 @@ en:
|
|
896
872
|
flat_rate_per_order: Flat Rate
|
897
873
|
flexible_rate: Flexible Rate
|
898
874
|
follow_us: Follow us
|
899
|
-
|
875
|
+
footer: Footer
|
900
876
|
forgot_password: Forgot password?
|
901
877
|
free: Free
|
902
878
|
free_shipping: Free Shipping
|
@@ -921,30 +897,13 @@ en:
|
|
921
897
|
hide_from_subcategories_nav: Hide from subcategories navigation
|
922
898
|
home: Home
|
923
899
|
home_page: homepage
|
924
|
-
homepage:
|
925
|
-
bestsellers: BESTSELLERS
|
926
|
-
fashion_trends: FASHION TRENDS
|
927
|
-
fashion_trends_note: Want to rock this season’s hottest trend in style? These are the top fashion from Summer 2020 Fashion Weeks that are coming our way this season.
|
928
|
-
men: MEN
|
929
|
-
new: NEW
|
930
|
-
new_collection: NEW COLLECTION
|
931
|
-
read_more: READ MORE
|
932
|
-
shoes: SHOES
|
933
|
-
shop_now: SHOP NOW
|
934
|
-
sportswear: SPORTSWEAR
|
935
|
-
streetstyle: STREETSTYLE
|
936
|
-
summer_2020: Summer 2020
|
937
|
-
summer_collection: Summer Collection
|
938
|
-
summer_sale: SUMMER SALE
|
939
|
-
trending: TRENDING
|
940
|
-
up_to_60: UP TO 60%
|
941
|
-
women: WOMEN
|
942
900
|
help_center: Help Center
|
943
901
|
i18n:
|
944
902
|
available_locales: Available Locales
|
945
903
|
fields: Fields
|
946
904
|
language: Language
|
947
905
|
country: Country
|
906
|
+
default_country: Default Country
|
948
907
|
localization_settings: Localization Settings
|
949
908
|
only_incomplete: Only incomplete
|
950
909
|
only_complete: Only complete
|
@@ -1036,6 +995,7 @@ en:
|
|
1036
995
|
make_refund: Make refund
|
1037
996
|
make_sure_the_above_reimbursement_amount_is_correct: Make sure the above reimbursement amount is correct
|
1038
997
|
mail_from_address: Mail from address
|
998
|
+
mailer_logo: Mailer logo (JPG or PNG images only)
|
1039
999
|
manage_promotion_categories: Manage Promotion Categories
|
1040
1000
|
manual_intervention_required: Manual intervention required
|
1041
1001
|
manage_variants: Manage Variants
|
@@ -1123,6 +1083,7 @@ en:
|
|
1123
1083
|
no_available_date_set: No available date set
|
1124
1084
|
no_country: No country set
|
1125
1085
|
no_payment_found: No payment found
|
1086
|
+
no_payment_provider_settings_message: This payment provider has no custom settings available
|
1126
1087
|
no_pending_payments: No pending payments
|
1127
1088
|
no_product_available:
|
1128
1089
|
for_this_quantity: Sorry, it looks like some products are not available in selected quantity.
|
@@ -1145,6 +1106,7 @@ en:
|
|
1145
1106
|
not_found: ! '%{resource} is not found'
|
1146
1107
|
note: Note
|
1147
1108
|
notice_messages:
|
1109
|
+
icon_removed: Image has been successfully removed
|
1148
1110
|
prices_saved: Prices successfully saved
|
1149
1111
|
product_cloned: Product has been cloned
|
1150
1112
|
product_deleted: Product has been deleted
|
@@ -1245,6 +1207,7 @@ en:
|
|
1245
1207
|
payment_processing_failed: Payment could not be processed, please check the details you entered
|
1246
1208
|
payment_processor_choose_banner_text: If you need help choosing a payment processor, please visit
|
1247
1209
|
payment_processor_choose_link: our payments page
|
1210
|
+
payment_provider_settings: Payment Provider Settings
|
1248
1211
|
payment_state: Payment State
|
1249
1212
|
payment_states:
|
1250
1213
|
balance_due: balance due
|
@@ -1429,6 +1392,7 @@ en:
|
|
1429
1392
|
rejected: Rejected
|
1430
1393
|
remember_me: Remember me
|
1431
1394
|
remove: Remove
|
1395
|
+
remove_image: Remove Image
|
1432
1396
|
rename: Rename
|
1433
1397
|
report: Report
|
1434
1398
|
reports: Reports
|
@@ -1504,12 +1468,14 @@ en:
|
|
1504
1468
|
select_a_return_authorization_reason: Select a reason for the return authorization
|
1505
1469
|
select_a_stock_location: Select a stock location
|
1506
1470
|
select_a_store_credit_reason: Select a reason for the store credit
|
1471
|
+
select_an_option: Select an option
|
1507
1472
|
select_stock: Select stock
|
1508
1473
|
selected_quantity_not_available: ! 'selected of %{item} is not available.'
|
1509
|
-
seo: SEO
|
1510
1474
|
send_copy_of_all_mails_to: Send Copy of All Mails To
|
1511
1475
|
send_mails_as: Send Mails As
|
1512
|
-
|
1476
|
+
seo: SEO
|
1477
|
+
seo_robots: SEO Robots
|
1478
|
+
seo_title: SEO Title
|
1513
1479
|
server: Server
|
1514
1480
|
server_error: The server returned an error
|
1515
1481
|
settings: Settings
|
@@ -1563,15 +1529,15 @@ en:
|
|
1563
1529
|
shopping_cart: Shopping Cart
|
1564
1530
|
show: Show
|
1565
1531
|
show_active: Show Active
|
1566
|
-
show_currency_selector:
|
1567
|
-
short: Show Currency Selector
|
1568
|
-
long_html: Display the currency picker in the main nav bar. This will only display if there are multiple supported currencies, and <strong>Allow currency change</strong> option is enabled.
|
1569
1532
|
show_deleted: Show Deleted
|
1570
1533
|
show_discontinued: Show Discontinued
|
1571
1534
|
show_only_complete_orders: Only show complete orders
|
1572
1535
|
show_only_considered_risky: Only show risky orders
|
1573
1536
|
show_property: Show Property
|
1574
1537
|
show_rate_in_label: Show rate in label
|
1538
|
+
show_store_selector:
|
1539
|
+
short: Show Store selector
|
1540
|
+
long: Display the Store selector in the main nav bar of Storefront and allow users to change Store and Currency
|
1575
1541
|
sign_up: Sign Up
|
1576
1542
|
sku: SKU
|
1577
1543
|
skus: SKUs
|
@@ -1637,7 +1603,7 @@ en:
|
|
1637
1603
|
stock_transfer:
|
1638
1604
|
errors:
|
1639
1605
|
must_have_variant: You must add at least one variant.
|
1640
|
-
variants_unavailable: "Some variants are not available on %{stock}"
|
1606
|
+
variants_unavailable: "Some variants are not available on %{stock}"
|
1641
1607
|
stock_transfers: Stock Transfers
|
1642
1608
|
stop: Stop
|
1643
1609
|
store: Store
|
@@ -1645,6 +1611,18 @@ en:
|
|
1645
1611
|
unable_to_create: Unable to create store.
|
1646
1612
|
unable_to_update: Unable to update store.
|
1647
1613
|
unable_to_delete: Unable to delete store.
|
1614
|
+
store_form:
|
1615
|
+
code_help: "Store unique identifier, which is an abbreviated version of the store’s name (used as the layout directory name, and also helpful for separating templates by store)"
|
1616
|
+
checkout_zone_help: "Selecting a Zone will limit customers on Checkout to Addresses in Countries or States in that Zone.
|
1617
|
+
For more information <a href='https://guides.spreecommerce.org/user/configuration/configuring_geography.html#zones' target='_blank' class='alert-link'>please see documentation</a>"
|
1618
|
+
languages_help: "Install <a href='https://github.com/spree-contrib/spree_i18n target='_blank' class='alert-link'>Spree I18n extension</a> to add more languages"
|
1619
|
+
social_help: "If you want to link to your social accounts in the footer part of your website please fill below fields"
|
1620
|
+
default_country_help: "This is the Country that will be pre-selected on the Checkout Address form"
|
1621
|
+
footer_help: "This content is visible in the footer section of your Store"
|
1622
|
+
mail_from_address_help: "This is the email which will be the sender of all your Store emails (Order Confirmation, Shipment notification etc)"
|
1623
|
+
customer_support_email_help: "This email is visible to your Store visitors in the Footer section"
|
1624
|
+
new_order_notifications_email_help: "If you want to receive an email notification every time someone places an Order please provide an email address for that notification to be sent to"
|
1625
|
+
seo_robots: "Please check <a href='https://developers.google.com/search/reference/robots_meta_tag' target='_blank'>this page for more help</a>"
|
1648
1626
|
store_set_default_button: Set as default
|
1649
1627
|
stores: Stores
|
1650
1628
|
store_credit_name: Store Credit
|
@@ -1804,3 +1782,4 @@ en:
|
|
1804
1782
|
zipcode_required: Zip Code Required
|
1805
1783
|
zone: Zone
|
1806
1784
|
zones: Zones
|
1785
|
+
no_limits_zone: No Limits
|