spree_core 4.1.10 → 4.2.0.rc2

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 (103) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/spree/base_controller.rb +1 -0
  3. data/app/helpers/spree/base_helper.rb +61 -14
  4. data/app/helpers/spree/mail_helper.rb +29 -0
  5. data/app/helpers/spree/products_helper.rb +2 -1
  6. data/app/mailers/spree/base_mailer.rb +17 -3
  7. data/app/mailers/spree/order_mailer.rb +11 -2
  8. data/app/mailers/spree/reimbursement_mailer.rb +4 -2
  9. data/app/mailers/spree/shipment_mailer.rb +4 -2
  10. data/app/models/concerns/spree/default_price.rb +2 -1
  11. data/app/models/concerns/spree/user_methods.rb +11 -5
  12. data/app/models/concerns/spree/user_payment_source.rb +1 -1
  13. data/app/models/spree/address.rb +13 -1
  14. data/app/models/spree/adjustment.rb +1 -0
  15. data/app/models/spree/app_configuration.rb +4 -0
  16. data/app/models/spree/credit_card.rb +5 -0
  17. data/app/models/spree/line_item.rb +12 -2
  18. data/app/models/spree/log_entry.rb +1 -1
  19. data/app/models/spree/option_type.rb +7 -1
  20. data/app/models/spree/order.rb +33 -7
  21. data/app/models/spree/order/address_book.rb +7 -20
  22. data/app/models/spree/order/payments.rb +10 -2
  23. data/app/models/spree/preferences/store.rb +1 -1
  24. data/app/models/spree/price.rb +26 -2
  25. data/app/models/spree/product.rb +17 -7
  26. data/app/models/spree/promotion.rb +10 -15
  27. data/app/models/spree/promotion_handler/coupon.rb +2 -3
  28. data/app/models/spree/promotion_handler/promotion_duplicator.rb +9 -3
  29. data/app/models/spree/reimbursement.rb +2 -0
  30. data/app/models/spree/shipment.rb +2 -5
  31. data/app/models/spree/stock_location.rb +13 -2
  32. data/app/models/spree/store.rb +27 -2
  33. data/app/models/spree/variant.rb +15 -2
  34. data/app/models/spree/zone.rb +4 -0
  35. data/app/presenters/spree/variant_presenter.rb +9 -1
  36. data/app/presenters/spree/variants/option_types_presenter.rb +1 -0
  37. data/app/views/layouts/spree/base_mailer.html.erb +45 -40
  38. data/app/views/spree/order_mailer/cancel_email.html.erb +19 -25
  39. data/app/views/spree/order_mailer/cancel_email.text.erb +24 -2
  40. data/app/views/spree/order_mailer/confirm_email.html.erb +18 -65
  41. data/app/views/spree/order_mailer/confirm_email.text.erb +2 -1
  42. data/app/views/spree/order_mailer/store_owner_notification_email.html.erb +23 -0
  43. data/app/views/spree/order_mailer/store_owner_notification_email.text.erb +38 -0
  44. data/app/views/spree/reimbursement_mailer/reimbursement_email.html.erb +53 -58
  45. data/app/views/spree/reimbursement_mailer/reimbursement_email.text.erb +3 -1
  46. data/app/views/spree/shared/_base_mailer_footer.html.erb +6 -14
  47. data/app/views/spree/shared/_base_mailer_header.html.erb +12 -32
  48. data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +293 -625
  49. data/app/views/spree/shared/_purchased_items_table.html.erb +60 -0
  50. data/app/views/spree/shared/purchased_items_table/_adjustment.html.erb +13 -0
  51. data/app/views/spree/shared/purchased_items_table/_line_item.html.erb +27 -0
  52. data/app/views/spree/shared/purchased_items_table/_subtotal.html.erb +13 -0
  53. data/app/views/spree/shared/purchased_items_table/_total.html.erb +13 -0
  54. data/app/views/spree/shipment_mailer/shipped_email.html.erb +31 -36
  55. data/app/views/spree/shipment_mailer/shipped_email.text.erb +2 -1
  56. data/config/initializers/assets.rb +1 -0
  57. data/config/locales/en.yml +125 -16
  58. data/db/default/spree/countries.rb +10 -4
  59. data/db/default/spree/states.rb +42 -5
  60. data/db/default/spree/stores.rb +17 -12
  61. data/db/default/spree/zones.rb +1 -1
  62. data/db/migrate/20140309033438_create_store_from_preferences.rb +1 -1
  63. data/db/migrate/20191017121054_add_supported_currencies_to_store.rb +10 -0
  64. data/db/migrate/20200102141311_add_social_to_spree_stores.rb +3 -0
  65. data/db/migrate/20200308210757_add_default_locale_to_spree_store.rb +7 -0
  66. data/db/migrate/20200310145140_add_customer_support_email_to_spree_store.rb +7 -0
  67. data/db/migrate/20200421095017_add_compare_at_amount_to_spree_prices.rb +7 -0
  68. data/db/migrate/20200423123001_add_default_country_id_to_spree_store.rb +9 -0
  69. data/db/migrate/20200430072209_add_footer_fields_to_spree_stores.rb +8 -0
  70. data/db/migrate/20200513154939_add_show_property_to_spree_product_properties.rb +5 -0
  71. data/db/migrate/20200607161221_add_store_owner_order_notification_delivered_to_spree_orders.rb +7 -0
  72. data/db/migrate/20200607161222_add_new_order_notifications_email_to_spree_stores.rb +7 -0
  73. data/db/migrate/20200610113542_add_label_to_spree_addresses.rb +5 -0
  74. data/db/migrate/20200826075557_add_unique_index_on_taxon_id_and_product_id_to_spree_products_taxons.rb +5 -0
  75. data/db/migrate/20201006110150_add_checkout_zone_field_to_store.rb +12 -0
  76. data/db/migrate/20201012091259_add_filterable_column_to_spree_option_types.rb +6 -0
  77. data/db/migrate/20201013084504_add_seo_robots_to_spree_stores.rb +5 -0
  78. data/lib/generators/spree/install/templates/vendor/assets/javascripts/spree/backend/all.js +0 -2
  79. data/lib/generators/spree/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -2
  80. data/lib/generators/spree/mailers_preview/mailers_preview_generator.rb +23 -0
  81. data/lib/generators/spree/mailers_preview/templates/mailers/previews/order_preview.rb +13 -0
  82. data/lib/generators/spree/mailers_preview/templates/mailers/previews/reimbursement_preview.rb +5 -0
  83. data/lib/generators/spree/mailers_preview/templates/mailers/previews/shipment_preview.rb +5 -0
  84. data/lib/generators/spree/mailers_preview/templates/mailers/previews/user_preview.rb +11 -0
  85. data/lib/spree/core.rb +2 -0
  86. data/lib/spree/core/controller_helpers/common.rb +1 -0
  87. data/lib/spree/core/controller_helpers/currency_helpers.rb +15 -0
  88. data/lib/spree/core/controller_helpers/order.rb +9 -4
  89. data/lib/spree/core/controller_helpers/store.rb +12 -1
  90. data/lib/spree/core/importer/order.rb +9 -9
  91. data/lib/spree/core/version.rb +1 -1
  92. data/lib/spree/permitted_attributes.rb +8 -5
  93. data/lib/spree/testing_support/authorization_helpers.rb +7 -4
  94. data/lib/spree/testing_support/factories/promotion_factory.rb +29 -17
  95. data/lib/spree/testing_support/factories/store_factory.rb +11 -8
  96. data/lib/spree/testing_support/factories/zone_factory.rb +1 -1
  97. data/lib/spree/testing_support/i18n.rb +1 -1
  98. data/spree_core.gemspec +6 -5
  99. data/vendor/assets/javascripts/cleave.js +1669 -0
  100. metadata +57 -16
  101. data/app/views/spree/order_mailer/_adjustment.html.erb +0 -8
  102. data/app/views/spree/order_mailer/_subtotal.html.erb +0 -8
  103. data/app/views/spree/order_mailer/_total.html.erb +0 -8
@@ -0,0 +1,60 @@
1
+ <table class="purchase_content">
2
+ <%= render collection: line_items, partial: 'spree/shared/purchased_items_table/line_item', as: :line_item %>
3
+ <%= render 'spree/shared/purchased_items_table/subtotal', order: order %>
4
+ <% if order.line_item_adjustments.exists? %>
5
+ <% if order.all_adjustments.promotion.eligible.exists? %>
6
+ <% order.all_adjustments.promotion.eligible.group_by(&:label).each do |label, adjustments| %>
7
+ <tr>
8
+ <td></td>
9
+ <td>
10
+ <p class="f-fallback purchase_total purchase_total--label">
11
+ <%= Spree.t(:promotion) %> <%= label %>:
12
+ </p>
13
+ </td>
14
+ <td>
15
+ <p class="f-fallback purchase_total">
16
+ <%= Spree::Money.new(adjustments.sum(&:amount), currency: order.currency) %>
17
+ </p>
18
+ </td>
19
+ </tr>
20
+ <% end %>
21
+ <% end %>
22
+ <% end %>
23
+ <% order.shipments.group_by { |s| s.selected_shipping_rate&.name }.each do |name, shipments| %>
24
+ <tr>
25
+ <td></td>
26
+ <td>
27
+ <p class="f-fallback purchase_total purchase_total--label">
28
+ <%= Spree.t(:shipping) %> <%= name %>:
29
+ </p>
30
+ </td>
31
+ <td>
32
+ <p class="f-fallback purchase_total">
33
+ <%= Spree::Money.new(shipments.sum(&:discounted_cost), currency: order.currency) %>
34
+ </p>
35
+ </td>
36
+ </tr>
37
+ <% end %>
38
+ <% if order.all_adjustments.eligible.tax.exists? %>
39
+ <% order.all_adjustments.eligible.tax.group_by(&:label).each do |label, adjustments| %>
40
+ <tr>
41
+ <td></td>
42
+ <td>
43
+ <p class="f-fallback purchase_total purchase_total--label">
44
+ <%= Spree.t(:tax) %> <%= label %>:
45
+ </p>
46
+ </td>
47
+ <td>
48
+ <p class="f-fallback purchase_total">
49
+ <%= Spree::Money.new(adjustments.sum(&:amount), currency: order.currency) %>
50
+ </p>
51
+ </td>
52
+ </tr>
53
+ <% end %>
54
+ <% end %>
55
+ <% order.adjustments.eligible.each do |adjustment| %>
56
+ <% next if (adjustment.source_type == 'Spree::TaxRate') || (adjustment.amount == 0) %>
57
+ <%= render 'spree/shared/purchased_items_table/adjustment', adjustment: adjustment, order: order %>
58
+ <% end %>
59
+ <%= render 'spree/shared/purchased_items_table/total', order: order %>
60
+ </table>
@@ -0,0 +1,13 @@
1
+ <tr>
2
+ <td></td>
3
+ <td>
4
+ <p class="f-fallback purchase_total purchase_total--label">
5
+ <%= raw(adjustment.label) %>:
6
+ </p>
7
+ </td>
8
+ <td>
9
+ <p class="f-fallback purchase_total">
10
+ <%= Spree::Money.new(adjustment.amount, currency: order.currency) %>
11
+ </p>
12
+ </td>
13
+ </tr>
@@ -0,0 +1,27 @@
1
+ <tr>
2
+ <td class="purchase_image">
3
+ <% if frontend_available? %>
4
+ <%= link_to(image_tag(variant_image_url(line_item.variant)), spree.product_url(line_item.product)) %>
5
+ <% else %>
6
+ <%= image_tag(variant_image_url(line_item.variant)) %>
7
+ <% end %>
8
+ </td>
9
+ <td class="purchase_item">
10
+ <strong>
11
+ <span class="f-fallback">
12
+ <% if frontend_available? %>
13
+ <%= link_to raw(line_item.name), spree.product_url(line_item.product) %>
14
+ <% else %>
15
+ <%= raw(line_item.name) %>
16
+ <% end %>
17
+ </span>
18
+ </strong>
19
+ <p class="purchase_item--additional"><%= raw(line_item.variant.options_text) -%></p>
20
+ </td>
21
+ <td class="align-right">
22
+ <span class="f-fallback purchase_item_price">
23
+ <%= line_item.quantity %> x <%= line_item.single_money %>
24
+ <%= line_item.display_amount %>
25
+ </span>
26
+ </td>
27
+ </tr>
@@ -0,0 +1,13 @@
1
+ <tr>
2
+ <td class="purchase_footer" valign="middle"></td>
3
+ <td class="purchase_footer" valign="middle">
4
+ <p class="f-fallback purchase_total purchase_total--label">
5
+ <%= Spree.t('order_mailer.subtotal') %>
6
+ </p>
7
+ </td>
8
+ <td class="purchase_footer" valign="middle">
9
+ <p class="f-fallback purchase_total">
10
+ <%= order.display_item_total %>
11
+ </p>
12
+ </td>
13
+ </tr>
@@ -0,0 +1,13 @@
1
+ <tr>
2
+ <td></td>
3
+ <td>
4
+ <p class="f-fallback purchase_total purchase_total--label">
5
+ <strong><%= Spree.t('order_mailer.total') %></strong>
6
+ </p>
7
+ </td>
8
+ <td>
9
+ <p class="f-fallback purchase_total">
10
+ <strong><%= order.display_total %></strong>
11
+ </p>
12
+ </td>
13
+ </tr>
@@ -1,41 +1,36 @@
1
- <table class="row header">
1
+ <h1>
2
+ <%= Spree.t('shipment_mailer.shipped_email.dear_customer', name: name_for(@shipment.order)) %>
3
+ </h1>
4
+ <p>
5
+ <%= Spree.t('shipment_mailer.shipped_email.instructions', number: @shipment.order.number) %>
6
+ </p>
7
+ <table class="purchase" role="presentation">
2
8
  <tr>
3
9
  <td>
4
- <p class="lede">
5
- <%= Spree.t('shipment_mailer.shipped_email.dear_customer') %>
6
- </p>
7
- <p>
8
- <%= Spree.t('shipment_mailer.shipped_email.instructions', number: @shipment.order.number) %>
9
- </p>
10
- <p>
11
- <%= Spree.t('shipment_mailer.shipped_email.shipment_summary') %>
12
- </p>
13
- <table class="container">
14
- <tr>
15
- <td class="wrapper last">
16
- <table class="twelve columns">
17
- <%= render collection: @shipment.manifest.map(&:line_item), partial: 'spree/shared/mailer_line_item', as: :line_item %>
18
- </table>
19
- </td>
20
- </tr>
21
- </table>
22
- <p>
23
- <%= Spree.t('shipment_mailer.shipped_email.shipping_method', shipping_method: @shipment.shipping_method.name) %>
24
- </p>
25
- <% if @shipment.tracking %>
26
- <p>
27
- <%= Spree.t('shipment_mailer.shipped_email.track_information', tracking: @shipment.tracking) %>
28
- </p>
29
- <% end %>
30
- <% if @shipment.tracking_url %>
31
- <p>
32
- <%= Spree.t('shipment_mailer.shipped_email.track_link', url: link_to(@shipment.tracking_url, @shipment.tracking_url)).html_safe %>
33
- </p>
34
- <% end %>
35
- <p>
36
- <%= Spree.t('shipment_mailer.shipped_email.thanks') %>
37
- </p>
10
+ <h3><%= Spree.t('shipment_mailer.shipped_email.shipment_summary') %></h3>
11
+ </td>
12
+ </tr>
13
+ <tr>
14
+ <td colspan="2">
15
+ <%= render 'spree/shared/purchased_items_table', line_items: @shipment.manifest.map(&:line_item), order: @shipment.order %>
38
16
  </td>
39
- <td class="expander"></td>
40
17
  </tr>
41
18
  </table>
19
+ <p>
20
+ <%= Spree.t('shipment_mailer.shipped_email.shipping_method', shipping_method: @shipment.shipping_method.name) %>
21
+ </p>
22
+ <% if @shipment.tracking %>
23
+ <p>
24
+ <%= Spree.t('shipment_mailer.shipped_email.track_information', tracking: @shipment.tracking) %>
25
+ </p>
26
+ <% end %>
27
+ <% if @shipment.tracking_url %>
28
+ <p>
29
+ <%= Spree.t('shipment_mailer.shipped_email.track_link', url: link_to(@shipment.tracking_url, @shipment.tracking_url)).html_safe %>
30
+ </p>
31
+ <% end %>
32
+ <p>
33
+ <%= Spree.t('shipment_mailer.shipped_email.thanks') %>
34
+ <br />
35
+ <%= Spree.t('shipment_mailer.shipped_email.store_team', store_name: current_store.name) %>
36
+ </p>
@@ -1,4 +1,4 @@
1
- <%= Spree.t('shipment_mailer.shipped_email.dear_customer') %>
1
+ <%= Spree.t('shipment_mailer.shipped_email.dear_customer', name: name_for(@shipment.order)) %>
2
2
 
3
3
  <%= Spree.t('shipment_mailer.shipped_email.instructions', number: @shipment.order.number) %>
4
4
 
@@ -14,3 +14,4 @@
14
14
  <%= Spree.t('shipment_mailer.shipped_email.track_link', url: @shipment.tracking_url) if @shipment.tracking_url %>
15
15
 
16
16
  <%= Spree.t('shipment_mailer.shipped_email.thanks') %>
17
+ <%= Spree.t('shipment_mailer.shipped_email.store_team', store_name: current_store.name) %>
@@ -1 +1,2 @@
1
1
  Rails.application.config.assets.precompile += %w(logo/spree_50.png noimage/*.png)
2
+ Rails.application.config.active_storage.content_types_to_serve_as_binary.delete('image/svg+xml')
@@ -13,6 +13,7 @@ en:
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
@@ -453,6 +455,7 @@ en:
453
455
  acceptance_errors: Acceptance errors
454
456
  accepted: Accepted
455
457
  account: Account
458
+ account_info: Account info
456
459
  account_updated: Account updated
457
460
  action: Action
458
461
  actions:
@@ -501,10 +504,14 @@ en:
501
504
  address_book:
502
505
  other_address: "Other address"
503
506
  add_new_shipping_address: "Add new address"
504
- new_shipping_address: "New Address"
505
- edit_shipping_address: "Edit Address"
507
+ label: Address Name
508
+ address_name_label: Address Name
509
+ address_name_placeholder: Give this address a unique name (Work, Home, etc.)
510
+ new_address: "New Address"
511
+ edit_address: "Edit Address"
512
+ remove_address: Remove Address
506
513
  no_shipping_addresses_on_file: "No addresses on file"
507
- shipping_addresses: "Addresses"
514
+ addresses: "Addresses"
508
515
  successfully_created: "Address has been successfully created."
509
516
  successfully_removed: "Address has been successfully removed."
510
517
  successfully_saved: "Saved successfully"
@@ -607,13 +614,16 @@ en:
607
614
  balance_due: Balance Due
608
615
  base_amount: Base Amount
609
616
  base_percent: Base Percent
617
+ basic_information: Basic Information
610
618
  bill_address: Bill Address
611
619
  billing: Billing
612
620
  billing_address: Billing Address
613
621
  both: Both
622
+ breadcrumbs: Breadcrumbs
614
623
  calculated_reimbursements: Calculated Reimbursements
615
624
  calculator: Calculator
616
625
  calculator_settings_warning: If you are changing the calculator type, you must save first before you can edit the calculator settings
626
+ call_us_now: 'Call us now: '
617
627
  cancel: cancel
618
628
  canceled: Canceled
619
629
  canceler: Canceler
@@ -627,18 +637,20 @@ en:
627
637
  cannot_set_shipping_method_without_address: Cannot set shipping method until customer details are provided.
628
638
  capture: Capture
629
639
  capture_events: Capture events
630
- card_code: Card Code
640
+ card_code: Card Varification Code (CVC)
631
641
  card_number: Card Number
632
642
  card_type: Brand
633
643
  card_type_is: Card type is
634
644
  cart: Cart
635
645
  cart_page:
636
646
  add_promo_code: ADD PROMO CODE
647
+ change_quantity: Change quantity
637
648
  checkout: checkout
638
649
  empty_info: 'Your cart is empty.'
639
650
  header: Your shopping cart
640
651
  product: product
641
652
  quantity: quantity
653
+ remove_from_cart: Remove from cart
642
654
  title: Shopping Cart
643
655
  cart_subtotal:
644
656
  one: 'Subtotal (1 item)'
@@ -655,6 +667,8 @@ en:
655
667
  charged: Charged
656
668
  checkout: Checkout
657
669
  checkout_page:
670
+ main_navigation: Main navigation
671
+ checkout_navigation: Checkout navigation
658
672
  back_to_cart: back to the cart
659
673
  delivery_method: delivery method
660
674
  header: Checkout
@@ -674,12 +688,15 @@ en:
674
688
  close_all_adjustments: Close All Adjustments
675
689
  code: Code
676
690
  company: Company
691
+ compare_at_price: Compare at price
677
692
  complete: complete
678
693
  configuration: Configuration
679
694
  configurations: Configurations
680
695
  confirm: Confirm
681
696
  confirm_delete: Confirm Deletion
682
697
  confirm_password: Password Confirmation
698
+ contact_email: Contact email
699
+ contact_phone: Contact phone
683
700
  contact_us: Contact us
684
701
  continue: Continue
685
702
  continue_as_guest: Continue as a guest
@@ -725,24 +742,56 @@ en:
725
742
  credited: Credited
726
743
  credits: Credits
727
744
  currency: Currency
745
+ currencies: Currencies
728
746
  currency_settings: Currency Settings
729
747
  current: Current
730
- current_promotion_usage: ! 'Current Usage: %{count}'
748
+ current_promotion_usage: ! 'current usage: %{count}'
731
749
  customer: Customer
732
750
  customer_details: Customer Details
733
751
  customer_details_updated: Customer Details Updated
734
752
  customer_return: Customer Return
735
753
  customer_returns: Customer Returns
736
754
  customer_search: Customer Search
755
+ customer_support_email: Customer Support Email
756
+ new_order_notifications_email: New Order Notifications Email
737
757
  cut: Cut
738
758
  cvv: CVV
739
759
  cvv_response: CVV Response
740
760
  date: Date
741
761
  date_completed: Date Completed
742
762
  date_picker:
763
+ am: 'AM'
743
764
  first_day: 0
744
765
  format: ! '%Y/%m/%d'
745
- js_format: yy/mm/dd
766
+ hourAriaLabel: 'Hour'
767
+ js_format: Y/m/d
768
+ js_date_time: Y/m/d - H:i
769
+ minuteAriaLabel: 'Minute'
770
+ pm: 'PM'
771
+ rangeSeparator: ' to '
772
+ scrollTitle: 'Scroll to increment'
773
+ toggleTitle: 'Click to toggle'
774
+ weekAbbreviation: 'Wk'
775
+ yearAriaLabel: 'Year'
776
+ sun: 'Sun'
777
+ mon: 'Mon'
778
+ tue: 'Tue'
779
+ wed: 'Wed'
780
+ thu: 'Thu'
781
+ fri: 'Fri'
782
+ sat: 'Sat'
783
+ lh_jan: 'January'
784
+ lh_feb: 'February'
785
+ lh_mar: 'March'
786
+ lh_apr: 'April'
787
+ lh_may: 'May'
788
+ lh_jun: 'June'
789
+ lh_jul: 'July'
790
+ lh_aug: 'August'
791
+ lh_sep: 'September'
792
+ lh_oct: 'October'
793
+ lh_nov: 'November'
794
+ lh_dec: 'December'
746
795
  date_range: Date Range
747
796
  default: Default
748
797
  default_country_cannot_be_deleted: Default country cannot be deleted
@@ -792,6 +841,8 @@ en:
792
841
  empty_cart: Empty Cart
793
842
  enable_mail_delivery: Enable Mail Delivery
794
843
  end: End
844
+ ends_at: Ends at
845
+ ending_at: Ending at
795
846
  ending_in: Ending in
796
847
  error: error
797
848
  errors:
@@ -831,22 +882,27 @@ en:
831
882
  extension: Extension
832
883
  extensions_directory: Extensions Directory
833
884
  existing_shipments: Existing shipments
885
+ facebook: Facebook
834
886
  failed_payment_attempts: Failed Payment Attempts
835
887
  filename: Filename
836
888
  fill_in_customer_info: Please fill in customer info
837
889
  filter: Filter
890
+ filterable: Filterable
838
891
  filter_results: Filter Results
839
892
  finalize: Finalize
840
893
  find_a_taxon: Find a Taxon
841
894
  finalized: Finalized
842
895
  first_item: First Item
843
896
  first_name: First Name
897
+ firstname: First Name
844
898
  first_name_begins_with: First Name Begins With
845
899
  flat_percent: Flat Percent
846
900
  flat_rate_per_order: Flat Rate
847
901
  flexible_rate: Flexible Rate
848
902
  follow_us: Follow us
903
+ footer_info: Footer info
849
904
  forgot_password: Forgot password?
905
+ free: Free
850
906
  free_shipping: Free Shipping
851
907
  free_shipping_amount: "-"
852
908
  front_end: Front End
@@ -855,6 +911,7 @@ en:
855
911
  general: General
856
912
  general_settings: General Settings
857
913
  generate_code: Generate coupon code
914
+ get_back_to_the: Get back to the
858
915
  go_to_category: Go to category
859
916
  go_to_facebook: Go to facebook
860
917
  go_to_homepage: Go to Home Page
@@ -863,13 +920,15 @@ en:
863
920
  guest_checkout: Guest Checkout
864
921
  guest_user_account: Checkout as a Guest
865
922
  has_no_shipped_units: has no shipped units
923
+ header_banner: Header banner
866
924
  height: Height
867
925
  hide_from_subcategories_nav: Hide from subcategories navigation
868
926
  home: Home
927
+ home_page: homepage
869
928
  homepage:
870
929
  bestsellers: BESTSELLERS
871
930
  fashion_trends: FASHION TRENDS
872
- fashion_trends_note: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.
931
+ 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.
873
932
  men: MEN
874
933
  new: NEW
875
934
  new_collection: NEW COLLECTION
@@ -878,7 +937,7 @@ en:
878
937
  shop_now: SHOP NOW
879
938
  sportswear: SPORTSWEAR
880
939
  streetstyle: STREETSTYLE
881
- summer_2019: Summer 2019
940
+ summer_2020: Summer 2020
882
941
  summer_collection: Summer Collection
883
942
  summer_sale: SUMMER SALE
884
943
  trending: TRENDING
@@ -889,6 +948,8 @@ en:
889
948
  available_locales: Available Locales
890
949
  fields: Fields
891
950
  language: Language
951
+ country: Country
952
+ default_country: Default Country
892
953
  localization_settings: Localization Settings
893
954
  only_incomplete: Only incomplete
894
955
  only_complete: Only complete
@@ -897,6 +958,8 @@ en:
897
958
  supported_locales: Supported Locales
898
959
  this_file_language: English (US)
899
960
  translations: Translations
961
+ checkout_zone_warning_html: "Selecting a Zone will limit customers on Checkout to Addresses in Countries in that Zone. <br />
962
+ Please see documentation: <a href='https://guides.spreecommerce.org/user/configuration/configuring_geography.html#zones' target='_blank' class='alert-link'>https://guides.spreecommerce.org/user/configuration/configuring_geography.html#zones</a>"
900
963
  icon: Icon
901
964
  image: Image
902
965
  images: Images
@@ -912,6 +975,7 @@ en:
912
975
  info_number_of_skus_not_shown:
913
976
  one: "and one other"
914
977
  other: "and %{count} others"
978
+ instagram: Instagram
915
979
  instructions_to_reset_password: Please enter your email on the form below
916
980
  insufficient_stock: Insufficient stock available, only %{on_hand} remaining
917
981
  insufficient_stock_item_quantity: Insufficient stock quantity available
@@ -919,6 +983,7 @@ en:
919
983
  intercept_email_address: Intercept Email Address
920
984
  intercept_email_instructions: Override email recipient and replace with this address.
921
985
  internal_name: Internal Name
986
+ internationalization: Internationalization
922
987
  invalid_credit_card: Invalid credit card.
923
988
  invalid_exchange_variant: Invalid exchange variant.
924
989
  invalid_payment_provider: Invalid payment provider.
@@ -929,7 +994,9 @@ en:
929
994
  inventory_error_flash_for_insufficient_quantity: An item in your cart has become unavailable.
930
995
  inventory_state: Inventory State
931
996
  is_not_available_to_shipment_address: is not available to shipment address
932
- iso_name: Iso Name
997
+ iso: ISO Alpha-2
998
+ iso3: ISO Alpha-3
999
+ iso_name: ISO Name
933
1000
  issued_on: Issued On
934
1001
  item: Item
935
1002
  item_description: Item Description
@@ -946,9 +1013,11 @@ en:
946
1013
  items_reimbursed: Items reimbursed
947
1014
  join_slack: Join Slack
948
1015
  last_name: Last Name
1016
+ lastname: Last Name
949
1017
  last_name_begins_with: Last Name Begins With
950
1018
  learn_more: Learn More
951
1019
  lifetime_stats: Lifetime Stats
1020
+ limit_usage_to: Limit usage to
952
1021
  line_item_adjustments: "Line item adjustments"
953
1022
  list: List
954
1023
  loading: Loading
@@ -967,15 +1036,18 @@ en:
967
1036
  login_as_existing: Login as Existing Customer
968
1037
  login_failed: Login authentication failed.
969
1038
  login_name: Login
1039
+ logo: Logo
970
1040
  logo_alt: Brand logo
971
1041
  logout: Logout
972
1042
  look_for_similar_items: Look for similar items
973
1043
  make_refund: Make refund
974
1044
  make_sure_the_above_reimbursement_amount_is_correct: Make sure the above reimbursement amount is correct
975
1045
  mail_from_address: Mail from address
1046
+ mailer_logo: Mailer logo (JPG or PNG images only)
976
1047
  manage_promotion_categories: Manage Promotion Categories
977
1048
  manual_intervention_required: Manual intervention required
978
1049
  manage_variants: Manage Variants
1050
+ master: Master
979
1051
  master_price: Master Price
980
1052
  master_sku: Master SKU
981
1053
  match_choices:
@@ -1000,6 +1072,8 @@ en:
1000
1072
  name_on_card: Name on card
1001
1073
  name_or_sku: Name or SKU (enter at least first 3 characters of product name)
1002
1074
  nav_bar:
1075
+ admin_panel: Admin Panel
1076
+ change_country: Change country
1003
1077
  close_menu: Close menu
1004
1078
  go_to_previous_menu: Go to previous menu
1005
1079
  log_in: LOG IN
@@ -1010,6 +1084,8 @@ en:
1010
1084
  show_search: Show search
1011
1085
  show_user_menu: Show user menu
1012
1086
  sign_up: SIGN UP
1087
+ desktop: Desktop navigation
1088
+ mobile: Mobile navigation
1013
1089
  new: New
1014
1090
  new_adjustment: New Adjustment
1015
1091
  new_customer: Create new account
@@ -1053,6 +1129,7 @@ en:
1053
1129
  no_actions_added: No actions added
1054
1130
  no_address_given: No address given
1055
1131
  no_available_date_set: No available date set
1132
+ no_country: No country set
1056
1133
  no_payment_found: No payment found
1057
1134
  no_pending_payments: No pending payments
1058
1135
  no_product_available:
@@ -1076,6 +1153,7 @@ en:
1076
1153
  not_found: ! '%{resource} is not found'
1077
1154
  note: Note
1078
1155
  notice_messages:
1156
+ prices_saved: Prices successfully saved
1079
1157
  product_cloned: Product has been cloned
1080
1158
  product_deleted: Product has been deleted
1081
1159
  product_not_cloned: "Product could not be cloned. Reason: %{error}"
@@ -1109,17 +1187,25 @@ en:
1109
1187
  order_mailer:
1110
1188
  subtotal: ! 'Subtotal:'
1111
1189
  total: ! 'Order Total:'
1190
+ store_team: '%{store_name} Team'
1112
1191
  cancel_email:
1113
- dear_customer: Dear Customer,
1192
+ dear_customer: Dear %{name},
1114
1193
  instructions: Your order has been CANCELED. Please retain this cancellation information for your records.
1115
1194
  order_summary_canceled: Order %{number} Summary [CANCELED]
1116
1195
  subject: Cancellation of Order
1196
+ thanks: Thank you for your business.
1117
1197
  confirm_email:
1118
- dear_customer: Dear Customer,
1198
+ dear_customer: Dear %{name},
1119
1199
  instructions: Please review and retain the following order information for your records.
1120
1200
  order_summary: Order %{number} Summary
1121
1201
  subject: Order Confirmation
1122
1202
  thanks: Thank you for your business.
1203
+ store_owner_notification_email:
1204
+ heading: New Order Received
1205
+ instructions: You have received a new order.
1206
+ order_summary: Order %{number} Summary
1207
+ subject: '%{store_name} received a new order'
1208
+ thanks: Thank you for your business.
1123
1209
  order_not_found: We couldn't find your order. Please try that action again.
1124
1210
  order_number: Order %{number}
1125
1211
  order_processed_successfully: Your order has been processed successfully
@@ -1148,6 +1234,7 @@ en:
1148
1234
  backordered_confirm_info: Selected item is backordered so expect delays. Are you sure you want to order it?
1149
1235
  overview: Overview
1150
1236
  package_from: package from
1237
+ page_not_found: Sorry! Page you are looking can’t be found.
1151
1238
  pagination:
1152
1239
  next_page: next page &raquo;
1153
1240
  previous_page: ! '&laquo; previous page'
@@ -1205,7 +1292,6 @@ en:
1205
1292
  done: DONE
1206
1293
  default: DEFAULT
1207
1294
  filter_by: FILTER BY
1208
- home: Home
1209
1295
  newest_first: NEWEST FIRST
1210
1296
  no_results: No results
1211
1297
  no_results_found: No results found
@@ -1230,9 +1316,12 @@ en:
1230
1316
  preferred_reimbursement_type: Preferred Reimbursement Type
1231
1317
  presentation: Presentation
1232
1318
  preview_product: Preview Product
1319
+ preview_taxon: Preview Taxon
1233
1320
  previous: Previous
1234
1321
  previous_state_missing: "n/a"
1322
+ previously_used_card: Previously Used Cards
1235
1323
  price: Price
1324
+ prices: Prices
1236
1325
  price_range: Price Range
1237
1326
  price_sack: Price Sack
1238
1327
  process: Process
@@ -1378,8 +1467,9 @@ en:
1378
1467
  return_items_cannot_be_associated_with_multiple_orders: Return items cannot be associated with multiple orders.
1379
1468
  reimbursement_mailer:
1380
1469
  reimbursement_email:
1470
+ store_team: '%{store_name} Team'
1381
1471
  days_to_send: ! 'You have %{days} days to send back any items awaiting exchange.'
1382
- dear_customer: Dear Customer,
1472
+ dear_customer: Dear %{name},
1383
1473
  exchange_summary: Exchange Summary
1384
1474
  for: for
1385
1475
  instructions: Your reimbursement has been processed.
@@ -1417,11 +1507,14 @@ en:
1417
1507
  security_settings: Security Settings
1418
1508
  select: Select
1419
1509
  select_from_prototype: Select From Prototype
1510
+ select_a_date: Select a date
1511
+ select_a_date_range: Select a date range
1420
1512
  select_a_return_authorization_reason: Select a reason for the return authorization
1421
1513
  select_a_stock_location: Select a stock location
1422
1514
  select_a_store_credit_reason: Select a reason for the store credit
1423
1515
  select_stock: Select stock
1424
1516
  selected_quantity_not_available: ! 'selected of %{item} is not available.'
1517
+ seo: SEO
1425
1518
  send_copy_of_all_mails_to: Send Copy of All Mails To
1426
1519
  send_mails_as: Send Mails As
1427
1520
  seo_title: SEO title
@@ -1429,6 +1522,7 @@ en:
1429
1522
  server_error: The server returned an error
1430
1523
  settings: Settings
1431
1524
  ship: Ship
1525
+ ship_to: "Shipping to:"
1432
1526
  ship_address: Ship Address
1433
1527
  ship_total: Ship Total
1434
1528
  shipment: Shipment
@@ -1436,7 +1530,8 @@ en:
1436
1530
  shipment_details: "From %{stock_location} via %{shipping_method}"
1437
1531
  shipment_mailer:
1438
1532
  shipped_email:
1439
- dear_customer: Dear Customer,
1533
+ store_team: '%{store_name} Team'
1534
+ dear_customer: Dear %{name},
1440
1535
  instructions: Your order %{number} has been shipped
1441
1536
  shipment_summary: Shipment Summary for order
1442
1537
  shipping_method: "Shipping method: %{shipping_method}"
@@ -1480,18 +1575,24 @@ en:
1480
1575
  show_discontinued: Show Discontinued
1481
1576
  show_only_complete_orders: Only show complete orders
1482
1577
  show_only_considered_risky: Only show risky orders
1578
+ show_property: Show Property
1483
1579
  show_rate_in_label: Show rate in label
1580
+ show_store_currency_selector:
1581
+ short: Show Store selector
1582
+ long: Display the Store selector in the main nav bar of Storefront and allow users to change Store and Currency
1484
1583
  sign_up: Sign Up
1485
1584
  sku: SKU
1486
1585
  skus: SKUs
1487
1586
  slug: Slug
1488
1587
  source: Source
1588
+ social: Social
1489
1589
  special_instructions: Special Instructions
1490
1590
  split: Split
1491
1591
  spree_gateway_error_flash_for_checkout: There was a problem with your payment information. Please check your information and try again.
1492
1592
  ssl:
1493
1593
  change_protocol: "Please switch to using HTTP (rather than HTTPS) and retry this request."
1494
1594
  start: Start
1595
+ starting_from: Starts at
1495
1596
  state: State
1496
1597
  state_based: State Based
1497
1598
  states: States
@@ -1525,6 +1626,7 @@ en:
1525
1626
  reimbursed: Reimbursed
1526
1627
  resumed: Resumed
1527
1628
  returned: Returned
1629
+ shipment: Shipment
1528
1630
  shipped: Shipped
1529
1631
  void: Void
1530
1632
  states_required: States Required
@@ -1542,7 +1644,8 @@ en:
1542
1644
  stock_transfer_name: Stock Transfer
1543
1645
  stock_transfer:
1544
1646
  errors:
1545
- must_have_variant: You must add atleast one variant.
1647
+ must_have_variant: You must add at least one variant.
1648
+ variants_unavailable: "Some variants are not available on %{stock}"
1546
1649
  stock_transfers: Stock Transfers
1547
1650
  stop: Stop
1548
1651
  store: Store
@@ -1597,6 +1700,8 @@ en:
1597
1700
  successfully_removed: ! '%{resource} has been successfully removed!'
1598
1701
  successfully_updated: ! '%{resource} has been successfully updated!'
1599
1702
  summary: Summary
1703
+ supported_currencies: Supported Currencies
1704
+ supported_currencies_long: A comma separated list of supported currencies
1600
1705
  tax: Tax
1601
1706
  tax_included: "Tax (incl.)"
1602
1707
  tax_categories: Tax Categories
@@ -1621,7 +1726,7 @@ en:
1621
1726
  taxonomy_categories_name: Categories
1622
1727
  taxonomy_edit: Edit taxonomy
1623
1728
  taxonomy_tree_error: The requested change has not been accepted and the tree has been returned to its previous state, please try again.
1624
- taxonomy_tree_instruction: ! '* Right click a child in the tree to access the menu for adding, deleting or sorting a child.'
1729
+ taxonomy_tree_instruction: ! '* Right click (or double tap on iOS device) a child in the tree to access the menu for adding, deleting or sorting a child.'
1625
1730
  taxons: Taxons
1626
1731
  test: Test
1627
1732
  test_mailer:
@@ -1657,6 +1762,7 @@ en:
1657
1762
  tree: Tree
1658
1763
  type: Type
1659
1764
  type_to_search: Type to search
1765
+ twitter: Twitter
1660
1766
  unable_to_connect_to_gateway: Unable to connect to gateway.
1661
1767
  unable_to_create_reimbursements: Unable to create reimbursements because there are items pending manual intervention.
1662
1768
  under_price: Under %{price}
@@ -1689,6 +1795,7 @@ en:
1689
1795
  value: Value
1690
1796
  variant: Variant
1691
1797
  variant_placeholder: Choose a variant
1798
+ variant_prices_search_placeholder: Search for SKU or variant name...
1692
1799
  variants: Variants
1693
1800
  version: Version
1694
1801
  void: Void
@@ -1702,5 +1809,7 @@ en:
1702
1809
  your_order_is_empty_add_product: Your order is empty, please search for and add a product above
1703
1810
  zip: Zip
1704
1811
  zipcode: Zip Code
1812
+ zipcode_required: Zip Code Required
1705
1813
  zone: Zone
1706
1814
  zones: Zones
1815
+ no_limits_zone: No Limits