From 3bc09cfcfbbf3956dae60d231150498ff4266d81 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Thu, 14 May 2020 21:03:21 +0000 Subject: [PATCH 01/49] Bump stripe from 5.15.0 to 5.22.0 Bumps [stripe](https://github.com/stripe/stripe-ruby) from 5.15.0 to 5.22.0. - [Release notes](https://github.com/stripe/stripe-ruby/releases) - [Changelog](https://github.com/stripe/stripe-ruby/blob/master/CHANGELOG.md) - [Commits](https://github.com/stripe/stripe-ruby/compare/v5.15.0...v5.22.0) Signed-off-by: dependabot-preview[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 2414376473..b9c2a390c3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -636,7 +636,7 @@ GEM tilt (~> 1.1, != 1.3.0) state_machine (1.2.0) stringex (1.5.1) - stripe (5.15.0) + stripe (5.22.0) test-unit (3.3.5) power_assert thor (0.20.3) From 473b4c63c4bcd180cc2bac5241e93120b38097c9 Mon Sep 17 00:00:00 2001 From: Eduardo Date: Tue, 5 May 2020 20:38:07 -0300 Subject: [PATCH 02/49] add Shipping Method filter to admin/orders page --- .../admin/orders/controllers/orders_controller.js.coffee | 1 + app/views/spree/admin/orders/_filters.html.haml | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/app/assets/javascripts/admin/orders/controllers/orders_controller.js.coffee b/app/assets/javascripts/admin/orders/controllers/orders_controller.js.coffee index f6d4c964d6..751ddf8866 100644 --- a/app/assets/javascripts/admin/orders/controllers/orders_controller.js.coffee +++ b/app/assets/javascripts/admin/orders/controllers/orders_controller.js.coffee @@ -37,6 +37,7 @@ angular.module("admin.orders").controller "ordersCtrl", ($scope, $timeout, Reque 'q[distributor_id_in][]': $scope['q']['distributor_id_in'], 'q[order_cycle_id_in][]': $scope['q']['order_cycle_id_in'], 'q[s]': $scope.sorting || 'completed_at desc', + shipping_method_id: $scope.shipping_method_id, per_page: $scope.per_page, page: page } diff --git a/app/views/spree/admin/orders/_filters.html.haml b/app/views/spree/admin/orders/_filters.html.haml index b41c2d194a..63c65fd488 100644 --- a/app/views/spree/admin/orders/_filters.html.haml +++ b/app/views/spree/admin/orders/_filters.html.haml @@ -32,6 +32,11 @@ %label = check_box_tag "q[completed_at_not_null]", 1, true, {'ng-model' => 'q.completed_at_not_null'} = t(:show_only_complete_orders) + .field + = label_tag nil, t(:shipping_method) + = select_tag("shipping_method_id", + options_for_select(Spree::ShippingMethod.managed_by(spree_current_user).collect {|s| [t("spree.shipping_method.#{s.name}"), s.id]}), + {include_blank: true, class: 'select2', 'ng-model' => 'shipping_method_id'}) .field-block.alpha.eight.columns = label_tag nil, t(:distributors) = select_tag("q[distributor_id_in]", From 6d54e6d4a0f947d773303c12bd0cefc7a97fbe2f Mon Sep 17 00:00:00 2001 From: Eduardo Date: Tue, 5 May 2020 20:38:34 -0300 Subject: [PATCH 03/49] change SearchOrders service to search with shipping_method --- app/services/search_orders.rb | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/app/services/search_orders.rb b/app/services/search_orders.rb index 4ff0f717da..30afb964a7 100644 --- a/app/services/search_orders.rb +++ b/app/services/search_orders.rb @@ -24,13 +24,25 @@ class SearchOrders attr_reader :params, :current_user def fetch_orders - @search = ::Permissions::Order.new(current_user).editable_orders.ransack(params[:q]) + @search = search_query.ransack(params[:q]) return paginated_results if using_pagination? @search.result(distinct: true) end + def search_query + base_query = ::Permissions::Order.new(current_user).editable_orders + return base_query unless params[:shipping_method_id] + + base_query + .joins(shipments: :shipping_rates) + .where(spree_shipping_rates: { + selected: true, + shipping_method_id: params[:shipping_method_id] + }) + end + def paginated_results @search.result(distinct: true) .page(params[:page]) From ed14a92c7b7a9792de574a391f895bda1bfb6dcb Mon Sep 17 00:00:00 2001 From: Luis Ramos Date: Mon, 11 May 2020 17:28:51 +0100 Subject: [PATCH 04/49] Make OC selector wider to support more characters where there is enough space for that --- app/assets/stylesheets/darkswarm/_shop-navigation.css.scss | 6 +++++- .../stylesheets/darkswarm/distributor_header.css.scss | 4 ---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/assets/stylesheets/darkswarm/_shop-navigation.css.scss b/app/assets/stylesheets/darkswarm/_shop-navigation.css.scss index 95bd6b1059..04deec214c 100644 --- a/app/assets/stylesheets/darkswarm/_shop-navigation.css.scss +++ b/app/assets/stylesheets/darkswarm/_shop-navigation.css.scss @@ -71,7 +71,7 @@ ordercycle { select, p { - width: inherit; + width: 200px; display: inline-block; color: $white; background-color: transparent; @@ -89,6 +89,10 @@ ordercycle { width: 100%; min-width: 0; } + + @media all and (min-width: 640px) and (max-width: 1024px), (min-width: 1200px) { + width: 250px; + } } option { diff --git a/app/assets/stylesheets/darkswarm/distributor_header.css.scss b/app/assets/stylesheets/darkswarm/distributor_header.css.scss index 8e9ebf769b..7df15dfcc4 100644 --- a/app/assets/stylesheets/darkswarm/distributor_header.css.scss +++ b/app/assets/stylesheets/darkswarm/distributor_header.css.scss @@ -20,10 +20,6 @@ section { padding: 30px 0 0; position: relative; - select { - width: 200px; - } - img { display: block; height: 100px; From b2bfe28173e930ee44784ce9979a9114d6e64b25 Mon Sep 17 00:00:00 2001 From: Luis Ramos Date: Mon, 11 May 2020 17:35:03 +0100 Subject: [PATCH 05/49] Remove extra right pad on OC selector, in mobile, this will make the selector be centered --- app/assets/stylesheets/darkswarm/_shop-navigation.css.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/app/assets/stylesheets/darkswarm/_shop-navigation.css.scss b/app/assets/stylesheets/darkswarm/_shop-navigation.css.scss index 04deec214c..355b84b8ac 100644 --- a/app/assets/stylesheets/darkswarm/_shop-navigation.css.scss +++ b/app/assets/stylesheets/darkswarm/_shop-navigation.css.scss @@ -111,6 +111,7 @@ ordercycle { @include breakpoint(mobile) { display: flex; + margin-right: 0; } } From 12f512e98b4ebbc36d6400ef94978b4005164e4f Mon Sep 17 00:00:00 2001 From: Luis Ramos Date: Mon, 11 May 2020 17:56:27 +0100 Subject: [PATCH 06/49] Move arrow on OC selector a little to the right so it's centered between end of text (if max length reached) and border --- app/assets/stylesheets/darkswarm/_shop-navigation.css.scss | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/assets/stylesheets/darkswarm/_shop-navigation.css.scss b/app/assets/stylesheets/darkswarm/_shop-navigation.css.scss index 355b84b8ac..2f1d919db6 100644 --- a/app/assets/stylesheets/darkswarm/_shop-navigation.css.scss +++ b/app/assets/stylesheets/darkswarm/_shop-navigation.css.scss @@ -76,13 +76,14 @@ ordercycle { color: $white; background-color: transparent; border: 0; + border-radius: 0 $radius-small $radius-small 0; margin-bottom: 0; font-size: 1em; line-height: 1.3em; padding: 0.5em 1.25em 0.5em 0.75em; height: 2.35em; - background-size: 30px auto; - border-radius: 0 $radius-small $radius-small 0; + background-position-x: 102%; + background-size: 30px auto; min-width: 13em; @include breakpoint(mobile) { From 53c0bcbd0bdda1bfef740dfd0b32dd306b352a72 Mon Sep 17 00:00:00 2001 From: Robin Klaus Date: Fri, 22 May 2020 13:22:57 +1000 Subject: [PATCH 07/49] Changed translation syntax to normal t() call and lazy lookup. --- app/views/spree/admin/variants/_autocomplete.js.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/spree/admin/variants/_autocomplete.js.erb b/app/views/spree/admin/variants/_autocomplete.js.erb index 527b55568c..d4bd8a68b5 100644 --- a/app/views/spree/admin/variants/_autocomplete.js.erb +++ b/app/views/spree/admin/variants/_autocomplete.js.erb @@ -57,7 +57,7 @@ {{else}} - <%= Spree.t(:out_of_stock) %> + <%= t('admin.subscriptions.stock.out_of_stock') %> 0 {{/if}} From b2b988b0636eb5b7200ba4805bae48df1cb973e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Turbelin?= Date: Sun, 24 May 2020 14:41:40 +0200 Subject: [PATCH 08/49] Apply new order directly inside service --- app/services/bulk_invoice_service.rb | 7 +++++-- spec/services/bulk_invoice_service_spec.rb | 7 +++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/app/services/bulk_invoice_service.rb b/app/services/bulk_invoice_service.rb index 18921bd413..ab69df03ca 100644 --- a/app/services/bulk_invoice_service.rb +++ b/app/services/bulk_invoice_service.rb @@ -7,9 +7,8 @@ class BulkInvoiceService def start_pdf_job(order_ids) pdf = CombinePDF.new - orders = Spree::Order.where(id: order_ids) - orders.each do |order| + orders_from(order_ids).each do |order| invoice = renderer.render_to_string(order) pdf << CombinePDF.parse(invoice) @@ -29,6 +28,10 @@ class BulkInvoiceService private + def orders_from(order_ids) + Spree::Order.where(id: order_ids).order("completed_at DESC") + end + def new_invoice_id Time.zone.now.to_i.to_s end diff --git a/spec/services/bulk_invoice_service_spec.rb b/spec/services/bulk_invoice_service_spec.rb index 4056a1b88f..1874a0fcb4 100644 --- a/spec/services/bulk_invoice_service_spec.rb +++ b/spec/services/bulk_invoice_service_spec.rb @@ -47,4 +47,11 @@ describe BulkInvoiceService do expect(filepath).to eq 'tmp/invoices/1234567.pdf' end end + + describe "#orders_from" do + it "orders with completed desc" do + expect(service.send(:orders_from, [1, 2]).to_sql) + .to include('ORDER BY completed_at DESC') + end + end end From 50a63139e3fb8d2bf8703ed76fb2911f1d2ba99b Mon Sep 17 00:00:00 2001 From: Robin Klaus Date: Tue, 26 May 2020 15:14:26 +1000 Subject: [PATCH 09/49] Changed translation syntax to normal t() call and lazy lookup. --- app/views/spree/admin/variants/_autocomplete.js.erb | 2 +- config/locales/en.yml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/views/spree/admin/variants/_autocomplete.js.erb b/app/views/spree/admin/variants/_autocomplete.js.erb index d4bd8a68b5..5ef095925c 100644 --- a/app/views/spree/admin/variants/_autocomplete.js.erb +++ b/app/views/spree/admin/variants/_autocomplete.js.erb @@ -57,7 +57,7 @@ {{else}} - <%= t('admin.subscriptions.stock.out_of_stock') %> + <%= t('.out_of_stock') %> 0 {{/if}} diff --git a/config/locales/en.yml b/config/locales/en.yml index e2a70ff412..2973475cae 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -3368,6 +3368,7 @@ See the %{link} to find out more about %{sitename}'s features and to start using display_as_placeholder: 'eg. 2 kg' display_name_placeholder: 'eg. Tomatoes' autocomplete: + out_of_stock: "Out of Stock" producer_name: "Producer" unit: "Unit" shared: From a376a17f64583d56bf41061422f48498bfaf295d Mon Sep 17 00:00:00 2001 From: Luis Ramos Date: Mon, 11 May 2020 17:59:03 +0100 Subject: [PATCH 10/49] Group related properties together --- .../stylesheets/darkswarm/_shop-navigation.css.scss | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/assets/stylesheets/darkswarm/_shop-navigation.css.scss b/app/assets/stylesheets/darkswarm/_shop-navigation.css.scss index 2f1d919db6..d54464d921 100644 --- a/app/assets/stylesheets/darkswarm/_shop-navigation.css.scss +++ b/app/assets/stylesheets/darkswarm/_shop-navigation.css.scss @@ -63,6 +63,8 @@ ordercycle { select { background-image: url('/assets/white-caret.svg'); + background-size: 30px auto; + background-position-x: 102%; } p { @@ -71,20 +73,18 @@ ordercycle { select, p { - width: 200px; display: inline-block; color: $white; background-color: transparent; border: 0; border-radius: 0 $radius-small $radius-small 0; margin-bottom: 0; + padding: 0.5em 1.25em 0.5em 0.75em; font-size: 1em; line-height: 1.3em; - padding: 0.5em 1.25em 0.5em 0.75em; height: 2.35em; - background-position-x: 102%; - background-size: 30px auto; min-width: 13em; + width: 200px; @include breakpoint(mobile) { width: 100%; From 2c55bef544b8e5753cd0f5ab3259b562c4543e8b Mon Sep 17 00:00:00 2001 From: Luis Ramos Date: Tue, 12 May 2020 13:01:00 +0100 Subject: [PATCH 11/49] Remove unnecessary padding This is looking broken in ipad mini 3 --- app/assets/stylesheets/darkswarm/_shop-navigation.css.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/stylesheets/darkswarm/_shop-navigation.css.scss b/app/assets/stylesheets/darkswarm/_shop-navigation.css.scss index d54464d921..a360c8f606 100644 --- a/app/assets/stylesheets/darkswarm/_shop-navigation.css.scss +++ b/app/assets/stylesheets/darkswarm/_shop-navigation.css.scss @@ -168,7 +168,7 @@ shop ordercycle { @include breakpoint(tablet) { float: none; - padding: 0 0 10px; + padding: 0; } } From 3e0839de73b42fe774f4494c776dc2d04d4cfc2c Mon Sep 17 00:00:00 2001 From: Luis Ramos Date: Tue, 12 May 2020 13:32:38 +0100 Subject: [PATCH 12/49] Increase warning sign line height so that it renders correctly on smaller screens --- app/assets/stylesheets/darkswarm/shop.css.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/app/assets/stylesheets/darkswarm/shop.css.scss b/app/assets/stylesheets/darkswarm/shop.css.scss index 6c477acb48..0c46523184 100644 --- a/app/assets/stylesheets/darkswarm/shop.css.scss +++ b/app/assets/stylesheets/darkswarm/shop.css.scss @@ -234,6 +234,7 @@ $sidebar-footer-height: 5em; .warning-sign { margin: 0 10px 0 5px; display: inline-block; + line-height: 1.9rem; strong { color: $grey-650; From 19ef66f3ad323c049ed4c87509dd2b01bed83a55 Mon Sep 17 00:00:00 2001 From: Lucas Hiago Date: Fri, 29 May 2020 21:51:57 -0300 Subject: [PATCH 13/49] Change mail method config route --- app/controllers/spree/admin/mail_methods_controller.rb | 2 +- app/views/spree/admin/mail_methods/edit.html.haml | 4 ++-- app/views/spree/admin/shared/_configuration_menu.html.haml | 2 +- config/routes/spree.rb | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/controllers/spree/admin/mail_methods_controller.rb b/app/controllers/spree/admin/mail_methods_controller.rb index e95739148d..a21e3afe7d 100644 --- a/app/controllers/spree/admin/mail_methods_controller.rb +++ b/app/controllers/spree/admin/mail_methods_controller.rb @@ -23,7 +23,7 @@ module Spree rescue StandardError => e flash[:error] = Spree.t('admin.mail_methods.testmail.error') % { e: e } ensure - redirect_to edit_admin_mail_method_url + redirect_to edit_admin_mail_methods_url end private diff --git a/app/views/spree/admin/mail_methods/edit.html.haml b/app/views/spree/admin/mail_methods/edit.html.haml index 90938e4542..9e79403270 100644 --- a/app/views/spree/admin/mail_methods/edit.html.haml +++ b/app/views/spree/admin/mail_methods/edit.html.haml @@ -5,11 +5,11 @@ - content_for :page_actions do %li - = link_to_with_icon 'icon-envelope-alt', t("spree.admin.mail_methods.send_testmail"), testmail_admin_mail_method_path, method: :post, title: t("spree.admin.mail_methods.send_testmail"), class: 'send_mail button no-text' + = link_to_with_icon 'icon-envelope-alt', t("spree.admin.mail_methods.send_testmail"), testmail_admin_mail_methods_path, method: :post, title: t("spree.admin.mail_methods.send_testmail"), class: 'send_mail button no-text' = render partial: 'spree/shared/error_messages', locals: { target: @mail_method } -= form_tag admin_mail_method_path, method: :put do |f| += form_tag admin_mail_methods_path, method: :put do |f| %fieldset.no-border-top = render partial: 'form', locals: { f: f } .form-buttons.filter-actions.actions= button t("spree.actions.update"), 'icon-refresh' diff --git a/app/views/spree/admin/shared/_configuration_menu.html.haml b/app/views/spree/admin/shared/_configuration_menu.html.haml index 5810cc97b2..c5f302f0db 100644 --- a/app/views/spree/admin/shared/_configuration_menu.html.haml +++ b/app/views/spree/admin/shared/_configuration_menu.html.haml @@ -6,7 +6,7 @@ %ul.sidebar = configurations_sidebar_menu_item Spree.t(:general_settings), edit_admin_general_settings_path - if Spree::Config[:override_actionmailer_config] - = configurations_sidebar_menu_item Spree.t(:mail_method_settings), edit_admin_mail_method_path + = configurations_sidebar_menu_item Spree.t(:mail_method_settings), edit_admin_mail_methods_path = configurations_sidebar_menu_item Spree.t(:image_settings), edit_admin_image_settings_path = configurations_sidebar_menu_item Spree.t(:tax_categories), admin_tax_categories_path = configurations_sidebar_menu_item Spree.t(:tax_rates), admin_tax_rates_path diff --git a/config/routes/spree.rb b/config/routes/spree.rb index fc0de19a10..bf5294be34 100644 --- a/config/routes/spree.rb +++ b/config/routes/spree.rb @@ -131,7 +131,7 @@ Spree::Core::Engine.routes.draw do # Configuration section resource :general_settings - resource :mail_method, :only => [:edit, :update] do + resource :mail_methods, :only => [:edit, :update] do post :testmail, :on => :collection end From 528db54f361d8b1fe08ec7d793fef82835c3d94f Mon Sep 17 00:00:00 2001 From: Lucas Hiago Date: Fri, 29 May 2020 22:24:41 -0300 Subject: [PATCH 14/49] Correct controller name for matching --- app/views/spree/admin/shared/_tabs.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/spree/admin/shared/_tabs.html.haml b/app/views/spree/admin/shared/_tabs.html.haml index 920480fc8b..e0134ee272 100644 --- a/app/views/spree/admin/shared/_tabs.html.haml +++ b/app/views/spree/admin/shared/_tabs.html.haml @@ -3,7 +3,7 @@ = tab :order_cycles, url: main_app.admin_order_cycles_path, icon: 'icon-refresh' = tab :orders, :subscriptions, :customer_details, :adjustments, :payments, :return_authorizations, url: admin_orders_path('q[s]' => 'completed_at desc'), icon: 'icon-shopping-cart' = tab :reports, icon: 'icon-file' -= tab :general_settings, :mail_method, :image_settings, :tax_categories, :tax_rates, :tax_settings, :zones, :countries, :states, :payment_methods, :taxonomies, :shipping_methods, :shipping_categories, :enterprise_fees, :contents, :invoice_settings, :matomo_settings, :stripe_connect_settings, label: 'configuration', icon: 'icon-wrench', url: edit_admin_general_settings_path += tab :general_settings, :mail_methods, :image_settings, :tax_categories, :tax_rates, :tax_settings, :zones, :countries, :states, :payment_methods, :taxonomies, :shipping_methods, :shipping_categories, :enterprise_fees, :contents, :invoice_settings, :matomo_settings, :stripe_connect_settings, label: 'configuration', icon: 'icon-wrench', url: edit_admin_general_settings_path = tab :enterprises, :enterprise_relationships, url: main_app.admin_enterprises_path = tab :customers, url: main_app.admin_customers_path = tab :enterprise_groups, url: main_app.admin_enterprise_groups_path, label: 'groups' From 069241f30784c67910e083584a9aea394be45aa0 Mon Sep 17 00:00:00 2001 From: romale Date: Mon, 1 Jun 2020 15:25:46 +0300 Subject: [PATCH 15/49] Missing translation key "return_authorizations" return_authorizations: Return Authorizations --- config/locales/en.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/config/locales/en.yml b/config/locales/en.yml index 158e964b89..a5d6dd3398 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2904,7 +2904,8 @@ See the %{link} to find out more about %{sitename}'s features and to start using first: "First" previous: "Previous" last: "Last" - + + return_authorizations: "Return Authorizations" spree: your_order_is_empty_add_product: "Your order is empty, please search for and add a product above" add_product: "Add Product" From e7828e107b3d078afb20e7cd9a28a1331f865d5a Mon Sep 17 00:00:00 2001 From: Luis Ramos Date: Mon, 1 Jun 2020 14:07:34 +0100 Subject: [PATCH 16/49] Delete dead methods from product_decorator --- app/models/spree/product_decorator.rb | 12 ------- spec/models/spree/product_spec.rb | 51 --------------------------- 2 files changed, 63 deletions(-) diff --git a/app/models/spree/product_decorator.rb b/app/models/spree/product_decorator.rb index fe20fe5194..4b99aff8f2 100644 --- a/app/models/spree/product_decorator.rb +++ b/app/models/spree/product_decorator.rb @@ -158,18 +158,6 @@ Spree::Product.class_eval do self.class.in_order_cycle(order_cycle).include? self end - # overriding to check self.on_demand as well - def has_stock? - has_variants? ? variants.any?(&:in_stock?) : (on_demand || master.in_stock?) - end - - def has_stock_for_distribution?(order_cycle, distributor) - # This product has stock for a distribution if it is available on-demand - # or if one of its variants in the distribution is in stock - (!has_variants? && on_demand) || - variants_distributed_by(order_cycle, distributor).any?(&:in_stock?) - end - def variants_distributed_by(order_cycle, distributor) order_cycle.variants_distributed_by(distributor).where(product_id: self) end diff --git a/spec/models/spree/product_spec.rb b/spec/models/spree/product_spec.rb index a8c6368a70..15d79596ee 100644 --- a/spec/models/spree/product_spec.rb +++ b/spec/models/spree/product_spec.rb @@ -579,57 +579,6 @@ module Spree end end - describe "stock filtering" do - it "considers products that are on_demand as being in stock" do - product = create(:simple_product, on_demand: true) - product.master.update_attribute(:on_hand, 0) - expect(product.has_stock?).to eq(true) - end - - describe "finding products in stock for a particular distribution" do - it "returns on-demand products" do - p = create(:simple_product, on_demand: true) - p.variants.first.update_attributes!(on_hand: 0, on_demand: true) - d = create(:distributor_enterprise) - oc = create(:simple_order_cycle, distributors: [d]) - oc.exchanges.outgoing.first.variants << p.variants.first - - expect(p).to have_stock_for_distribution(oc, d) - end - - it "returns products with in-stock variants" do - p = create(:simple_product) - v = create(:variant, product: p) - v.update_attribute(:on_hand, 1) - d = create(:distributor_enterprise) - oc = create(:simple_order_cycle, distributors: [d]) - oc.exchanges.outgoing.first.variants << v - - expect(p).to have_stock_for_distribution(oc, d) - end - - it "returns products with on-demand variants" do - p = create(:simple_product) - v = create(:variant, product: p, on_demand: true) - v.update_attribute(:on_hand, 0) - d = create(:distributor_enterprise) - oc = create(:simple_order_cycle, distributors: [d]) - oc.exchanges.outgoing.first.variants << v - - expect(p).to have_stock_for_distribution(oc, d) - end - - it "does not return products that have stock not in the distribution" do - p = create(:simple_product) - p.master.update_attribute(:on_hand, 1) - d = create(:distributor_enterprise) - oc = create(:simple_order_cycle, distributors: [d]) - - expect(p).not_to have_stock_for_distribution(oc, d) - end - end - end - describe "taxons" do let(:taxon1) { create(:taxon) } let(:taxon2) { create(:taxon) } From 072da7316e6a8ad1210088dc91e8737a9d60bc89 Mon Sep 17 00:00:00 2001 From: Luis Ramos Date: Mon, 1 Jun 2020 14:09:14 +0100 Subject: [PATCH 17/49] Remove views code that tests for the existence of product variants A product always has the standard variant, the only case where a product will not have variants is immediatly after creation and before being saved --- app/views/spree/admin/images/index.html.haml | 9 +-- .../spree/admin/products/_form.html.haml | 31 ---------- .../spree/admin/variants/index.html.haml | 58 ++++++++----------- 3 files changed, 28 insertions(+), 70 deletions(-) diff --git a/app/views/spree/admin/images/index.html.haml b/app/views/spree/admin/images/index.html.haml index 89124383e2..37cc53c70b 100644 --- a/app/views/spree/admin/images/index.html.haml +++ b/app/views/spree/admin/images/index.html.haml @@ -15,15 +15,13 @@ %colgroup %col{ style: "width: 5%" }/ %col{ style: "width: 10%" }/ - - if @product.has_variants? - %col{ style: "width: 25%" }/ + %col{ style: "width: 25%" }/ %col{ style: "width: 45%" }/ %col{ style: "width: 15%" }/ %thead %tr %th{:colspan => "2"}= t('spree.thumbnail') - - if @product.has_variants? - %th= Spree::Variant.model_name.human + %th= Spree::Variant.model_name.human %th= t('spree.alt_text') %th.actions %tbody @@ -35,8 +33,7 @@ %span.handle %td = link_to image_tag(image.attachment.url(:mini)), image.attachment.url(:product) - - if @product.has_variants? - %td= options_text_for(image) + %td= options_text_for(image) %td= image.alt %td.actions = link_to_with_icon 'icon-edit', t('spree.edit'), edit_admin_product_image_url(@product, image), no_text: true, data: { action: 'edit'} diff --git a/app/views/spree/admin/products/_form.html.haml b/app/views/spree/admin/products/_form.html.haml index 616f7977f3..08386e10dd 100644 --- a/app/views/spree/admin/products/_form.html.haml +++ b/app/views/spree/admin/products/_form.html.haml @@ -43,37 +43,6 @@ .clear - - unless @product.has_variants? - = f.field_container :sku do - = f.label :sku, t(:sku) - = f.text_field :sku, :size => 16 - - .alpha.two.columns - = f.field_container :on_hand do - = f.label :on_hand, t(:on_hand) - = f.number_field :on_hand, :min => 0 - .omega.two.columns - = f.field_container :on_demand, :class => ['checkbox'] do - %label - = f.check_box :on_demand - = t(:on_demand) - - .clear - - %ul#shipping_specs - %li#shipping_specs_weight_field.field.alpha.two.columns - = f.label :weight, t(:weight) - = f.text_field :weight, :size => 4 - %li#shipping_specs_height_field.field.omega.two.columns - = f.label :height, t(:height) - = f.text_field :height, :size => 4 - %li#shipping_specs_width_field.field.alpha.two.columns - = f.label :width, t(:width) - = f.text_field :width, :size => 4 - %li#shipping_specs_depth_field.field.omega.two.columns - = f.label :depth, t(:depth) - = f.text_field :depth, :size => 4 - = f.field_container :shipping_categories do = f.label :shipping_category_id, t(:shipping_categories) = f.collection_select(:shipping_category_id, @shipping_categories, :id, :name, { :include_blank => 'None' }, { :class => 'select2' }) diff --git a/app/views/spree/admin/variants/index.html.haml b/app/views/spree/admin/variants/index.html.haml index 199bcc0501..ce9c1edd86 100644 --- a/app/views/spree/admin/variants/index.html.haml +++ b/app/views/spree/admin/variants/index.html.haml @@ -3,40 +3,32 @@ = render partial: 'spree/admin/shared/product_tabs', locals: {current: 'Variants'} #new_variant -- if @variants.any? - %table.index.sortable{"data-sortable-link" => update_positions_admin_product_variants_path(@product)} - %colgroup - %col{style: "width: 5%"}/ - %col{style: "width: 25%"}/ - %col{style: "width: 20%"}/ - %col{style: "width: 20%"}/ - %col{style: "width: 15%"}/ - %col{style: "width: 15%"}/ - %thead - %tr - %th{colspan: "2"}= t('.options') - %th= t('.price') - %th= t('.sku') - %th.actions - %tbody - - @variants.each do |variant| - %tr{id: spree_dom_id(variant), class: cycle('odd', 'even'), style: "#{"color:red;" if variant.deleted? }" } - %td.no-border - %span.handle - %td= variant.full_name - %td.align-center= variant.display_price.to_html - %td.align-center= variant.sku - %td.actions - = link_to_edit(variant, no_text: true) unless variant.deleted? - = link_to_delete(variant, no_text: true) unless variant.deleted? - - unless @product.has_variants? - %tr - %td{colspan: "5"}= t(:none) -- else - .alpha.twelve.columns.no-objects-found - = t('.no_results') - \. +%table.index.sortable{"data-sortable-link" => update_positions_admin_product_variants_path(@product)} + %colgroup + %col{style: "width: 5%"}/ + %col{style: "width: 25%"}/ + %col{style: "width: 20%"}/ + %col{style: "width: 20%"}/ + %col{style: "width: 15%"}/ + %col{style: "width: 15%"}/ + %thead + %tr + %th{colspan: "2"}= t('.options') + %th= t('.price') + %th= t('.sku') + %th.actions + %tbody + - @variants.each do |variant| + %tr{id: spree_dom_id(variant), class: cycle('odd', 'even'), style: "#{"color:red;" if variant.deleted? }" } + %td.no-border + %span.handle + %td= variant.full_name + %td.align-center= variant.display_price.to_html + %td.align-center= variant.sku + %td.actions + = link_to_edit(variant, no_text: true) unless variant.deleted? + = link_to_delete(variant, no_text: true) unless variant.deleted? - if @product.empty_option_values? %p.first_add_option_types.no-objects-found From f4a64e89c22c26581e745c0a8a6c6119b8cb286b Mon Sep 17 00:00:00 2001 From: Robin Klaus Date: Fri, 22 May 2020 16:42:28 +1000 Subject: [PATCH 18/49] Added translation keys to error messages partial and en.yml file to add translation to error messages --- app/views/spree/shared/_error_messages.html.haml | 5 ++--- config/locales/en.yml | 6 ++++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/views/spree/shared/_error_messages.html.haml b/app/views/spree/shared/_error_messages.html.haml index 54fabd313e..b0ced1b317 100644 --- a/app/views/spree/shared/_error_messages.html.haml +++ b/app/views/spree/shared/_error_messages.html.haml @@ -1,10 +1,9 @@ - if target && target.errors.any? #errorExplanation.errorExplanation %h2 - = Spree.t(:errors_prohibited_this_record_from_being_saved, count: target.errors.count) - \: + = t(".errors_prohibited_this_record_from_being_saved", count: target.errors.count) %p - = Spree.t(:there_were_problems_with_the_following_fields) + = t(".there_were_problems_with_the_following_fields") \: %ul - target.errors.full_messages.each do |msg| diff --git a/config/locales/en.yml b/config/locales/en.yml index 158e964b89..d3b0f022aa 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -3089,6 +3089,12 @@ See the %{link} to find out more about %{sitename}'s features and to start using actions: update: "Update" + shared: + error_messages: + errors_prohibited_this_record_from_being_saved: + one: "1 error prohibited this record from being saved:" + other: "%{count} errors prohibited this record from being saved:" + there_were_problems_with_the_following_fields: "There were problems with the following fields" errors: messages: blank: "can't be blank" From b21904ada1f65fdf948a4fb5c4b1821d0ce6ec7b Mon Sep 17 00:00:00 2001 From: romale Date: Tue, 2 Jun 2020 10:38:36 +0300 Subject: [PATCH 19/49] moved to 2882 --- config/locales/en.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/config/locales/en.yml b/config/locales/en.yml index a5d6dd3398..5145fee5c4 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2879,7 +2879,7 @@ See the %{link} to find out more about %{sitename}'s features and to start using customer_details: "Customer Details" adjustments: "Adjustments" payments: "Payments" - + return_authorizations: "Return Authorizations" payment: "Payment" payment_method: "Payment Method" shipment: "Shipment" @@ -2905,7 +2905,6 @@ See the %{link} to find out more about %{sitename}'s features and to start using previous: "Previous" last: "Last" - return_authorizations: "Return Authorizations" spree: your_order_is_empty_add_product: "Your order is empty, please search for and add a product above" add_product: "Add Product" From 35648025df6f01ff4b356557ed5164753c8a6a73 Mon Sep 17 00:00:00 2001 From: romale Date: Tue, 2 Jun 2020 12:09:38 +0300 Subject: [PATCH 20/49] formating --- config/locales/en.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/locales/en.yml b/config/locales/en.yml index 5145fee5c4..2e20b6d85f 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2879,6 +2879,7 @@ See the %{link} to find out more about %{sitename}'s features and to start using customer_details: "Customer Details" adjustments: "Adjustments" payments: "Payments" + return_authorizations: "Return Authorizations" payment: "Payment" payment_method: "Payment Method" From 9d3f010173ad4014cd959baf72765008838ded8b Mon Sep 17 00:00:00 2001 From: romale Date: Tue, 2 Jun 2020 14:42:50 +0300 Subject: [PATCH 21/49] formating --- config/locales/en.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/en.yml b/config/locales/en.yml index 2e20b6d85f..02d96f1bd6 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2879,8 +2879,8 @@ See the %{link} to find out more about %{sitename}'s features and to start using customer_details: "Customer Details" adjustments: "Adjustments" payments: "Payments" - return_authorizations: "Return Authorizations" + payment: "Payment" payment_method: "Payment Method" shipment: "Shipment" From d16bfe3779d77b42c7dd9f61bdd4306ddd838a26 Mon Sep 17 00:00:00 2001 From: romale Date: Tue, 2 Jun 2020 14:44:16 +0300 Subject: [PATCH 22/49] formatting --- config/locales/en.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/config/locales/en.yml b/config/locales/en.yml index 02d96f1bd6..5c6493bc9a 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2905,7 +2905,6 @@ See the %{link} to find out more about %{sitename}'s features and to start using first: "First" previous: "Previous" last: "Last" - spree: your_order_is_empty_add_product: "Your order is empty, please search for and add a product above" add_product: "Add Product" From 9d56c180b271d41911d9a2055c8229952b19d707 Mon Sep 17 00:00:00 2001 From: romale Date: Tue, 2 Jun 2020 15:56:59 +0300 Subject: [PATCH 23/49] formatting --- config/locales/en.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/locales/en.yml b/config/locales/en.yml index 5c6493bc9a..02d96f1bd6 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2905,6 +2905,7 @@ See the %{link} to find out more about %{sitename}'s features and to start using first: "First" previous: "Previous" last: "Last" + spree: your_order_is_empty_add_product: "Your order is empty, please search for and add a product above" add_product: "Add Product" From 325cbbf3c7d6783a581a1e869c2e5df50192eccc Mon Sep 17 00:00:00 2001 From: romale Date: Tue, 2 Jun 2020 23:40:57 +0300 Subject: [PATCH 24/49] formatting --- config/locales/en.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/locales/en.yml b/config/locales/en.yml index 02d96f1bd6..725aa6f678 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2880,7 +2880,7 @@ See the %{link} to find out more about %{sitename}'s features and to start using adjustments: "Adjustments" payments: "Payments" return_authorizations: "Return Authorizations" - + payment: "Payment" payment_method: "Payment Method" shipment: "Shipment" @@ -2905,7 +2905,7 @@ See the %{link} to find out more about %{sitename}'s features and to start using first: "First" previous: "Previous" last: "Last" - + spree: your_order_is_empty_add_product: "Your order is empty, please search for and add a product above" add_product: "Add Product" From bfe17f54d7d5fed5b0552e2c634c6cb029492a83 Mon Sep 17 00:00:00 2001 From: Lucas Hiago Date: Fri, 22 May 2020 20:37:28 -0300 Subject: [PATCH 25/49] Change minimal amount in price sack calculator to float --- .../spree/calculator/price_sack_decorator.rb | 2 +- .../spree/calculator/price_sack_spec.rb | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/app/models/spree/calculator/price_sack_decorator.rb b/app/models/spree/calculator/price_sack_decorator.rb index b474f77861..389649f916 100644 --- a/app/models/spree/calculator/price_sack_decorator.rb +++ b/app/models/spree/calculator/price_sack_decorator.rb @@ -13,7 +13,7 @@ module Spree end def compute(object) - min = preferred_minimal_amount.to_i + min = preferred_minimal_amount.to_f order_amount = line_items_for(object).map { |x| x.price * x.quantity }.sum if order_amount < min diff --git a/spec/models/spree/calculator/price_sack_spec.rb b/spec/models/spree/calculator/price_sack_spec.rb index 921b657f88..05c7a8cb8a 100644 --- a/spec/models/spree/calculator/price_sack_spec.rb +++ b/spec/models/spree/calculator/price_sack_spec.rb @@ -49,6 +49,32 @@ describe Spree::Calculator::PriceSack do end end + context "minimal amount is float" do + before do + calculator.preferred_minimal_amount = 16.5 + calculator.preferred_normal_amount = 5 + calculator.preferred_discount_amount = 1 + line_item.quantity = 2 + end + + context "with price bellow minimal amount" do + let(:price) { 8 } + + it "returns the correct value of cost" do + expect(calculator.compute(line_item)).to eq(5) + end + end + + context "with price above minimal amount" do + let(:price) { 8.5 } + + it "returns the correct value of cost" do + expect(calculator.compute(line_item)).to eq(1) + end + end + + end + context "extends LocalizedNumber" do it_behaves_like "a model using the LocalizedNumber module", [:preferred_minimal_amount, :preferred_normal_amount, :preferred_discount_amount] end From d5d6fbc01d1103d7390db31ad2d2a5c5b920cf11 Mon Sep 17 00:00:00 2001 From: Robin Klaus Date: Fri, 22 May 2020 12:15:54 +1000 Subject: [PATCH 26/49] created partial for order page title to resolve French translation of new order --- app/views/spree/admin/adjustments/edit.html.haml | 3 ++- app/views/spree/admin/adjustments/index.html.haml | 3 ++- app/views/spree/admin/adjustments/new.html.haml | 3 ++- .../spree/admin/orders/customer_details/edit.html.haml | 3 ++- app/views/spree/admin/orders/edit.html.haml | 3 ++- app/views/spree/admin/orders/new.html.haml | 4 +++- app/views/spree/admin/orders/set_distribution.html.haml | 8 +++++--- app/views/spree/admin/payments/index.html.haml | 1 + app/views/spree/admin/payments/new.html.haml | 1 + app/views/spree/admin/payments/show.html.haml | 1 + .../spree/admin/return_authorizations/edit.html.haml | 1 + .../spree/admin/return_authorizations/index.html.haml | 1 + app/views/spree/admin/return_authorizations/new.html.haml | 1 + app/views/spree/admin/shared/_order_page_title.html.haml | 4 ++++ app/views/spree/admin/shared/_order_tabs.html.haml | 5 ----- 15 files changed, 28 insertions(+), 14 deletions(-) create mode 100644 app/views/spree/admin/shared/_order_page_title.html.haml diff --git a/app/views/spree/admin/adjustments/edit.html.haml b/app/views/spree/admin/adjustments/edit.html.haml index c31dfb145e..756288c4f4 100644 --- a/app/views/spree/admin/adjustments/edit.html.haml +++ b/app/views/spree/admin/adjustments/edit.html.haml @@ -1,4 +1,5 @@ -= render :partial => 'spree/admin/shared/order_tabs', :locals => { :current => 'Adjustments' } += render :partial => 'spree/admin/shared/order_page_title' += render :partial => 'spree/admin/shared/order_tabs', locals: { current: 'Adjustments' } - content_for :page_title do %i.icon-arrow-right diff --git a/app/views/spree/admin/adjustments/index.html.haml b/app/views/spree/admin/adjustments/index.html.haml index 7268441e1e..02433a6e5c 100644 --- a/app/views/spree/admin/adjustments/index.html.haml +++ b/app/views/spree/admin/adjustments/index.html.haml @@ -1,4 +1,5 @@ -= render :partial => 'spree/admin/shared/order_tabs', :locals => { :current => 'Adjustments' } += render partial: 'spree/admin/shared/order_page_title' += render partial: 'spree/admin/shared/order_tabs', locals: { current: 'Adjustments' } - content_for :page_title do %i.icon-arrow-right diff --git a/app/views/spree/admin/adjustments/new.html.haml b/app/views/spree/admin/adjustments/new.html.haml index 3eb6f5c58e..2af33aae54 100644 --- a/app/views/spree/admin/adjustments/new.html.haml +++ b/app/views/spree/admin/adjustments/new.html.haml @@ -1,4 +1,5 @@ -= render :partial => 'spree/admin/shared/order_tabs', :locals => { :current => 'Adjustments' } += render partial: 'spree/admin/shared/order_page_title' += render partial: 'spree/admin/shared/order_tabs', locals: { current: 'Adjustments' } - content_for :page_title do %i.icon-arrow-right diff --git a/app/views/spree/admin/orders/customer_details/edit.html.haml b/app/views/spree/admin/orders/customer_details/edit.html.haml index e4fa93ffbb..7c6118cac6 100644 --- a/app/views/spree/admin/orders/customer_details/edit.html.haml +++ b/app/views/spree/admin/orders/customer_details/edit.html.haml @@ -1,4 +1,5 @@ -= render :partial => 'spree/admin/shared/order_tabs', :locals => { :current => 'Customer Details' } += render partial: 'spree/admin/shared/order_page_title' += render partial: 'spree/admin/shared/order_tabs', locals: { current: 'Customer Details' } = csrf_meta_tags diff --git a/app/views/spree/admin/orders/edit.html.haml b/app/views/spree/admin/orders/edit.html.haml index 69abbe8f38..d2047e6bf4 100644 --- a/app/views/spree/admin/orders/edit.html.haml +++ b/app/views/spree/admin/orders/edit.html.haml @@ -8,7 +8,8 @@ - if can?(:admin, Spree::Order) %li= button_link_to t(:back_to_orders_list), admin_orders_path, :icon => 'icon-arrow-left' -= render :partial => 'spree/admin/shared/order_tabs', :locals => { :current => 'Order Details' } += render partial: "spree/admin/shared/order_page_title" += render partial: "spree/admin/shared/order_tabs", locals: { current: 'Order Details' } %div{"data-hook" => "admin_order_edit_header"} -# Suppress errors when manually creating a new order - needs to proceed to edit page diff --git a/app/views/spree/admin/orders/new.html.haml b/app/views/spree/admin/orders/new.html.haml index 9ec198b2d7..556e464cd4 100644 --- a/app/views/spree/admin/orders/new.html.haml +++ b/app/views/spree/admin/orders/new.html.haml @@ -1,5 +1,7 @@ - content_for :page_title do - = t(:new) + = t(:new_order) + \# + = @order.number - content_for :page_actions do %li= button_link_to t(:back_to_orders_list), spree.admin_orders_path, :icon => 'icon-arrow-left' diff --git a/app/views/spree/admin/orders/set_distribution.html.haml b/app/views/spree/admin/orders/set_distribution.html.haml index f5e259321e..3579619185 100644 --- a/app/views/spree/admin/orders/set_distribution.html.haml +++ b/app/views/spree/admin/orders/set_distribution.html.haml @@ -1,12 +1,14 @@ -- content_for :page_title do - = t(:new) - - content_for :page_actions do %li= button_link_to t(:back_to_orders_list), spree.admin_orders_path, :icon => 'icon-arrow-left' = admin_inject_shops(module: 'admin.orders') = admin_inject_order_cycles +- content_for :page_title do + = t(:new_order) + \# + = @order.number + = render 'spree/admin/shared/order_tabs', :current => 'Order Details' = csrf_meta_tags diff --git a/app/views/spree/admin/payments/index.html.haml b/app/views/spree/admin/payments/index.html.haml index 3c62b54843..7fbe76429f 100644 --- a/app/views/spree/admin/payments/index.html.haml +++ b/app/views/spree/admin/payments/index.html.haml @@ -1,3 +1,4 @@ += render partial: 'spree/admin/shared/order_page_title' = render partial: 'spree/admin/shared/order_tabs', locals: { current: 'Payments' } - content_for :page_actions do diff --git a/app/views/spree/admin/payments/new.html.haml b/app/views/spree/admin/payments/new.html.haml index 7c825051ad..710456cc2d 100644 --- a/app/views/spree/admin/payments/new.html.haml +++ b/app/views/spree/admin/payments/new.html.haml @@ -1,3 +1,4 @@ += render partial: 'spree/admin/shared/order_page_title' = render partial: 'spree/admin/shared/order_tabs', locals: { current: 'Payments' } - content_for :page_title do diff --git a/app/views/spree/admin/payments/show.html.haml b/app/views/spree/admin/payments/show.html.haml index 97850cb19a..acbc2d8aaf 100644 --- a/app/views/spree/admin/payments/show.html.haml +++ b/app/views/spree/admin/payments/show.html.haml @@ -1,3 +1,4 @@ += render partial: 'spree/admin/shared/order_page_title' = render partial: 'spree/admin/shared/order_tabs', locals: { current: 'Payments' } - content_for :page_title do diff --git a/app/views/spree/admin/return_authorizations/edit.html.haml b/app/views/spree/admin/return_authorizations/edit.html.haml index 2847c10965..9f5429640d 100644 --- a/app/views/spree/admin/return_authorizations/edit.html.haml +++ b/app/views/spree/admin/return_authorizations/edit.html.haml @@ -6,6 +6,7 @@ - if @return_authorization.can_cancel? = button_link_to t('actions.cancel'), fire_admin_order_return_authorization_url(@order, @return_authorization, e: 'cancel'), method: :put, data: { confirm: t('.are_you_sure') }, icon: 'icon-remove' += render partial: 'spree/admin/shared/order_page_title' = render partial: 'spree/admin/shared/order_tabs', locals: { current: 'Return Authorizations' } - content_for :page_title do diff --git a/app/views/spree/admin/return_authorizations/index.html.haml b/app/views/spree/admin/return_authorizations/index.html.haml index acf016b50d..bc8ed9dd80 100644 --- a/app/views/spree/admin/return_authorizations/index.html.haml +++ b/app/views/spree/admin/return_authorizations/index.html.haml @@ -1,3 +1,4 @@ += render partial: 'spree/admin/shared/order_page_title' = render partial: 'spree/admin/shared/order_tabs', locals: { current: 'Return Authorizations' } - content_for :page_actions do diff --git a/app/views/spree/admin/return_authorizations/new.html.haml b/app/views/spree/admin/return_authorizations/new.html.haml index 54573f7392..5594288cf3 100644 --- a/app/views/spree/admin/return_authorizations/new.html.haml +++ b/app/views/spree/admin/return_authorizations/new.html.haml @@ -1,3 +1,4 @@ += render partial: 'spree/admin/shared/order_page_title' = render partial: 'spree/admin/shared/order_tabs', locals: { current: 'Return Authorizations' } - content_for :page_title do diff --git a/app/views/spree/admin/shared/_order_page_title.html.haml b/app/views/spree/admin/shared/_order_page_title.html.haml new file mode 100644 index 0000000000..927062d4f7 --- /dev/null +++ b/app/views/spree/admin/shared/_order_page_title.html.haml @@ -0,0 +1,4 @@ +- content_for :page_title do + = t(:order) + \# + = @order.number diff --git a/app/views/spree/admin/shared/_order_tabs.html.haml b/app/views/spree/admin/shared/_order_tabs.html.haml index 89d7299fdc..f96a5dd140 100644 --- a/app/views/spree/admin/shared/_order_tabs.html.haml +++ b/app/views/spree/admin/shared/_order_tabs.html.haml @@ -1,8 +1,3 @@ -- content_for :page_title do - = t(:order) - \# - = @order.number - - if @order.bill_address.present? = @order.bill_address.firstname = @order.bill_address.lastname From 78fc6b71388a019e5445317b8142eb604bd30319 Mon Sep 17 00:00:00 2001 From: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com> Date: Sun, 31 May 2020 18:22:32 +0200 Subject: [PATCH 27/49] Rename "Geo" service to "GmapsGeo" for clarity. This service directly calls methods in the google maps javascript included in the darkswarm layout. If we're moving away from it, we should clarify where it's used. --- .../darkswarm/services/enterprises.js.coffee | 10 +++++----- .../{geo.js.erb.coffee => gmaps_geo.js.erb.coffee} | 4 ++-- .../unit/darkswarm/services/enterprise_spec.js.coffee | 8 ++++---- .../unit/darkswarm/services/map_spec.js.coffee | 4 ++-- .../unit/darkswarm/services/products_spec.js.coffee | 4 ++-- 5 files changed, 15 insertions(+), 15 deletions(-) rename app/assets/javascripts/darkswarm/services/{geo.js.erb.coffee => gmaps_geo.js.erb.coffee} (93%) diff --git a/app/assets/javascripts/darkswarm/services/enterprises.js.coffee b/app/assets/javascripts/darkswarm/services/enterprises.js.coffee index 46e50cb574..843749c2e6 100644 --- a/app/assets/javascripts/darkswarm/services/enterprises.js.coffee +++ b/app/assets/javascripts/darkswarm/services/enterprises.js.coffee @@ -1,4 +1,4 @@ -Darkswarm.factory 'Enterprises', (enterprises, ShopsResource, CurrentHub, Taxons, Dereferencer, Matcher, Geo, $rootScope) -> +Darkswarm.factory 'Enterprises', (enterprises, ShopsResource, CurrentHub, Taxons, Dereferencer, Matcher, GmapsGeo, $rootScope) -> new class Enterprises enterprises: [] enterprises_by_id: {} @@ -59,7 +59,7 @@ Darkswarm.factory 'Enterprises', (enterprises, ShopsResource, CurrentHub, Taxons false calculateDistance: (query, firstMatching) -> - if query?.length > 0 and Geo.OK + if query?.length > 0 and GmapsGeo.OK if firstMatching? @setDistanceFrom firstMatching else @@ -68,9 +68,9 @@ Darkswarm.factory 'Enterprises', (enterprises, ShopsResource, CurrentHub, Taxons @resetDistance() calculateDistanceGeo: (query) -> - Geo.geocode query, (results, status) => + GmapsGeo.geocode query, (results, status) => $rootScope.$apply => - if status == Geo.OK + if status == GmapsGeo.OK #console.log "Geocoded #{query} -> #{results[0].geometry.location}." @setDistanceFrom results[0].geometry.location else @@ -79,7 +79,7 @@ Darkswarm.factory 'Enterprises', (enterprises, ShopsResource, CurrentHub, Taxons setDistanceFrom: (locatable) -> for enterprise in @enterprises - enterprise.distance = Geo.distanceBetween enterprise, locatable + enterprise.distance = GmapsGeo.distanceBetween enterprise, locatable $rootScope.$broadcast 'enterprisesChanged' resetDistance: -> diff --git a/app/assets/javascripts/darkswarm/services/geo.js.erb.coffee b/app/assets/javascripts/darkswarm/services/gmaps_geo.js.erb.coffee similarity index 93% rename from app/assets/javascripts/darkswarm/services/geo.js.erb.coffee rename to app/assets/javascripts/darkswarm/services/gmaps_geo.js.erb.coffee index 866dc2f742..d532574d0d 100644 --- a/app/assets/javascripts/darkswarm/services/geo.js.erb.coffee +++ b/app/assets/javascripts/darkswarm/services/gmaps_geo.js.erb.coffee @@ -1,5 +1,5 @@ -Darkswarm.service "Geo", -> - new class Geo +Darkswarm.service "GmapsGeo", -> + new class GmapsGeo OK: google?.maps?.GeocoderStatus?.OK # Usage: diff --git a/spec/javascripts/unit/darkswarm/services/enterprise_spec.js.coffee b/spec/javascripts/unit/darkswarm/services/enterprise_spec.js.coffee index 82c26397ca..c95fbdf81b 100644 --- a/spec/javascripts/unit/darkswarm/services/enterprise_spec.js.coffee +++ b/spec/javascripts/unit/darkswarm/services/enterprise_spec.js.coffee @@ -1,7 +1,7 @@ describe "Enterprises service", -> Enterprises = $rootScope = null CurrentHubMock = {} - Geo = + GmapsGeo = OK: 'ok' succeed: true geocode: (query, callback) -> @@ -31,7 +31,7 @@ describe "Enterprises service", -> module 'Darkswarm' module ($provide)-> $provide.value "CurrentHub", CurrentHubMock - $provide.value "Geo", Geo + $provide.value "GmapsGeo", GmapsGeo null angular.module('Darkswarm').value('enterprises', enterprises) angular.module('Darkswarm').value('taxons', taxons) @@ -118,12 +118,12 @@ describe "Enterprises service", -> spyOn(Enterprises, "setDistanceFrom") it "calculates distance for all enterprises when geocoding succeeds", -> - Geo.succeed = true + GmapsGeo.succeed = true Enterprises.calculateDistanceGeo('query') expect(Enterprises.setDistanceFrom).toHaveBeenCalledWith("location") it "resets distance when geocoding fails", -> - Geo.succeed = false + GmapsGeo.succeed = false spyOn(Enterprises, "resetDistance") Enterprises.calculateDistanceGeo('query') expect(Enterprises.setDistanceFrom).not.toHaveBeenCalled() diff --git a/spec/javascripts/unit/darkswarm/services/map_spec.js.coffee b/spec/javascripts/unit/darkswarm/services/map_spec.js.coffee index fb4def8342..eed215dbe1 100644 --- a/spec/javascripts/unit/darkswarm/services/map_spec.js.coffee +++ b/spec/javascripts/unit/darkswarm/services/map_spec.js.coffee @@ -1,7 +1,7 @@ describe "Hubs service", -> OfnMap = null CurrentHubMock = {} - Geo = {} + GmapsGeo = {} enterprises = [ { id: 2 @@ -54,7 +54,7 @@ describe "Hubs service", -> angular.module('Darkswarm').value('enterprises', enterprises) module ($provide)-> $provide.value "CurrentHub", CurrentHubMock - $provide.value "Geo", Geo + $provide.value "GmapsGeo", GmapsGeo null inject ($injector)-> OfnMap = $injector.get("OfnMap") diff --git a/spec/javascripts/unit/darkswarm/services/products_spec.js.coffee b/spec/javascripts/unit/darkswarm/services/products_spec.js.coffee index 62c8c0a071..88ff585f00 100644 --- a/spec/javascripts/unit/darkswarm/services/products_spec.js.coffee +++ b/spec/javascripts/unit/darkswarm/services/products_spec.js.coffee @@ -12,7 +12,7 @@ describe 'Products service', -> productWithImage = null properties = null taxons = null - Geo = {} + GmapsGeo = {} endpoint = "/api/order_cycles/1/products?distributor=1" beforeEach -> @@ -53,7 +53,7 @@ describe 'Products service', -> $provide.value "currentOrder", currentOrder $provide.value "taxons", taxons $provide.value "properties", properties - $provide.value "Geo", Geo + $provide.value "GmapsGeo", GmapsGeo $provide.value "OrderCycle", OrderCycle $provide.value "railsFlash", null null From 9e278d5b2f0e3574c57feda05c148e09f0785e86 Mon Sep 17 00:00:00 2001 From: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com> Date: Thu, 4 Jun 2020 12:02:11 +0200 Subject: [PATCH 28/49] Improve performance in various reports --- .../spree/admin/reports_controller.rb | 6 ++-- app/models/spree/product_decorator.rb | 6 ++++ spec/models/spree/product_spec.rb | 31 +++++++++++++++++++ 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/app/controllers/spree/admin/reports_controller.rb b/app/controllers/spree/admin/reports_controller.rb index 54f2868610..3ada1fbbcd 100644 --- a/app/controllers/spree/admin/reports_controller.rb +++ b/app/controllers/spree/admin/reports_controller.rb @@ -247,8 +247,10 @@ module Spree end def suppliers_of_products_distributed_by(distributors) - distributors.map { |d| Spree::Product.in_distributor(d).includes(:supplier).all }. - flatten.map(&:supplier).uniq + supplier_ids = Spree::Product.in_distributors(distributors). + select('spree_products.supplier_id') + + Enterprise.where(id: supplier_ids) end # Load order cycles the current user has access to diff --git a/app/models/spree/product_decorator.rb b/app/models/spree/product_decorator.rb index fe20fe5194..cd427376a8 100644 --- a/app/models/spree/product_decorator.rb +++ b/app/models/spree/product_decorator.rb @@ -84,6 +84,12 @@ Spree::Product.class_eval do select('distinct spree_products.*') } + scope :in_distributors, lambda { |distributors| + with_order_cycles_outer. + where('(o_exchanges.incoming = ? AND o_exchanges.receiver_id IN (?))', false, distributors). + uniq + } + # Products supplied by a given enterprise or distributed via that enterprise through an OC scope :in_supplier_or_distributor, lambda { |enterprise| enterprise = enterprise.respond_to?(:id) ? enterprise.id : enterprise.to_i diff --git a/spec/models/spree/product_spec.rb b/spec/models/spree/product_spec.rb index a8c6368a70..d3d47b21ca 100644 --- a/spec/models/spree/product_spec.rb +++ b/spec/models/spree/product_spec.rb @@ -257,6 +257,37 @@ module Spree end end + describe "in_distributors" do + let!(:distributor1) { create(:distributor_enterprise) } + let!(:distributor2) { create(:distributor_enterprise) } + let!(:product1) { create(:product) } + let!(:product2) { create(:product) } + let!(:product3) { create(:product) } + let!(:product4) { create(:product) } + let!(:order_cycle1) { + create(:order_cycle, distributors: [distributor1], + variants: [product1.variants.first, product2.variants.first]) + } + let!(:order_cycle2) { + create(:order_cycle, distributors: [distributor2], + variants: [product3.variants.first]) + } + + it "returns distributed products for a given Enterprise AR relation" do + distributors_relation = Enterprise.where(id: [distributor1.id, distributor2.id]) + + expect(Product.in_distributors(distributors_relation)).to include product1, product2, product3 + expect(Product.in_distributors(distributors_relation)).to_not include product4 + end + + it "returns distributed products for a given array of enterprise ids" do + distributors_ids = [distributor1.id, distributor2.id] + + expect(Product.in_distributors(distributors_ids)).to include product1, product2, product3 + expect(Product.in_distributors(distributors_ids)).to_not include product4 + end + end + describe "in_supplier_or_distributor" do it "shows products in supplier" do s1 = create(:supplier_enterprise) From e8f59ca80f9a9ad251568b6ee85a718524440568 Mon Sep 17 00:00:00 2001 From: Transifex-Openfoodnetwork Date: Sat, 6 Jun 2020 20:02:55 +1000 Subject: [PATCH 29/49] Updating translations for config/locales/tr.yml --- config/locales/tr.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 09160deaa4..81e7552502 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -2810,6 +2810,12 @@ tr: void: "Geçersiz" login: "Oturum aç" password: "Parola" + signature: "İmza" + solution: "Çözüm" + landing_page: "Ana Sayfa" + server: "Server" + test_mode: "Test Modu" + logourl: "Logourl" configurations: "yapılandırmalar" general_settings: "Genel Ayarlar" site_name: "Site adı" @@ -3095,9 +3101,11 @@ tr: display: "Görüntüle" active: "Aktif" both: "Her ikisi de" + front_end: "Sadece Ödeme" back_end: "Sadece panel" active_yes: "Evet" active_no: "Hayır" + no_payment_methods_found: "Ödeme yöntemi bulunamadı" new: new_payment_method: "Yeni Ödeme Yöntemi" back_to_payment_methods_list: "Ödeme Yöntemleri Listesine Geri Dön" @@ -3127,8 +3135,10 @@ tr: active_yes: "Evet" active_no: "Hayır" both: "Ödeme Sayfası ve Panel" + front_end: "Sadece Ödeme" back_end: "Sadece panel" tags: "Etiketler" + deactivation_warning: "Bir ödeme yöntemini kaldırmak listenizden silinmesine sebep olabilir. Alternatif olarak, ödeme yöntemini 'Göster' yerine 'Yalnızca " providers: provider: "Sağlayıcı" payments: From 6c564dc7b27d1d23a04a09d699f6c28d2d2e1f17 Mon Sep 17 00:00:00 2001 From: Dany Marcoux Date: Sun, 7 Jun 2020 23:29:12 +0200 Subject: [PATCH 30/49] Shallow clone specific release for rbenv and ruby-build We don't need the whole git history, so doing a shallow clone is favourable. Cloning a specific release (the latest at the time of writing this) allows us to have reproducible results since we're not cloning whatever is on master at the time of building the Docker image. --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 202bbeccf7..49f0fa4838 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,8 +13,8 @@ WORKDIR /usr/src/app COPY .ruby-version . # Install Rbenv & Ruby -RUN git clone https://github.com/rbenv/rbenv.git ${RBENV_ROOT} && \ - git clone https://github.com/rbenv/ruby-build.git ${RBENV_ROOT}/plugins/ruby-build && \ +RUN git clone --depth 1 --branch v1.1.2 https://github.com/rbenv/rbenv.git ${RBENV_ROOT} && \ + git clone --depth 1 --branch v20200520 https://github.com/rbenv/ruby-build.git ${RBENV_ROOT}/plugins/ruby-build && \ ${RBENV_ROOT}/plugins/ruby-build/install.sh && \ echo 'eval "$(rbenv init -)"' >> /etc/profile.d/rbenv.sh && \ rbenv install $(cat .ruby-version) && \ From a751d24562fb532148a8f7c007e43fded4e85b3e Mon Sep 17 00:00:00 2001 From: Dany Marcoux Date: Sun, 7 Jun 2020 23:32:46 +0200 Subject: [PATCH 31/49] Run bundler install in parallel with the amount of available CPUs --- Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 49f0fa4838..c30df2f92f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -43,4 +43,5 @@ RUN wget https://chromedriver.storage.googleapis.com/2.41/chromedriver_linux64.z # Copy code and install app dependencies COPY . /usr/src/app/ -RUN bundle install +# Run bundler install in parallel with the amount of available CPUs +RUN bundle install --jobs="$(nproc)" From 7515b9c86c6fe0e6e0403adab35864d4b66654c3 Mon Sep 17 00:00:00 2001 From: Transifex-Openfoodnetwork Date: Mon, 8 Jun 2020 23:20:30 +1000 Subject: [PATCH 32/49] Updating translations for config/locales/it.yml --- config/locales/it.yml | 54 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/config/locales/it.yml b/config/locales/it.yml index 89e40ea4c4..c111c89f68 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -31,6 +31,10 @@ it: taken: "Esiste già un account con questa email. Ti preghiamo di effettuare il login o impostare una nuova password." spree/order: no_card: Non ci sono carte di credito autorizzate disponibili per l'addebito + spree/credit_card: + attributes: + base: + card_expired: "è scaduto" order_cycle: attributes: orders_close_at: @@ -319,6 +323,7 @@ it: show_n_more: Mostra %{num} di più choose: "Scegli..." please_select: Seleziona... + column_save_as_default: Salva Come Predefinito columns: Colonne actions: Azioni viewing: "Vista: %{current_view_name}" @@ -683,6 +688,7 @@ it: ofn_uid_tip: Il codice univoco utilizzato per identificare l'azienda su OFN shipping_methods: name: "Nome" + applies: "Attivo?" manage: "Gestisci metodi di spedizione" create_button: "Crea un nuovo metodo di consegna" create_one_button: "Crea uno ora" @@ -861,6 +867,7 @@ it: incoming: "In arrivo" supplier: "Fornitore" products: "Prodotti" + receival_details: "Dettagli Ricevimento" fees: "Tariffe" save: "Salva" save_and_next: "Salva e continua" @@ -872,6 +879,7 @@ it: distributor: "Distributore" products: "Prodotti" tags: "Tag" + delivery_details: "Dettagli Spedizione" fees: "Tariffe" previous: "Precedente" save: "Salva" @@ -1169,7 +1177,11 @@ it: signup: "Registrati" contact: "contatto" require_customer_login: "Solo utenti approvati hanno accesso a questo negozio" + require_login_html: "Se sei già un cliente approvato, %{login} o %{signup} per procedere." + require_login_2_html: "Vuoi iniziare a acquistare qui? Per favore %{contact}%{enterprise}e chiedi di essere aggiunto." require_customer_html: "Se vuoi iniziare a comprare, per favore %{contact} %{enterprise} per chiedere di raggiungerci." + select_oc: + select_oc_html: "Per favore scegli quando vuoi il tuo ordine , per vedere quali prodotti sono disponibili." card_could_not_be_updated: La Carta non ha potuto essere rinnovata card_could_not_be_saved: La Carta non ha potuto essere salvata spree_gateway_error_flash_for_checkout: "C'è stato un problema con le informazioni sul pagamento: %{error}" @@ -1529,12 +1541,17 @@ it: orders_changeable_orders_alert_html: Questa gentile richiesta è stata confermata, ma puoi effettuare modifiche fino a %{oc_close}. products_clear: Pulisci products_showing: "Mostra:" + products_results_for: "Risultati per" products_or: "o" products_and: "e" + products_filters_in: "in" products_with: con + products_search: "Ricerca..." products_filter_by: "Filtra per" products_filter_selected: "selezionato" + products_filter_heading: "Filtri" products_filter_clear: "Pulisci" + products_filter_done: "Fatto" products_loading: "Caricamento prodotti..." products_updating_cart: "Aggiornamento del carrello..." products_cart_empty: "Carrello vuoto" @@ -1545,6 +1562,8 @@ it: products_update_error_msg: "Salvataggio fallito." products_update_error_data: "Salvataggio fallito per dati non validi:" products_changes_saved: "Modifiche salvate." + products_no_results_html: "Mi spiace, nessun risultato per %{query}" + products_clear_search: "Pulisci ricerca" search_no_results_html: "Mi dispiace, nessun risultato per %{query}. Vuoi provare un'altra ricerca?" components_profiles_popover: "I profili non hanno una vetrina su Open Food Network, ma potrebbero avere il proprio negozio fisico o online altrove" components_profiles_show: "Mostra profili" @@ -1900,6 +1919,7 @@ it: admin_enterprise_relationships_permits: "permessi" admin_enterprise_relationships_seach_placeholder: "Cerca" admin_enterprise_relationships_button_create: "Crea" + admin_enterprise_relationships_to: "a" admin_enterprise_groups: "Gruppi dell'azienda" admin_enterprise_groups_name: "Nome" admin_enterprise_groups_owner: "Proprietario" @@ -2305,6 +2325,10 @@ it: resolve_errors: 'Per favore risolvi i seguenti errori:' more_items: "+ %{count} ancora" default_card_updated: Carta predefinita aggiornata + cart: + add_to_cart_failed: > + C'è stato un problema nell'aggiungere questo prodotto al carrello. Forse + non é più disponibile o il negozio sta chiudendo. admin: enterprise_limit_reached: "Hai raggiunto il limite standard di aziende per account. Scrivi a %{contact_email} se hai bisogno di aumentarlo." modals: @@ -2789,6 +2813,12 @@ it: void: "vuoto" login: "Login" password: "Password" + signature: "Firma" + solution: "Soluzione" + landing_page: "Landing Page" + server: "Server" + test_mode: "Modalità di Test" + logourl: "Logourl" configurations: "Configurazioni" general_settings: "Impostazioni generali" site_name: "Nome del sito" @@ -3012,6 +3042,7 @@ it: tax_invoice: "FATTURA DELLE TASSE" code: "Codice" from: "Da" + to: "Pagamento a" shipping: "Spedizione" form: distribution_fields: @@ -3046,6 +3077,8 @@ it: zone: "Zone" calculator: "Calcolatrice" display: "Visualizza" + both: "Entrambi Checkout e Back office" + back_end: "Solo Back office" no_shipping_methods_found: "Nessun metodo di spedizione trovato" new: new_shipping_method: "Nuovo metodo di spedizione" @@ -3057,6 +3090,9 @@ it: form: categories: "categorie" zones: "Zone" + both: "Entrambi Checkout e Back Office" + back_end: "Solo Back office" + deactivation_warning: "Disattivare un metodo di spedizione può far sparire il metodo di spedizione dalla tua lista. Alternativamente, puoi nascondere il metodo di spedizione dalla pagina di checkout impostando l'opzione 'Visualizza' su 'Solo Back office'." payment_methods: index: payment_methods: "Metodi di pagamento" @@ -3068,8 +3104,11 @@ it: display: "Visualizza" active: "Attivo" both: "Entrambi" + front_end: "Solo checkout" + back_end: "Solo Back office" active_yes: "Sì" active_no: "No" + no_payment_methods_found: "Nessun metodo di pagamento trovato" new: new_payment_method: "Nuovo metodo di pagamento" back_to_payment_methods_list: "Torna all'elenco dei metodi di pagamento" @@ -3098,7 +3137,11 @@ it: active: "Attivo" active_yes: "Sì" active_no: "No" + both: "Entrambi Checkout e Back Office" + front_end: "Solo checkout" + back_end: "Solo Back office" tags: "Tag" + deactivation_warning: "Disattivare un metodo di pagamento può far sparire il metodo di pagamento dalla tua lista. Alternativamente, puoi nascondere il metodo di pagamento dalla pagina di checkout impostando l'opzione 'Visualizza' su 'Solo Back office'." providers: provider: "Provider" payments: @@ -3200,6 +3243,8 @@ it: price: "Prezzo" display_as: "Visualizza come" display_name: "Nome da visualizzare" + display_as_placeholder: 'es. 2 kg' + display_name_placeholder: 'es. Pomodori' autocomplete: producer_name: "Produttore" unit: "Unità" @@ -3238,6 +3283,7 @@ it: format: '%Y-%m-%d' js_format: 'aa-mm-gg' orders: + error_flash_for_unavailable_items: "Un oggetto nel tuo carrello è diventato non disponibile, Per favore aggiorna le quantità selezionate." edit: login_to_view_order: "Effettua il login per visualizzare il tuo ordine." bought: @@ -3265,6 +3311,14 @@ it: invalid: invalido order_mailer: cancel_email: + customer_greeting: "Caro %{name}," + instructions_html: "Il tuo ordine con %{distributor} è stato CANCELLATO. Per favore conserva questa informazione per i tuoi dati." + dont_cancel: "Se hai cambiato idea o non desideri annullare questo ordine, ti preghiamo di contattare%{email}" + order_summary_canceled_html: "Riepilogo Ordine #%{number} [CANCELLATO]" + details: "Qui ci sono i dettagli di quello che hai ordinato:" + unpaid_order: "Il tuo ordine risulta pendente nessun rimborso è stato eseguito" + paid_order: "Il tuo ordine era già stato pagato così %{distributor} ha rimborsato l'intero costo" + credit_order: "Il tuo ordine è stato pagato, quindi il tuo acconto è stato accreditato" subject: "Cancellazione dell'ordine" confirm_email: subject: "Conferma dell'ordine" From dceae2a98b3f70a96c2d4a101024832582d805eb Mon Sep 17 00:00:00 2001 From: Transifex-Openfoodnetwork Date: Mon, 8 Jun 2020 23:23:41 +1000 Subject: [PATCH 33/49] Updating translations for config/locales/it.yml --- config/locales/it.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/config/locales/it.yml b/config/locales/it.yml index c111c89f68..c24462f697 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -5,18 +5,18 @@ it: enterprise_fee: fee_type: Tipo di tariffa spree/order: - payment_state: Stato del pagamento - shipment_state: Stato della spedizione - completed_at: Completo al + payment_state: Stato Pagamento + shipment_state: Stato Spedizione + completed_at: Completo Al number: Numero state: Stato - email: Mail consumatore + email: E-Mail Cliente spree/payment: amount: Quantità spree/product: - primary_taxon: "Categoria prodotto" + primary_taxon: "Categoria Prodotto" supplier: "Fornitore" - shipping_category_id: "Categoria di spedizione" + shipping_category_id: "Categoria Spedizioni" variant_unit: "Unità Variante" variant_unit_name: "Nome Unità Variante" spree/credit_card: From c4e910a7c8cd11500a63e70b684a0bda9d70785c Mon Sep 17 00:00:00 2001 From: jeffrey s hill md Date: Fri, 10 Apr 2020 15:41:40 -0500 Subject: [PATCH 34/49] Make clear filters fetch products automatically without filters The spec change is needed: fetchProducts() makes cleared filters values undefined in removeClearedValues. --- app/assets/javascripts/admin/bulk_product_update.js.coffee | 1 + .../javascripts/unit/admin/bulk_product_update_spec.js.coffee | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/admin/bulk_product_update.js.coffee b/app/assets/javascripts/admin/bulk_product_update.js.coffee index d92bc73566..94939f3f91 100644 --- a/app/assets/javascripts/admin/bulk_product_update.js.coffee +++ b/app/assets/javascripts/admin/bulk_product_update.js.coffee @@ -105,6 +105,7 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", ($scope, $timeout $scope.producerFilter = "0" $scope.categoryFilter = "0" $scope.importDateFilter = "0" + $scope.fetchProducts() $scope.$watch 'sortOptions', (sort) -> return unless sort && sort.predicate != "" diff --git a/spec/javascripts/unit/admin/bulk_product_update_spec.js.coffee b/spec/javascripts/unit/admin/bulk_product_update_spec.js.coffee index 4feff89868..d483bec6a8 100644 --- a/spec/javascripts/unit/admin/bulk_product_update_spec.js.coffee +++ b/spec/javascripts/unit/admin/bulk_product_update_spec.js.coffee @@ -903,8 +903,8 @@ describe "AdminProductEditCtrl", -> $scope.categoryFilter = "6" $scope.resetSelectFilters() expect($scope.query).toBe "" - expect($scope.producerFilter).toBe "0" - expect($scope.categoryFilter).toBe "0" + expect($scope.producerFilter).toBeUndefined + expect($scope.categoryFilter).toBeUndefined describe "converting arrays of objects with ids to an object with ids as keys", -> From 5fcc0dcd14ed4fba3ae817c008e6e61b0355ec38 Mon Sep 17 00:00:00 2001 From: Steve Roberts Date: Wed, 27 May 2020 15:58:36 +1000 Subject: [PATCH 35/49] Add configuration to enable matomo tag manager - Update embed codes and allow both scripts concurrently - Add lines around blocks - Update MTM copy based on PR feedback - checked cookies unchanged --- app/models/spree/app_configuration_decorator.rb | 1 + app/views/admin/matomo_settings/edit.html.haml | 6 +++++- app/views/layouts/_matomo_tag.html.haml | 15 ++++++++++++--- config/locales/en.yml | 4 +++- 4 files changed, 21 insertions(+), 5 deletions(-) diff --git a/app/models/spree/app_configuration_decorator.rb b/app/models/spree/app_configuration_decorator.rb index 5b11a0ee61..a039ddbd45 100644 --- a/app/models/spree/app_configuration_decorator.rb +++ b/app/models/spree/app_configuration_decorator.rb @@ -26,6 +26,7 @@ Spree::AppConfiguration.class_eval do preference :bugherd_api_key, :string, default: nil preference :matomo_url, :string, default: nil preference :matomo_site_id, :string, default: nil + preference :matomo_tag_manager_url, :string, default: nil # Invoices & Receipts preference :enable_invoices?, :boolean, default: true diff --git a/app/views/admin/matomo_settings/edit.html.haml b/app/views/admin/matomo_settings/edit.html.haml index 51f553bcff..6a6b447da4 100644 --- a/app/views/admin/matomo_settings/edit.html.haml +++ b/app/views/admin/matomo_settings/edit.html.haml @@ -17,7 +17,11 @@ .field = label_tag(:matomo_site_id, t('.matomo_site_id')) + tag(:br) = preference_field_tag("preferences[#{:matomo_site_id}]", Spree::Config[:matomo_site_id], type: Spree::Config.preference_type(:matomo_site_id)) - + + %legend= t('.config_instructions_tag_manager_html') + .field + = label_tag(:matomo_tag_manager_url, t('.matomo_tag_manager_url')) + tag(:br) + = preference_field_tag("preferences[#{:matomo_tag_manager_url}]", Spree::Config[:matomo_tag_manager_url], type: Spree::Config.preference_type(:matomo_tag_manager_url)) .form-buttons{"data-hook" => "buttons"} = button t(:update), 'icon-refresh' diff --git a/app/views/layouts/_matomo_tag.html.haml b/app/views/layouts/_matomo_tag.html.haml index aba1b19528..85a4cf47dc 100644 --- a/app/views/layouts/_matomo_tag.html.haml +++ b/app/views/layouts/_matomo_tag.html.haml @@ -1,6 +1,15 @@ + +- if Spree::Config.matomo_tag_manager_url.present? + :javascript + var _mtm = _mtm || []; + _mtm.push({'mtm.startTime': (new Date().getTime()), 'event': 'mtm.Start'}); + var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; + var u="#{Spree::Config.matomo_tag_manager_url}"; + g.type='text/javascript'; g.async=true; g.defer=true; g.src=u; s.parentNode.insertBefore(g,s); + - if Spree::Config.matomo_url.present? :javascript - var _paq = _paq || []; + var _paq = window._paq || []; _paq.push(["setDocumentTitle", document.domain + "/" + document.title]); _paq.push(["setCookieDomain", "*.#{Spree::Config.site_url}"]); _paq.push(["setDomains", ["*.#{Spree::Config.site_url}"]]); @@ -8,8 +17,8 @@ _paq.push(['enableLinkTracking']); (function() { var u="#{Spree::Config.matomo_url}"; - _paq.push(['setTrackerUrl', u+'piwik.php']); + _paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setSiteId', '#{Spree::Config.matomo_site_id}']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; - g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s); + g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); })(); diff --git a/config/locales/en.yml b/config/locales/en.yml index 63be6d0844..195253f8e1 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -415,8 +415,10 @@ en: title: "Matomo Settings" matomo_url: "Matomo URL" matomo_site_id: "Matomo Site ID" - info_html: "Matomo is a Web and Mobile Analytics. You can either host Matomo on-premises or use a cloud-hosted service. See matomo.org for more information." + matomo_tag_manager_url: "Matomo Tag Manager URL" + info_html: "Matomo is a Web and Mobile Analytics application. You can either host Matomo on-premises or use a cloud-hosted service. See matomo.org for more information." config_instructions_html: "Here you can configure the OFN Matomo integration. The Matomo URL below should point to the Matomo instance where the user tracking information will be sent to; if it is left empty, Matomo user tracking will be disabled. The Site ID field is not mandatory but useful if you are tracking more than one website on a single Matomo instance; it can be found on the Matomo instance console." + config_instructions_tag_manager_html: "Setting the Matomo Tag Manager URL enables Matomo Tag Manager. This tool allows you to set up analytics events. The Matomo Tag Manager URL is copied from the Install Code section of Matomo Tag Manager. Ensure you select the right container and environment as these options change the URL." customers: index: From 6056c1699f58a0a3bb75e8e7accbfe3d75e8f65b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Turbelin?= Date: Tue, 9 Jun 2020 10:10:34 +0200 Subject: [PATCH 36/49] Use batches in order to fetch orders --- app/services/bulk_invoice_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/bulk_invoice_service.rb b/app/services/bulk_invoice_service.rb index ab69df03ca..b4c096b3c3 100644 --- a/app/services/bulk_invoice_service.rb +++ b/app/services/bulk_invoice_service.rb @@ -8,7 +8,7 @@ class BulkInvoiceService def start_pdf_job(order_ids) pdf = CombinePDF.new - orders_from(order_ids).each do |order| + orders_from(order_ids).find_each do |order| invoice = renderer.render_to_string(order) pdf << CombinePDF.parse(invoice) From 795106aaa28293048c9003dc93d88894d2abb1c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Turbelin?= Date: Tue, 9 Jun 2020 10:11:11 +0200 Subject: [PATCH 37/49] Use real orders inside spec to extend coverage --- spec/services/bulk_invoice_service_spec.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/spec/services/bulk_invoice_service_spec.rb b/spec/services/bulk_invoice_service_spec.rb index 1874a0fcb4..52fe085288 100644 --- a/spec/services/bulk_invoice_service_spec.rb +++ b/spec/services/bulk_invoice_service_spec.rb @@ -50,8 +50,11 @@ describe BulkInvoiceService do describe "#orders_from" do it "orders with completed desc" do - expect(service.send(:orders_from, [1, 2]).to_sql) - .to include('ORDER BY completed_at DESC') + order_old = create(:order_with_distributor, :completed, completed_at: 2.minutes.ago) + order_older = create(:order_with_distributor, :completed, completed_at: 3.minutes.ago) + + expect(service.send(:orders_from, [order_older.id, order_old.id]).pluck(:id)) + .to eq([order_old.id, order_older.id]) end end end From c4fbce30c8232f33c123d29b2947ae0bcd7571cc Mon Sep 17 00:00:00 2001 From: Robin Klaus Date: Tue, 9 Jun 2020 16:07:54 +1000 Subject: [PATCH 38/49] Add translation keys to en.yml file for variant_override error message translation --- config/locales/en.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/locales/en.yml b/config/locales/en.yml index 63be6d0844..7e1d3e4670 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -44,6 +44,8 @@ en: base: "Credit Card" order_cycle: orders_close_at: Close date + variant_override: + count_on_hand: "On Hand" errors: models: spree/user: From 680ee3dc860da5bf6ad4af1c1b444d788dffeb80 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Wed, 10 Jun 2020 10:05:47 +1000 Subject: [PATCH 39/49] Check the bulk invoice rendering order As it turns out, our performance optimisation with `find_each` overrides or custom sorting. --- spec/services/bulk_invoice_service_spec.rb | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/spec/services/bulk_invoice_service_spec.rb b/spec/services/bulk_invoice_service_spec.rb index 52fe085288..1ff3d9edab 100644 --- a/spec/services/bulk_invoice_service_spec.rb +++ b/spec/services/bulk_invoice_service_spec.rb @@ -49,12 +49,25 @@ describe BulkInvoiceService do end describe "#orders_from" do + let(:renderer) { InvoiceRenderer.new } + + before do + allow(InvoiceRenderer).to receive(:new).and_return(renderer) + end + it "orders with completed desc" do order_old = create(:order_with_distributor, :completed, completed_at: 2.minutes.ago) + order_oldest = create(:order_with_distributor, :completed, completed_at: 4.minutes.ago) order_older = create(:order_with_distributor, :completed, completed_at: 3.minutes.ago) - expect(service.send(:orders_from, [order_older.id, order_old.id]).pluck(:id)) - .to eq([order_old.id, order_older.id]) + # This is the creation order provided `find_each` which invalidates + # our intended sorting by `completed_at`: + expect(renderer).to receive(:render_to_string).with(order_old).ordered.and_return("") + expect(renderer).to receive(:render_to_string).with(order_oldest).ordered.and_return("") + expect(renderer).to receive(:render_to_string).with(order_older).ordered.and_return("") + + order_ids = [order_oldest, order_old, order_older].map(&:id) + service.start_pdf_job_without_delay(order_ids) end end end From 7d53b12baf029cac51651b59f2f12ca2dc3fd53a Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Wed, 10 Jun 2020 10:08:06 +1000 Subject: [PATCH 40/49] Preserve sorting by completion date --- app/services/bulk_invoice_service.rb | 2 +- spec/services/bulk_invoice_service_spec.rb | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/app/services/bulk_invoice_service.rb b/app/services/bulk_invoice_service.rb index b4c096b3c3..ab69df03ca 100644 --- a/app/services/bulk_invoice_service.rb +++ b/app/services/bulk_invoice_service.rb @@ -8,7 +8,7 @@ class BulkInvoiceService def start_pdf_job(order_ids) pdf = CombinePDF.new - orders_from(order_ids).find_each do |order| + orders_from(order_ids).each do |order| invoice = renderer.render_to_string(order) pdf << CombinePDF.parse(invoice) diff --git a/spec/services/bulk_invoice_service_spec.rb b/spec/services/bulk_invoice_service_spec.rb index 1ff3d9edab..687e680bcc 100644 --- a/spec/services/bulk_invoice_service_spec.rb +++ b/spec/services/bulk_invoice_service_spec.rb @@ -60,11 +60,9 @@ describe BulkInvoiceService do order_oldest = create(:order_with_distributor, :completed, completed_at: 4.minutes.ago) order_older = create(:order_with_distributor, :completed, completed_at: 3.minutes.ago) - # This is the creation order provided `find_each` which invalidates - # our intended sorting by `completed_at`: expect(renderer).to receive(:render_to_string).with(order_old).ordered.and_return("") - expect(renderer).to receive(:render_to_string).with(order_oldest).ordered.and_return("") expect(renderer).to receive(:render_to_string).with(order_older).ordered.and_return("") + expect(renderer).to receive(:render_to_string).with(order_oldest).ordered.and_return("") order_ids = [order_oldest, order_old, order_older].map(&:id) service.start_pdf_job_without_delay(order_ids) From f8673fb57587d35b8d11fec4ef75d0f96042ad3a Mon Sep 17 00:00:00 2001 From: Steve Roberts Date: Wed, 10 Jun 2020 15:06:53 +1000 Subject: [PATCH 41/49] Moved tag manager instructions to be directly below the field --- app/views/admin/matomo_settings/edit.html.haml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/admin/matomo_settings/edit.html.haml b/app/views/admin/matomo_settings/edit.html.haml index 6a6b447da4..0c553ae002 100644 --- a/app/views/admin/matomo_settings/edit.html.haml +++ b/app/views/admin/matomo_settings/edit.html.haml @@ -17,11 +17,11 @@ .field = label_tag(:matomo_site_id, t('.matomo_site_id')) + tag(:br) = preference_field_tag("preferences[#{:matomo_site_id}]", Spree::Config[:matomo_site_id], type: Spree::Config.preference_type(:matomo_site_id)) - - %legend= t('.config_instructions_tag_manager_html') + .field = label_tag(:matomo_tag_manager_url, t('.matomo_tag_manager_url')) + tag(:br) = preference_field_tag("preferences[#{:matomo_tag_manager_url}]", Spree::Config[:matomo_tag_manager_url], type: Spree::Config.preference_type(:matomo_tag_manager_url)) + .warning.note= t('.config_instructions_tag_manager_html') .form-buttons{"data-hook" => "buttons"} = button t(:update), 'icon-refresh' From 9a2618cd39fea24e35e01409f5d4da75993716d6 Mon Sep 17 00:00:00 2001 From: Transifex-Openfoodnetwork Date: Thu, 11 Jun 2020 01:09:41 +1000 Subject: [PATCH 42/49] Updating translations for config/locales/ca.yml --- config/locales/ca.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 4ee031cc78..4dd66970b6 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -2815,6 +2815,12 @@ ca: void: "Buit" login: "Inicia sessió" password: "Contrasenya" + signature: "Signatura" + solution: "Solució" + landing_page: "Pàgina d'inici" + server: "Servidor" + test_mode: "Mode de prova" + logourl: "URL del logo" configurations: "Configuracions" general_settings: "Configuració general" site_name: "Nom del lloc" @@ -3100,9 +3106,11 @@ ca: display: "Mostra" active: "Actiu" both: "Ambdós" + front_end: "Visible només per al comprador" back_end: "Només pàgina administració (back office) " active_yes: "Sí" active_no: "No" + no_payment_methods_found: "No s'han trobat mètodes de pagament" new: new_payment_method: "Nou mètode de pagament" back_to_payment_methods_list: "Tornar a la llista de mètodes de pagament" @@ -3132,8 +3140,10 @@ ca: active_yes: "Sí" active_no: "No" both: "Ambdues, validació de comanda i administració" + front_end: "Visible només per al comprador" back_end: "Només pàgina administració (back office) " tags: "Etiquetes" + deactivation_warning: "Desactivar un mètode de pagament pot fer que el mètode de pagament desapareixi de la vostra llista. De forma alternativa, podeu amagar un mètode de pagament a la pàgina de compra definint l'opció 'Mostra' com a 'Visible per a l'administrador'." providers: provider: "Proveïdor" payments: From 1abbd7261e33c819620c7458e8fbc5998fbf3764 Mon Sep 17 00:00:00 2001 From: Transifex-Openfoodnetwork Date: Thu, 11 Jun 2020 01:13:33 +1000 Subject: [PATCH 43/49] Updating translations for config/locales/es.yml --- config/locales/es.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/config/locales/es.yml b/config/locales/es.yml index 0fc3a89fe4..3ae8c94f87 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -2815,6 +2815,12 @@ es: void: "Vacío" login: "Iniciar sesión" password: "Contraseña" + signature: "Firma" + solution: "Solución" + landing_page: "Página de inicio" + server: "Servidor" + test_mode: "Modo de prueba" + logourl: "URL del logo" configurations: "Configuraciones" general_settings: "Configuración general" site_name: "Nombre del sitio" @@ -3100,9 +3106,11 @@ es: display: "Mostrar" active: "Activo" both: "Ambos" + front_end: "Solo visible para el comprador" back_end: "Solo en Administración" active_yes: "Sí" active_no: "No" + no_payment_methods_found: "No se encontraron métodos de pago." new: new_payment_method: "Nuevo método de pago" back_to_payment_methods_list: "Volver a la lista de métodos de pago" @@ -3132,8 +3140,10 @@ es: active_yes: "Sí" active_no: "No" both: "Tanto en Hacer pedido como en Administración" + front_end: "Solo visible para el comprador" back_end: "Solo en Administración" tags: "Tags" + deactivation_warning: "La desactivación de un método de pago puede hacer que el método de pago desaparezca de su lista. Alternativamente, puede ocultar un método de pago desde la página de pago configurando la opción 'Mostrar' como 'Solo visible para el administrador'." providers: provider: "Proveedor" payments: From 1a700f870c035e6bb27b53954c06be095678fd9e Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed, 10 Jun 2020 19:16:40 +0000 Subject: [PATCH 44/49] Bump test-unit from 3.3.5 to 3.3.6 Bumps [test-unit](https://github.com/test-unit/test-unit) from 3.3.5 to 3.3.6. - [Release notes](https://github.com/test-unit/test-unit/releases) - [Commits](https://github.com/test-unit/test-unit/compare/3.3.5...3.3.6) Signed-off-by: dependabot-preview[bot] --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index fbe58d5b4d..dab1f92496 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -494,7 +494,7 @@ GEM polyamorous (0.5.0) activerecord (~> 3.0) polyglot (0.3.5) - power_assert (1.1.5) + power_assert (1.2.0) pry (0.12.2) coderay (~> 1.1.0) method_source (~> 0.9.0) @@ -637,7 +637,7 @@ GEM state_machine (1.2.0) stringex (1.5.1) stripe (5.22.0) - test-unit (3.3.5) + test-unit (3.3.6) power_assert thor (0.20.3) tilt (1.4.1) From 220c84075f89c7df5b38facb203c79f2d103210e Mon Sep 17 00:00:00 2001 From: Transifex-Openfoodnetwork Date: Thu, 11 Jun 2020 16:25:36 +1000 Subject: [PATCH 45/49] Updating translations for config/locales/en_FR.yml --- config/locales/en_FR.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/config/locales/en_FR.yml b/config/locales/en_FR.yml index 37dc60af05..352eedea77 100644 --- a/config/locales/en_FR.yml +++ b/config/locales/en_FR.yml @@ -368,8 +368,10 @@ en_FR: title: "Matomo Settings" matomo_url: "Matomo URL" matomo_site_id: "Matomo Site ID" - info_html: "Matomo is a Web and Mobile Analytics. You can either host Matomo on-premises or use a cloud-hosted service. See matomo.org for more information." + matomo_tag_manager_url: "Matomo Tag Manager URL" + info_html: "Matomo is a Web and Mobile Analytics application. You can either host Matomo on-premises or use a cloud-hosted service. See matomo.orgfor more information." config_instructions_html: "Here you can configure the OFN Matomo integration. The Matomo URL below should point to the Matomo instance where the user tracking information will be sent to; if it is left empty, Matomo user tracking will be disabled. The Site ID field is not mandatory but useful if you are tracking more than one website on a single Matomo instance; it can be found on the Matomo instance console." + config_instructions_tag_manager_html: "Setting the Matomo Tag Manager URL enables Matomo Tag Manager. This tool allows you to set up analytics events. The Matomo Tag Manager URL is copied from the Install Code section of Matomo Tag Manager. Ensure you select the right container and environment as these options change the URL." customers: index: new_customer: "New Customer" @@ -2931,6 +2933,12 @@ en_FR: options: "Options" actions: update: "Update" + shared: + error_messages: + errors_prohibited_this_record_from_being_saved: + one: "1 error prohibited this record from being saved:" + other: "%{count} errors prohibited this record from being saved:" + there_were_problems_with_the_following_fields: "There were problems with the following fields" errors: messages: blank: "can't be blank" @@ -3242,6 +3250,7 @@ en_FR: display_as_placeholder: 'eg. 2 kg' display_name_placeholder: 'eg. Tomatoes' autocomplete: + out_of_stock: "Out of Stock" producer_name: "Producer" unit: "Unit" shared: From 472338b522af0e161a3f7cc037f6e5a4c7b0f4b5 Mon Sep 17 00:00:00 2001 From: Transifex-Openfoodnetwork Date: Thu, 11 Jun 2020 16:32:02 +1000 Subject: [PATCH 46/49] Updating translations for config/locales/fr.yml --- config/locales/fr.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 88e0e981c1..6f4cf8df9b 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -368,8 +368,10 @@ fr: title: "Configuration Matomo" matomo_url: "URL de l'instance sur Matomo" matomo_site_id: "ID de l'instance sur Matomo" - info_html: "Matomo est un outil d'analyse de trafic web (ordinateur et téléphone). Vous pouvez installer vous-même Matomo ou utiliser une version hébergée. Voir matomo.org pour plus d'information." + matomo_tag_manager_url: "URL du Matomo Tag Manager" + info_html: "Matomo est un outil de suivi de traffic et de comportement des utilisateurs. Matomo est open source et validée par la CNIL française car non intrusif dans les données personnelles des utilisateurs. Pour plus d'infos : matomo.org." config_instructions_html: "Pour utiliser Matomo, vous devez configurer l'intégration avec Open Food France. L'URL de l'instance sur Matomo correspond à l'url du site internet visé par le suivi de la navigation utilisateur. Si le champ est vide, Matomo n'effectuera aucune analyse sur ce site. L'ID de l'instance sur Matomo n'est pas obligatoire, mais nécessaire si vous souhaitez analyser plusieurs sites web sur une seule instance Matomo. Cet ID peut être trouvé sur l'espace administrateur Matomo." + config_instructions_tag_manager_html: "Ajouter l'URL du Tag Manager rend actif Matomo Tag Manager. Cet outil vous permet de suivre des évènements en particulier. Pour trouver l'URL rendez-vous sur l' \"Install Code section\" du Tag Manager. Attention à bien copier le bon contener et le bon environnement, car ils font varier l'URL." customers: index: new_customer: "Nouvel acheteur" @@ -2961,6 +2963,12 @@ fr: options: "Options" actions: update: "Mettre à jour" + shared: + error_messages: + errors_prohibited_this_record_from_being_saved: + one: "1 erreur n'a pas permis de sauvegarder:" + other: "%{count} erreurs ne permettent pas de sauvegarder:" + there_were_problems_with_the_following_fields: "Ils a eu des soucis avec les champs suivants" errors: messages: blank: "Champ obligatoire" @@ -3272,6 +3280,7 @@ fr: display_as_placeholder: 'ex. 2 kg' display_name_placeholder: 'ex. Tomates' autocomplete: + out_of_stock: "En rupture de stock" producer_name: "Producteur" unit: "Unité" shared: From 6ef94febe59eafb281a07e26ac28298671e0a7f1 Mon Sep 17 00:00:00 2001 From: Transifex-Openfoodnetwork Date: Thu, 11 Jun 2020 17:10:49 +1000 Subject: [PATCH 47/49] Updating translations for config/locales/ca.yml --- config/locales/ca.yml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 4dd66970b6..fe72aeeb3a 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -368,8 +368,10 @@ ca: title: "Configuració de Matomo" matomo_url: "URL de Matomo" matomo_site_id: "Identificador de Matomo" - info_html: "Matomo és un analitzador de webs i mòbils. Podeu allotjar Matomo de manera local o utilitzar un servei al núvol. Vegeu matomo.org per obtenir més informació." + matomo_tag_manager_url: "URL de Matomo Tag Manager" + info_html: "Matomo és una aplicació d'analytics web i mòbil. Podeu allotjar Matomo en local o bé utilitzar un servei allotjat al núvol. Consulteu matomo.org per obtenir més informació." config_instructions_html: "Aquí podeu configurar la integració Matomo OFN. L'URL de Matomo que us apareix a continuació ha d'indicar la instància de Matomo en la qual s'enviarà la informació de seguiment de l'usuari; si es deixa buit, el seguiment de l'usuari de Matomo estarà desactivat. El camp d'identificació del lloc no és obligatori, però és útil si fa un seguiment de més d'un lloc web en una sola instància de Matomo; es pot trobar a la consola d'instància de Matomo." + config_instructions_tag_manager_html: "En configurar l'URL de Matomo Tag Manager s'activa Matomo Tag Manager. Aquesta eina us permet configurar esdeveniments d’analítica. L’URL de Matomo Tag Manager es copia de la secció Instal·lar codi de Matomo Tag Manager. Assegureu-vos de seleccionar el contenidor i l’entorn adequats ja que aquestes opcions canvien l’URL." customers: index: new_customer: "Nova consumidora" @@ -2937,6 +2939,12 @@ ca: options: "Opcions" actions: update: "Actualitzar" + shared: + error_messages: + errors_prohibited_this_record_from_being_saved: + one: "Un error va prohibir guardar aquest registre:" + other: "%{count} errors han impedit guardar aquest registre:" + there_were_problems_with_the_following_fields: "Hi ha hagut problemes amb els camps següents" errors: messages: blank: "no es pot deixar en blanc" @@ -3143,7 +3151,7 @@ ca: front_end: "Visible només per al comprador" back_end: "Només pàgina administració (back office) " tags: "Etiquetes" - deactivation_warning: "Desactivar un mètode de pagament pot fer que el mètode de pagament desapareixi de la vostra llista. De forma alternativa, podeu amagar un mètode de pagament a la pàgina de compra definint l'opció 'Mostra' com a 'Visible per a l'administrador'." + deactivation_warning: "Desactivar un mètode de pagament pot fer que el mètode de pagament desapareixi de la vostra llista. De forma alternativa, podeu amagar un mètode de pagament a la pàgina de compra configurant l'opció \"Mostrar\" a \"només a la pàgina d'administració\" (back end)." providers: provider: "Proveïdor" payments: @@ -3248,6 +3256,7 @@ ca: display_as_placeholder: 'per exemple. 2 kg' display_name_placeholder: 'per exemple. Tomàquets' autocomplete: + out_of_stock: "Fora d'existència" producer_name: "Productor" unit: "Unitat" shared: From e76bc07d7246fe0125c93c12127031968726d8ea Mon Sep 17 00:00:00 2001 From: Transifex-Openfoodnetwork Date: Thu, 11 Jun 2020 17:11:55 +1000 Subject: [PATCH 48/49] Updating translations for config/locales/es.yml --- config/locales/es.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/config/locales/es.yml b/config/locales/es.yml index 3ae8c94f87..f4ea131b1e 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -368,8 +368,10 @@ es: title: "Configuración de Matomo" matomo_url: "URL de Matomo" matomo_site_id: "ID de sitio de Matomo" - info_html: "Matomo es un analizador web y móvil. Puede alojar Matomo en sus servidores o utilizar un servicio alojado en la nube. Consulte matomo.org para obtener más información." + matomo_tag_manager_url: "URL de Matomo Tag Manager" + info_html: "Matomo es una aplicación de análisis web y móvil. Puede alojar Matomo localmente o utilizar un servicio alojado en la nube. Ver matomo.org para más información." config_instructions_html: "Aquí puede configurar la integración de OFN Matomo. La siguiente URL de Matomo debe apuntar a la instancia de Matomo a la que se enviará la información de seguimiento del usuario; si se deja vacío, el seguimiento del usuario Matomo se desactivará. El campo ID del sitio no es obligatorio, pero es útil si está rastreando más de un sitio web en una sola instancia de Matomo; se puede encontrar en la consola de la instancia de Matomo." + config_instructions_tag_manager_html: "La configuración de la URL de Matomo Tag Manager habilita Matomo Tag Manager. Esta herramienta le permite configurar eventos analíticos. La URL de Matomo Tag Manager se copia de la sección Código de instalación de Matomo Tag Manager. Asegúrese de seleccionar el contenedor y el entorno correctos, ya que estas opciones cambian la URL." customers: index: new_customer: "Nuevo Consumidor" @@ -2937,6 +2939,12 @@ es: options: "Opciones" actions: update: "Actualizar" + shared: + error_messages: + errors_prohibited_this_record_from_being_saved: + one: "1 error prohibió guardar este registro:" + other: "%{count} errores impidieron que se guardara este registro:" + there_were_problems_with_the_following_fields: "Hubo problemas con los siguientes campos" errors: messages: blank: "no puede estar vacío" @@ -3248,6 +3256,7 @@ es: display_as_placeholder: 'p. ej. 2 Kg' display_name_placeholder: 'p. ej. Tomates' autocomplete: + out_of_stock: "Agotado" producer_name: "Productora" unit: "Unidad" shared: From 9d5c657ff999aa5d89f0079d35e71e3dc55f6f61 Mon Sep 17 00:00:00 2001 From: Pau Perez Date: Thu, 11 Jun 2020 15:49:05 +0200 Subject: [PATCH 49/49] Update all locales with the latest Transifex translations --- config/locales/ar.yml | 2 +- config/locales/de_DE.yml | 1 - config/locales/en_AU.yml | 2 +- config/locales/en_BE.yml | 2 +- config/locales/en_CA.yml | 2 +- config/locales/en_DE.yml | 2 +- config/locales/en_GB.yml | 2 +- config/locales/en_IE.yml | 2 +- config/locales/en_NZ.yml | 2 +- config/locales/en_PH.yml | 2 +- config/locales/en_US.yml | 2 +- config/locales/en_ZA.yml | 2 +- config/locales/es_CR.yml | 2 +- config/locales/fil_PH.yml | 12 +- config/locales/fr_BE.yml | 2 +- config/locales/fr_CA.yml | 2 +- config/locales/it.yml | 250 +++++++++++++++++++------------------- config/locales/nb.yml | 2 +- config/locales/nl_BE.yml | 2 +- config/locales/pt.yml | 2 +- config/locales/pt_BR.yml | 2 +- config/locales/tr.yml | 32 ++--- 22 files changed, 165 insertions(+), 166 deletions(-) diff --git a/config/locales/ar.yml b/config/locales/ar.yml index f4c0dbbcf7..278d54f8dd 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -363,7 +363,6 @@ ar: title: "إعدادات Matomo" matomo_url: "العنوان الالكتروني ل Matomo " matomo_site_id: "معرف موقع Matomo" - info_html: "Matomo هو تحليلات الويب والجوال. يمكنك إما تنصيب Matomo محليًا أو استخدام خدمة استضافة سحابية. انظر matomo.org لمزيد من المعلومات." config_instructions_html: "هنا يمكنك تهيئة تكامل Matomo لشبكة الغذاء المفتوح. يجب أن يشير عنوان الالكتروني URL الخاص بـ Matomo أدناه إلى مثيل Matomo حيث سيتم إرسال معلومات تتبع المستخدم إلى ؛ إذا تم تركه فارغًا ، فسيتم تعطيل تتبع مستخدم Matomo. حقل معرف الموقع ليس إلزاميًا ولكنه مفيد إذا كنت تتعقب أكثر من موقع ويب على مثيل Matomo ؛ يمكن العثور عليه على وحدة تحكم مثيل Matomo." customers: index: @@ -3168,6 +3167,7 @@ ar: display_as: "عرض ب" display_name: "اسم العرض" autocomplete: + out_of_stock: "غير متوفر" producer_name: "المنتج" unit: "وحدة" shared: diff --git a/config/locales/de_DE.yml b/config/locales/de_DE.yml index ea894331c1..f15957eb07 100644 --- a/config/locales/de_DE.yml +++ b/config/locales/de_DE.yml @@ -367,7 +367,6 @@ de_DE: title: "Matomo-Einstellungen" matomo_url: "Matomo-URL" matomo_site_id: "Matomo-Site-ID" - info_html: "Matomo ist eine Web- und Mobile Analytics. Sie können Matomo entweder lokal hosten oder einen von der Cloud gehosteten Dienst verwenden. Weitere Informationen finden Sie unter matomo.org ." config_instructions_html: "Hier können Sie die OFN Matomo Integration konfigurieren. Die unten angegebene Matomo-URL sollte auf die Matomo-Instanz verweisen, an die die Benutzerverfolgungsinformationen gesendet werden. Wenn es leer bleibt, wird das Matomo-Benutzer-Tracking deaktiviert. Das Feld Site-ID ist nicht obligatorisch, aber nützlich, wenn Sie mehr als eine Website in einer einzelnen Matomo-Instanz verfolgen. Es kann auf der Matomo-Instanzkonsole gefunden werden." customers: index: diff --git a/config/locales/en_AU.yml b/config/locales/en_AU.yml index 87dd14b521..85e74324b9 100644 --- a/config/locales/en_AU.yml +++ b/config/locales/en_AU.yml @@ -359,7 +359,6 @@ en_AU: title: "Matomo Settings" matomo_url: "Matomo URL" matomo_site_id: "Matomo Site ID" - info_html: "Matomo is a Web and Mobile Analytics. You can either host Matomo on-premises or use a cloud-hosted service. See matomo.org for more information." config_instructions_html: "Here you can configure the OFN Matomo integration. The Matomo URL below should point to the Matomo instance where the user tracking information will be sent to; if it is left empty, Matomo user tracking will be disabled. The Site ID field is not mandatory but useful if you are tracking more than one website on a single Matomo instance; it can be found on the Matomo instance console." customers: index: @@ -3114,6 +3113,7 @@ en_AU: display_as: "Display As" display_name: "Display Name" autocomplete: + out_of_stock: "Out of Stock" producer_name: "Producer" unit: "Unit" shared: diff --git a/config/locales/en_BE.yml b/config/locales/en_BE.yml index ad108f1377..ccefbc27d6 100644 --- a/config/locales/en_BE.yml +++ b/config/locales/en_BE.yml @@ -354,7 +354,6 @@ en_BE: title: "Matomo Settings" matomo_url: "Matomo URL" matomo_site_id: "Matomo Site ID" - info_html: "Matomo is a Web and Mobile Analytics. You can either host Matomo on-premises or use a cloud-hosted service. See matomo.org for more information." config_instructions_html: "Here you can configure the OFN Matomo integration. The Matomo URL below should point to the Matomo instance where the user tracking information will be sent to; if it is left empty, Matomo user tracking will be disabled. The Site ID field is not mandatory but useful if you are tracking more than one website on a single Matomo instance; it can be found on the Matomo instance console." customers: index: @@ -3021,6 +3020,7 @@ en_BE: price: "Price" display_as: "Display As" autocomplete: + out_of_stock: "Out of Stock" producer_name: "Producer" unit: "Unit" shared: diff --git a/config/locales/en_CA.yml b/config/locales/en_CA.yml index 2d06220419..8eb65e9a43 100644 --- a/config/locales/en_CA.yml +++ b/config/locales/en_CA.yml @@ -368,7 +368,6 @@ en_CA: title: "Matomo Settings" matomo_url: "Matomo URL" matomo_site_id: "Matomo Site ID" - info_html: "Matomo is a Web and Mobile Analytics. You can either host Matomo on-premises or use a cloud-hosted service. See matomo.org for more information." config_instructions_html: "Here you can configure the OFN Matomo integration. The Matomo URL below should point to the Matomo instance where the user tracking information will be sent to; if it is left empty, Matomo user tracking will be disabled. The Site ID field is not mandatory but useful if you are tracking more than one website on a single Matomo instance; it can be found on the Matomo instance console." customers: index: @@ -3231,6 +3230,7 @@ en_CA: display_as_placeholder: 'eg. 2 kg' display_name_placeholder: 'eg. Tomatoes' autocomplete: + out_of_stock: "Out of Stock" producer_name: "Producer" unit: "Unit" shared: diff --git a/config/locales/en_DE.yml b/config/locales/en_DE.yml index f3effeead7..43f8f6dd44 100644 --- a/config/locales/en_DE.yml +++ b/config/locales/en_DE.yml @@ -359,7 +359,6 @@ en_DE: title: "Matomo Settings" matomo_url: "Matomo URL" matomo_site_id: "Matomo Site ID" - info_html: "Matomo is a Web and Mobile Analytics. You can either host Matomo on-premises or use a cloud-hosted service. See matomo.org for more information." config_instructions_html: "Here you can configure the OFN Matomo integration. The Matomo URL below should point to the Matomo instance where the user tracking information will be sent to; if it is left empty, Matomo user tracking will be disabled. The Site ID field is not mandatory but useful if you are tracking more than one website on a single Matomo instance; it can be found on the Matomo instance console." customers: index: @@ -3037,6 +3036,7 @@ en_DE: price: "Price" display_as: "Display As" autocomplete: + out_of_stock: "Out of Stock" producer_name: "Producer" unit: "Unit" shared: diff --git a/config/locales/en_GB.yml b/config/locales/en_GB.yml index f18c25b4dd..71358c855d 100644 --- a/config/locales/en_GB.yml +++ b/config/locales/en_GB.yml @@ -368,7 +368,6 @@ en_GB: title: "Matomo Settings" matomo_url: "Matomo URL" matomo_site_id: "Matomo Site ID" - info_html: "Matomo is a Web and Mobile Analytics. You can either host Matomo on-premises or use a cloud-hosted service. See matomo.org for more information." config_instructions_html: "Here you can configure the OFN Matomo integration. The Matomo URL below should point to the Matomo instance where the user tracking information will be sent to; if it is left empty, Matomo user tracking will be disabled. The Site ID field is not mandatory but useful if you are tracking more than one website on a single Matomo instance; it can be found on the Matomo instance console." customers: index: @@ -3238,6 +3237,7 @@ en_GB: display_as_placeholder: 'eg. 2 kg' display_name_placeholder: 'eg. Tomatoes' autocomplete: + out_of_stock: "Out of Stock" producer_name: "Producer" unit: "Unit" shared: diff --git a/config/locales/en_IE.yml b/config/locales/en_IE.yml index 0f838aff2e..69bcb54e04 100644 --- a/config/locales/en_IE.yml +++ b/config/locales/en_IE.yml @@ -368,7 +368,6 @@ en_IE: title: "Matomo Settings" matomo_url: "Matomo URL" matomo_site_id: "Matomo Site ID" - info_html: "Matomo is a Web and Mobile Analytics. You can either host Matomo on-premises or use a cloud-hosted service. See matomo.org for more information." config_instructions_html: "Here you can configure the OFN Matomo integration. The Matomo URL below should point to the Matomo instance where the user tracking information will be sent to; if it is left empty, Matomo user tracking will be disabled. The Site ID field is not mandatory but useful if you are tracking more than one website on a single Matomo instance; it can be found on the Matomo instance console." customers: index: @@ -3229,6 +3228,7 @@ en_IE: display_as_placeholder: 'eg. 2 kg' display_name_placeholder: 'eg. Tomatoes' autocomplete: + out_of_stock: "Out of Stock" producer_name: "Producer" unit: "Unit" shared: diff --git a/config/locales/en_NZ.yml b/config/locales/en_NZ.yml index 22a9902b96..fa30c62f25 100644 --- a/config/locales/en_NZ.yml +++ b/config/locales/en_NZ.yml @@ -368,7 +368,6 @@ en_NZ: title: "Matomo Settings" matomo_url: "Matomo URL" matomo_site_id: "Matomo Site ID" - info_html: "Matomo is a Web and Mobile Analytics. You can either host Matomo on-premises or use a cloud-hosted service. See matomo.org for more information." config_instructions_html: "Here you can configure the OFN Matomo integration. The Matomo URL below should point to the Matomo instance where the user tracking information will be sent to; if it is left empty, Matomo user tracking will be disabled. The Site ID field is not mandatory but useful if you are tracking more than one website on a single Matomo instance; it can be found on the Matomo instance console." customers: index: @@ -3230,6 +3229,7 @@ en_NZ: display_as_placeholder: 'eg. 2 kg' display_name_placeholder: 'eg. Tomatoes' autocomplete: + out_of_stock: "Out of Stock" producer_name: "Producer" unit: "Unit" shared: diff --git a/config/locales/en_PH.yml b/config/locales/en_PH.yml index 154bb93df0..da4c883de1 100644 --- a/config/locales/en_PH.yml +++ b/config/locales/en_PH.yml @@ -367,7 +367,6 @@ en_PH: title: "Matomo Settings" matomo_url: "Matomo URL" matomo_site_id: "Matomo Site ID" - info_html: "Matomo is a Web and Mobile Analytics. You can either host Matomo on-premises or use a cloud-hosted service. See matomo.org for more information." config_instructions_html: "Here you can configure the OFN Matomo integration. The Matomo URL below should point to the Matomo instance where the user tracking information will be sent to; if it is left empty, Matomo user tracking will be disabled. The Site ID field is not mandatory but useful if you are tracking more than one website on a single Matomo instance; it can be found on the Matomo instance console." customers: index: @@ -3203,6 +3202,7 @@ en_PH: display_as: "Display As" display_name: "Display Name" autocomplete: + out_of_stock: "Out of Stock" producer_name: "Producer" unit: "Unit" shared: diff --git a/config/locales/en_US.yml b/config/locales/en_US.yml index e1deb0373b..feb491c764 100644 --- a/config/locales/en_US.yml +++ b/config/locales/en_US.yml @@ -363,7 +363,6 @@ en_US: title: "Matomo Settings" matomo_url: "Matomo URL" matomo_site_id: "Matomo Site ID" - info_html: "Matomo is a Web and Mobile Analytics. You can either host Matomo locally or use a cloud-hosted service. See matomo.org for more information." config_instructions_html: "Here you can configure the OFN Matomo integration. The Matomo URL below should point to the Matomo instance where the user tracking information will be sent to; if it is left empty, Matomo user tracking will be disabled. The Site ID field is not mandatory but useful if you are tracking more than one website on a single Matomo instance; it can be found on the Matomo instance console." customers: index: @@ -3195,6 +3194,7 @@ en_US: display_as: "Display As" display_name: "Display Name" autocomplete: + out_of_stock: "Out of Stock" producer_name: "Producer" unit: "Unit" shared: diff --git a/config/locales/en_ZA.yml b/config/locales/en_ZA.yml index 06cd4ee1c4..8017668827 100644 --- a/config/locales/en_ZA.yml +++ b/config/locales/en_ZA.yml @@ -368,7 +368,6 @@ en_ZA: title: "Matomo Settings" matomo_url: "Matomo URL" matomo_site_id: "Matomo Site ID" - info_html: "Matomo is a Web and Mobile Analytics. You can either host Matomo on-premises or use a cloud-hosted service. See matomo.org for more information." config_instructions_html: "Here you can configure the OFN Matomo integration. The Matomo URL below should point to the Matomo instance where the user tracking information will be sent to; if it is left empty, Matomo user tracking will be disabled. The Site ID field is not mandatory but useful if you are tracking more than one website on a single Matomo instance; it can be found on the Matomo instance console." customers: index: @@ -3097,6 +3096,7 @@ en_ZA: price: "Price" display_as: "Display As" autocomplete: + out_of_stock: "Out of Stock" producer_name: "Producer" unit: "Unit" shared: diff --git a/config/locales/es_CR.yml b/config/locales/es_CR.yml index bd8f7c51e6..8dce3680ee 100644 --- a/config/locales/es_CR.yml +++ b/config/locales/es_CR.yml @@ -368,7 +368,6 @@ es_CR: title: "Configuración de Matomo" matomo_url: "URL de Matomo" matomo_site_id: "ID de sitio de Matomo" - info_html: "Matomo es un analizador web y móvil. Puede alojar Matomo en sus servidores o utilizar un servicio alojado en la nube. Consulte matomo.org para obtener más información." config_instructions_html: "Aquí puede configurar la integración de OFN Matomo. La siguiente URL de Matomo debe apuntar a la instancia de Matomo a la que se enviará la información de seguimiento del usuario; si se deja vacío, el seguimiento del usuario Matomo se desactivará. El campo ID del sitio no es obligatorio, pero es útil si está rastreando más de un sitio web en una sola instancia de Matomo; se puede encontrar en la consola de la instancia de Matomo." customers: index: @@ -3211,6 +3210,7 @@ es_CR: display_as: "Mostrar como" display_name: "Nombre para mostrar" autocomplete: + out_of_stock: "Agotado" producer_name: "Productor" unit: "Unidad" shared: diff --git a/config/locales/fil_PH.yml b/config/locales/fil_PH.yml index 1b4b545419..0c7bf87148 100644 --- a/config/locales/fil_PH.yml +++ b/config/locales/fil_PH.yml @@ -368,7 +368,6 @@ fil_PH: title: "Matomo Settings" matomo_url: "Matomo URL" matomo_site_id: "Matomo Site ID" - info_html: "ang Matomo ay isang Web at Mobile Analytics. Maaari kang mag-host ng Matomo sa mga lugar o gumamit ng mga serbisyong naka-cloud. Tignanmatomo.org para sa karagdagang impormasyon." config_instructions_html: "Dito ay maaaring ayusin ang pagsasama ng OFN Matomo. ang URL ng Matomo sa ibaba ay ituturo ka sa Matomo kung saan ipapadala ang impormasyon ukol sa pagtatrack ng gumagamit; kung iiwanang blanko, ay hindi gagana ang pag-track ng Matomo. ang paglagay ng SITE ID ay hindi sapilitan ngunit maaaring makatulong kung ikaw ay nagta-track na mahigit sa isang website sa isang pagkakataon; ito ay matatagpuan sa Matomo instance console." customers: index: @@ -1909,18 +1908,18 @@ fil_PH: admin_enterprise_relationships_button_create: "gumawa" admin_enterprise_relationships_to: "sa" admin_enterprise_groups: "mga grupo ng enterprise" - admin_enterprise_groups_name: "pangalan" + admin_enterprise_groups_name: "Pangalan" admin_enterprise_groups_owner: "may-ari" admin_enterprise_groups_on_front_page: "sa harapang pahina?" - admin_enterprise_groups_enterprise: "enterprises" + admin_enterprise_groups_enterprise: "Mga Enterprise" admin_enterprise_groups_data_powertip: "ang pangunahing gumagamit na responsable sa grupo na ito" - admin_enterprise_groups_data_powertip_logo: "ito ang logo ng inyong grupo" + admin_enterprise_groups_data_powertip_logo: "ito ang logo para sa grupo" admin_enterprise_groups_data_powertip_promo_image: "ang larawan na ito ay makikita sa taas ng profile ng grupo" admin_enterprise_groups_contact: "Makipag-ugnayan" admin_enterprise_groups_contact_phone_placeholder: "hal. 98 7654 3210" - admin_enterprise_groups_contact_address1_placeholder: "eg. 123 High Street" + admin_enterprise_groups_contact_address1_placeholder: "eg. 123 Kalayaan Street" admin_enterprise_groups_contact_city: "lungsod" - admin_enterprise_groups_contact_city_placeholder: "hal. Northcote" + admin_enterprise_groups_contact_city_placeholder: "hal. Mandaluyong" admin_enterprise_groups_contact_zipcode: "Postcode" admin_enterprise_groups_contact_zipcode_placeholder: "hal. 3070" admin_enterprise_groups_contact_state_id: "Lalawigan" @@ -3217,6 +3216,7 @@ fil_PH: display_as: "Ipakita Bilang" display_name: "Pangalan na nakikita" autocomplete: + out_of_stock: "Walang stock" producer_name: "Producer" unit: "yunit" shared: diff --git a/config/locales/fr_BE.yml b/config/locales/fr_BE.yml index 5405e9484d..60c840f730 100644 --- a/config/locales/fr_BE.yml +++ b/config/locales/fr_BE.yml @@ -367,7 +367,6 @@ fr_BE: title: "Configuration Matomo" matomo_url: "URL de l'instance sur Matomo" matomo_site_id: "ID de l'instance sur Matomo" - info_html: "Matomo est un outil d'analyse de trafic web (ordinateur et téléphone). Vous pouvez installer vous-même Matomo ou utiliser une version hébergée. Voir matomo.org pour plus d'information." config_instructions_html: "Pour utiliser Matomo, vous devez configurer l'intégration avec Open Food France. L'URL de l'instance sur Matomo correspond à l'url du site internet visé par le suivi de la navigation utilisateur. Si le champ est vide, Matomo n'effectuera aucune analyse sur ce site. L'ID de l'instance sur Matomo n'est pas obligatoire, mais nécessaire si vous souhaitez analyser plusieurs sites web sur une seule instance Matomo. Cet ID peut être trouvé sur l'espace administrateur Matomo." customers: index: @@ -3154,6 +3153,7 @@ fr_BE: display_as: "Unité affichéé" display_name: "Nom d'affichage" autocomplete: + out_of_stock: "Pas en stock" producer_name: "Producteur·trice" unit: "Unité" shared: diff --git a/config/locales/fr_CA.yml b/config/locales/fr_CA.yml index fba999a5cd..5f7f23ce5f 100644 --- a/config/locales/fr_CA.yml +++ b/config/locales/fr_CA.yml @@ -363,7 +363,6 @@ fr_CA: title: "Configuration Matomo" matomo_url: "URL de l'instance sur Matomo" matomo_site_id: "ID de l'instance sur Matomo" - info_html: "Matomo est un outil d'analyse de trafic web (ordinateur et téléphone). Vous pouvez installer vous-même Matomo ou utiliser une version hébergée. Voir matomo.org pour plus d'information." config_instructions_html: "Pour utiliser Matomo, vous devez configurer l'intégration avec Open Food France. L'URL de l'instance sur Matomo correspond à l'url du site internet visé par le suivi de la navigation utilisateur. Si le champ est vide, Matomo n'effectuera aucune analyse sur ce site. L'ID de l'instance sur Matomo n'est pas obligatoire, mais nécessaire si vous souhaitez analyser plusieurs sites web sur une seule instance Matomo. Cet ID peut être trouvé sur l'espace administrateur Matomo." customers: index: @@ -3206,6 +3205,7 @@ fr_CA: display_as: "Afficher comme" display_name: "Nom affiché" autocomplete: + out_of_stock: "En rupture de stock" producer_name: "Producteur" unit: "Unité" shared: diff --git a/config/locales/it.yml b/config/locales/it.yml index c24462f697..13a6c49aeb 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -3,11 +3,11 @@ it: activerecord: attributes: enterprise_fee: - fee_type: Tipo di tariffa + fee_type: Tipo Tariffa spree/order: payment_state: Stato Pagamento shipment_state: Stato Spedizione - completed_at: Completo Al + completed_at: Completato Al number: Numero state: Stato email: E-Mail Cliente @@ -43,7 +43,7 @@ it: count_on_hand: using_producer_stock_settings_but_count_on_hand_set: "deve restare vuoto perché si stanno utilizzando le impostazioni di magazzino del produttore" on_demand_but_count_on_hand_set: "deve restare vuoto se su richiesta" - limited_stock_but_no_count_on_hand: "Torna alla lista dei pagamenti" + limited_stock_but_no_count_on_hand: "deve essere specificato a causa di una disponibilità limitata" activemodel: attributes: order_management/reports/enterprise_fee_summary/parameters: @@ -51,10 +51,10 @@ it: end_at: "Fine" distributor_ids: "Distributori" producer_ids: "Produttori" - order_cycle_ids: "Cicli di richieste" - enterprise_fee_ids: "Nome commissione" - shipping_method_ids: "Metodi di spedizione" - payment_method_ids: "Metodi di pagamento" + order_cycle_ids: "Cicli di Richieste" + enterprise_fee_ids: "Nomi Tariffe" + shipping_method_ids: "Metodi di Spedizione" + payment_method_ids: "Metodi di Pagamento" errors: messages: inclusion: "non incluso nella lista" @@ -62,7 +62,7 @@ it: order_management/subscriptions/validator: attributes: subscription_line_items: - at_least_one_product: "^Aggiungi almeno un prodotto" + at_least_one_product: "^Per favore aggiungi almeno un prodotto" not_available: "^%{name} non è disponibile nel programma selezionato" ends_at: after_begins_at: "deve essere dopo l'inizio il" @@ -71,28 +71,28 @@ it: schedule: not_coordinated_by_shop: "non è coordinato da %{shop}" payment_method: - not_available_to_shop: "non è disponibile al %{shop}" - invalid_type: "Il metodo dev'essere Cash o Stripe" - charges_not_allowed: "L'addebito su carta di credito non è consentito da questo consumatore" - no_default_card: "Nessuna carta predefinita è consentita per questo consumatore" + not_available_to_shop: "non è disponibile da %{shop}" + invalid_type: "il metodo deve essere Cash o Stripe" + charges_not_allowed: "L'addebito su carta di credito non è consentito per questo cliente" + no_default_card: "^Nessuna carta predefinita è disponibile per questo cliente" shipping_method: not_available_to_shop: "non è disponibile al %{shop}" devise: confirmations: - send_instructions: "A breve riceverai un'email con le istruzioni utili a confermare il tuo account." - failed_to_send: "C'è stato un errore nell'invio della tua mail di conferma." - resend_confirmation_email: "Re-invia la mail di conferma" - confirmed: "Grazie per aver confermato la tua mail! Ora puoi effettuare il log in." + send_instructions: "A breve riceverai una email con le istruzioni per la conferma del tuo account." + failed_to_send: "C'è stato un errore nell'invio dell'email di conferma." + resend_confirmation_email: "Invia di nuovo l'email di conferma." + confirmed: "Grazie per aver confermato la tua email! Ora puoi effettuare il log in." not_confirmed: "Il tuo indirizzo email non può essere confermato. Forse avevi già completato questo passaggio?" user_confirmations: spree_user: - send_instructions: "A breve riceverai un'email con le istruzioni utili a confermare il tuo account." + send_instructions: "A breve riceverai una email con le istruzioni per la conferma del tuo account." confirmation_sent: "Email di conferma inviata" confirmation_not_sent: "Errore invio emai di conferma" user_registrations: spree_user: signed_up_but_unconfirmed: "Abbiamo inviato un link di conferma al tuo indirizzo email. Per favore apri il link per attivare il tuo account." - unknown_error: "Qualcosa è andato storto durante la creazione del tuo account. Controlla il tuo indirizzo e-mail e riprova" + unknown_error: "Qualcosa è andato storto durante la creazione del tuo account. Controlla il tuo indirizzo email e riprova" failure: invalid: | Email o password non valida. @@ -105,29 +105,29 @@ it: spree_user: updated_not_active: "La tua password è stata resettata, ma la tua email non è ancora stata confermata." updated: "La tua password è stata modificata con successo.\nOra sei collegato." - send_instructions: "A breve riceverai un'email con le istruzioni utili a confermare il tuo account." + send_instructions: "A breve riceverai una email con le istruzioni per la conferma del tuo account." models: order_cycle: cloned_order_cycle_name: "COPIA DI %{order_cycle}" validators: date_time_string_validator: - not_string_error: "Deve essere una linea" - invalid_format_error: "Deve essere valido" + not_string_error: "deve essere una stringa" + invalid_format_error: "deve essere valido" integer_array_validator: - not_array_error: "Deve essere una sequenza" - invalid_element_error: "Deve contenere solo numeri interi" + not_array_error: "deve essere un array" + invalid_element_error: "deve contenere solo numeri interi" enterprise_mailer: confirmation_instructions: - subject: "Per favore conferma l'indirizzo email per %{enterprise}" + subject: "Per favore conferma l'indirizzo email di %{enterprise}" welcome: subject: "%{enterprise} è ora su %{sitename}" email_welcome: "Benvenuto" email_registered: "è ora parte di" - email_userguide_html: "La Guida Utente con supporto dettagliato per l'impostazione del tuo Produttore o Hub è qui: %{link}" - userguide: "Guida di Open Food Network" + email_userguide_html: "La Guida Utente con supporto dettagliato per l'impostazione del tuo Produttore o Distributore è qui: %{link}" + userguide: "Guida Utente di Open Food Network" email_admin_html: "Puoi gestire il tuo profilo facendo il log in al link %{link} o cliccando sull'ingranaggio in alto a destra della homepage, e selezionando Amministrazione" - admin_panel: "Pannello di controllo" - email_community_html: "Abbiamo anche un forum on-line per le discussioni della comunità sul software OFN e le sfide uniche legate all'avere un'impresa del cibo. Sei invitato ad unirti. Ci evolviamo in continuo e il tuo contributo in questo forum plasmerà ciò che sarà. %{link}" + admin_panel: "Panello Amministrativo" + email_community_html: "Abbiamo anche un forum per le discussioni comunitarie legate al software di OFN e le sfide uniche legate all'avere un'impresa alimentare. Ti incoraggiamo a farne parte. Siamo in continua evoluzione e il tuo contributo al forum delineerà quello che succederà in futuro. %{link}" join_community: "Unisciti alla community" invite_manager: subject: "%{enterprise} ti a invitato ad essere un referente" @@ -136,30 +136,30 @@ it: subject: "Resoconto degli ordini per %{producer}" shipment_mailer: shipped_email: - dear_customer: "Caro consumatore," + dear_customer: "Caro Cliente," instructions: "Il tuo ordine è stato spedito" - shipment_summary: "Riepilogo della spedizione" - subject: "Avviso di spedizione" - thanks: "Grazie per utilizzare la piattaforma per il tuo commercio" - track_information: "Informazioni di tracciamento" - track_link: "Link del tracciamento" + shipment_summary: "Riepilogo della Spedizione" + subject: "Notifica di Spedizione" + thanks: "Grazie per il tuo lavoro." + track_information: "Informazioni Tracking: %{tracking}" + track_link: "Tracking Link: %{url}" subscription_mailer: placement_summary_email: subject: Riassunto degli ordini più recenti greeting: "Ciao %{name}," - intro: "Qui sotto un riassunto degli ordini appena inviati per%{shop} ," + intro: "Qui sotto un riassunto degli ordini appena inviati per%{shop}," confirmation_summary_email: subject: Riassunto delle richieste recentemente confermate greeting: "Ciao %{name}," intro: "Qui sotto un riassunto delle richieste che hai appena confermato per %{shop}." summary_overview: - total: Un totale di %{count} abbonamenti sono stati contrassegnati per l'elaborazione automatica.. - success_zero: Di questi, nessuno è stato modificato con successo + total: Un totale di %{count} sottoscrizioni sono stati contrassegnati per l'elaborazione automatica. + success_zero: Di questi, nessuno è stato elaborato con successo. success_some: Di questi, %{count} sono stati elaborati con successo. success_all: Tutti sono stati elaborati con successo. - issues: Qui sotto i dettagli dei problemi incontrati. + issues: Qui sotto i dettagli dei problemi riscontrati. summary_detail: - no_message_provided: 'Nessun messaggio di errore ' + no_message_provided: Nessun messaggio di errore fornito changes: title: Scorte insufficienti (%{count} gentili richieste) explainer: Queste gentili richieste sono state elaborate, ma la quantità richiesta di alcuni prodotti non è disponibile @@ -180,7 +180,7 @@ it: explainer: L'elaborazione automatica di queste gentili richieste non è riuscita per una ragione sconosciuta. Questo non dovrebbe accadere, ti preghiamo di contattarci se visualizzi questo messaggio. home: "OFN" title: Open Food Network - welcome_to: 'Benvenuto a' + welcome_to: 'Benvenuto su' site_meta_description: "Cominciamo da zero. Con i produttori e gli allevatori pronti a raccontare le loro storie, sinceramente e orgogliosamente. Con i distributori pronti a connettere le persone con i prodotti in modo giusto ed equo. Con i compratori che credono che migliori decisioni per l'acquisto settimanale possano..." search_by_name: Cerca per nome o zona... producers_join: I Produttori sono ora invitati ad unirsi ad Open Food Network @@ -188,12 +188,12 @@ it: print_invoice: "Stampa fattura" print_ticket: "Stampa Biglietto" select_ticket_printer: "Seleziona la stampante per i biglietti" - send_invoice: "Manda fattura" - resend_confirmation: "Rimanda conferma" - view_order: "Vedi l'ordine" - edit_order: "Modifica l'ordine" - ship_order: "Invia l'ordine" - cancel_order: "Cancella l'ordine" + send_invoice: "Invia Fattura" + resend_confirmation: "Rimanda Conferma" + view_order: "Vedi Ordine" + edit_order: "Modifica Ordine" + ship_order: "Invia Ordine" + cancel_order: "Cancella Ordine" confirm_send_invoice: "Una fattura per quest'ordine verrà mandata al cliente. Sei sicuro di voler continuare?" confirm_resend_order_confirmation: "Sei sicuro di voler inviare di nuovo l'email di conferma per l'ordine?" must_have_valid_business_number: "%{enterprise_name} deve avere una partita iva valida per poter emettere fattura." @@ -202,11 +202,11 @@ it: say_no: "No" say_yes: "Sì" ongoing: Attivo - bill_address: Indirizzo di fatturazione - ship_address: Indirizzo di consegna - sort_order_cycles_on_shopfront_by: "Ordina cicli d'ordine in vetrina per" + bill_address: Indirizzo Fatturazione + ship_address: Indirizzo Consegna + sort_order_cycles_on_shopfront_by: "Ordina Cicli Ordine in Vetrina per" required_fields: I campi obbligatori sono contrassegnati con un asterisco - select_continue: Seleziona e continua + select_continue: Seleziona e Continua remove: Rimuovi or: o collapse_all: Riduci tutto @@ -219,7 +219,7 @@ it: edit: Modifica clone: Duplica distributors: Distributori - bulk_order_management: Gestione richieste all'ingrosso + bulk_order_management: Gestione Ordini Massivi enterprises: Aziende enterprise_groups: Gruppi reports: Resoconti @@ -227,15 +227,15 @@ it: import: Importazione spree_products: Prodotti Spree all: Tutti - current: Attuali + current: Correnti available: Disponibile dashboard: Pannello di controllo undefined: non definito unused: non in uso admin_and_handling: Admin profile: Profilo - supplier_only: Solo per i fornitori - has_shopfront: Informazioni di tracciamento + supplier_only: Solo Fornitori + has_shopfront: Ha una Vetrina weight: Peso volume: Volume items: Prodotti @@ -250,26 +250,26 @@ it: blocked_cookies_alert: "Il tuo browser sembra stia bloccando i cookies necessari ad usare questa pagina del negozio. Clicca sotto per consentire i cookies e ricaricare la pagina." allow_cookies: "Accetta i cookies" notes: Note - error: Eorrore + error: Errore processing_payment: "Elaborazione pagamento..." - no_pending_payments: "nessun pagamento in sospeso" - invalid_payment_state: "stato del pagamento non valido" + no_pending_payments: "Nessun pagamento in sospeso" + invalid_payment_state: "Stato del pagamento non valido" filter_results: Filtra i risultati quantity: Quantità pick_up: Ritiro copy: Copia change_my_password: "Cambia la mia password" update_password: "Aggiorna password" - password_confirmation: 'Conferma password ' + password_confirmation: 'Conferma Password ' reset_password_token: Token per il reset della password expired: è scaduto, si prega di richiederne uno nuovo - back_to_payments_list: "Torna alla lista dei pagamenti" - maestro_or_solo_cards: "carte Maestro/Solo" - backordered: "ordini arretrati" + back_to_payments_list: "Torna alla Lista dei Pagamenti" + maestro_or_solo_cards: "Carte Maestro/Solo" + backordered: "Ordini arretrati" on hand: "Disponibile" ship: "Spedizione" actions: - create_and_add_another: "Crea e aggiungi un altro" + create_and_add_another: "Crea e Aggiungi un Altro" create: "Crea" cancel: "Annulla" save: "Salva" @@ -279,7 +279,7 @@ it: admin: begins_at: Inizia a begins_on: Inizia da - customer: Consumatore + customer: Cliente date: Data email: Email ends_at: Termina a @@ -368,11 +368,10 @@ it: title: "Impostazioni Matomo" matomo_url: "URL Matomo" matomo_site_id: "Site ID Matomo" - info_html: "Matomo è una Web and Mobile Analytics. È possibile ospitare Matomo in sede o utilizzare un servizio cloud. Vedi matomo.org per maggiori informazionimatomo.org for more information." config_instructions_html: "Qui è possibile configurare l'integrazione OFN Matomo. L'URL di Matomo qui sotto dovrebbe puntare l'istanza di Matomo a cui saranno inviate le informazioni di monitoraggio dell'utente; se lasciato vuoto, il monitoraggio dell'utente da parte di Matomo sarà disabilitato. Il campo Site ID non è obbligatorio ma è utile se si sta tracciando più di un sito web su una singola istanza di Matomo; si può trovare sulla console dell'istanza di Matomo. " customers: index: - new_customer: "Nuovo cliente" + new_customer: "Nuovo Cliente" code: Codice duplicate_code: "Questo codice è già usato." bill_address: "Indirizzo di fatturazione" @@ -390,7 +389,7 @@ it: search_by_email: "Cerca per email/codice..." guest_label: 'Check-out ospite' destroy: - has_associated_orders: 'Cancellazione non riuscita: l''utente ha ordini associati al suo negozio' + has_associated_orders: 'Cancellazione fallita: l''utente ha ordini associati al negozio' contents: edit: title: Contenuto @@ -614,7 +613,7 @@ it: desc_short: Breve descrizione desc_short_placeholder: Raccontaci la tua attività in una o due frasi desc_long: Chi siamo - desc_long_placeholder: Racconta di te ai consumatori. Questa informazione comparirà nel tuo profilo pubblico. + desc_long_placeholder: Racconta di te ai tuoi clienti. Questa informazione comparirà nel tuo profilo pubblico. business_details: abn: ABN abn_placeholder: es. 99 123 456 789 @@ -666,7 +665,7 @@ it: name: Nome name_placeholder: es. Tartufi Biodinamici Alba groups: Gruppi - groups_tip: Seleziona i gruppi o le regioni di cui sei membro. Questo aiuterà i consumatori a trovare la tua azienda. + groups_tip: Seleziona i gruppi o le regioni di cui sei membro. Questo aiuterà i clienti a trovare la tua azienda. groups_placeholder: 'Inizia a digitare per trovare i gruppi ' primary_producer: Produttore primario? primary_producer_tip: Seleziona "Produttore" se sei un produttore primario di cibo @@ -675,9 +674,9 @@ it: none: Nessuno own: Proprio sells: Vende - sells_tip: "Nessuno - L'azienda non vende direttamente ai consumatori.
Proprio - L'azienda vende i propri prodotti ai consumatori.
Proprio e altrui - L'azienda può vendere prodotti propri o di altre aziende.
" + sells_tip: "Nessuno - L'azienda non vende direttamente ai clienti.
Proprio - L'azienda vende i propri prodotti ai clienti.
Proprio e altrui - L'azienda può vendere prodotti propri o di altre aziende.
" visible_in_search: Visibile nella ricerca? - visible_in_search_tip: Determina se questa azienda sarà visibile ai consumatori quando cercano nel sito. + visible_in_search_tip: Determina se questa azienda sarà visibile ai clienti quando cercano nel sito. visible: Visibile not_visible: Non visibile permalink: Permalink (nessuno spazio) @@ -695,7 +694,7 @@ it: no_method_yet: "Non hai ancora un metodo di consegna" shop_preferences: shopfront_requires_login: "Vetrina visibile pubblicamente?" - shopfront_requires_login_tip: "Scegli se i consumatori devono essere registrati per poter vedere la vetrina o se è visibile a tutti" + shopfront_requires_login_tip: "Scegli se i clienti devono essere registrati per poter vedere la vetrina o se è visibile a tutti." shopfront_requires_login_false: "Pubblica" shopfront_requires_login_true: "Visibile solo agli utenti registrati" recommend_require_login: "Consigliamo di richiedere la registrazione quando si dà la possibilità di modificare gli ordini." @@ -704,7 +703,7 @@ it: allow_guest_orders_false: "Richiedi il login per ordinare" allow_guest_orders_true: "Permetti acquisto come ospite" allow_order_changes: "Modifica gentili richieste" - allow_order_changes_tip: "Permetti ai consumatori di modificare le proprie richieste finché il ciclo di richieste è aperto." + allow_order_changes_tip: "Permetti ai clienti di modificare i propri ordini fino a quando il ciclo degli ordini è aperto." allow_order_changes_false: "Le gentili richieste confermate non possono essere modificate / annullate" allow_order_changes_true: "Gli utenti possono modificare / annullare le gentili richieste mentre il ciclo di richieste è aperto" enable_subscriptions: "Sottoscrizioni" @@ -713,7 +712,7 @@ it: enable_subscriptions_true: "Abilitata" shopfront_message: "Messaggio vetrina" shopfront_message_placeholder: > - Un messaggio opzionale per dare in benvenuto ai clienti e spiegare come + Un messaggio opzionale per dare il benvenuto ai clienti e spiegare come acquistare. Il testo inserito qui verrà mostrato nel tab principale della vetrina. shopfront_message_link_tooltip: "Inserisci / modifica link" @@ -741,7 +740,7 @@ it: title: Collegati con Stripe part1: Stripe è un servizio di elaborazione dei pagamenti che permette ai negozi su OFN di accettare pagamenti con carta di credito da parte dei clienti. part2: Per utilizzare questa funzione, è necessario collegare il proprio account Stripe a OFN. Cliccando su 'Accetto' qui sotto sarai reindirizzato al sito web Stripe dove potrai collegare un account Stripe esistente o crearne uno nuovo se non ne hai già uno. - part3: Questo consentirà alla piattaforma di accettare pagamenti con carta di credito da clienti di tua fiducia. Tieni presente che dovrai mantenere il tuo conto Stripe, pagare la tariffa di Strip e gestire gli eventuali rimborsi e i servizi al cliente. + part3: Questo consentirà alla piattaforma di accettare pagamenti con carta di credito da clienti di tua fiducia. Tieni presente che dovrai mantenere il tuo conto Stripe, pagare la commissione di Stripe e gestire gli eventuali rimborsi e i servizi al cliente. i_agree: Sono d'accordo cancel: Annulla tag_rules: @@ -751,7 +750,7 @@ it: add_new_button: ' + Aggiungi una nuova regola predefinita' no_tags_yet: Nessuna etichetta per questa azienda no_rules_yet: Nessuna regola per questa etichetta - for_customers_tagged: 'Per i clienti etichettati' + for_customers_tagged: 'Per i clienti etichettati:' add_new_rule: '+ Aggiungi una nuova regola' add_new_tag: '+ Aggiungi una nuova tag' users: @@ -795,7 +794,7 @@ it: producer_description_text: Aggiungi i tuoi prodotti, permettendo agli hubs di inserire i tuoi prodotti nei loro negozi. producer_shop: Negozio produttore sell_your_produce: Vendi i tuoi prodotti - producer_shop_description_text: Vendi i tuoi prodotti direttamente ai consumatori tramite la tua propria vetrina su OFN + producer_shop_description_text: Vendi i tuoi prodotti direttamente ai clienti tramite la tua personale vetrina su Open Food Network. producer_shop_description_text2: Un Negozio produttore è solo per i tuoi prodotti. Se vuoi vendere prodotti altrui, seleziona "Hub produttore". producer_hub: Hub produttore producer_hub_text: Vendi prodotti tuoi e di altri @@ -891,7 +890,7 @@ it: incoming: "2. Prodotti in entrata" outgoing: "3. Prodotti in uscita" exchange_form: - pickup_time_tip: Quando gli ordini di questa Lista d'ordine saranno pronti per il cliente + pickup_time_tip: Quando gli ordini di questo ciclo saranno pronti per il cliente pickup_instructions_placeholder: "Istruzioni per la consegna" pickup_instructions_tip: Queste istruzioni saranno visibili agli utenti dopo che hanno completato una gentile richiesta pickup_time_placeholder: "Pronto per (es. Data / Ora)" @@ -943,12 +942,12 @@ it: simple_form: ready_for: Pronto per ready_for_placeholder: Data / Ora - customer_instructions: Istruzioni consumatori + customer_instructions: Istruzioni per i consumatori customer_instructions_placeholder: Note per ritiro / consegna products: Prodotti fees: Tariffe destroy_errors: - orders_present: Questo ciclo di richieste è stato selezionato da un consumatore e non può essere cancellato. Per evitare altri accessi, chiudi il ciclo. + orders_present: Questo ciclo di richieste è stato selezionato da un cliente e non può essere cancellato. Per prevenire altri accessi da parte dei clienti, per favore chiudi il ciclo. schedule_present: Questo ciclo di richieste è connesso a un programma e non può essere cancellato. Puoi eliminare il link o cancellare il programma prima. bulk_update: no_data: mmm, qualcosa è andato storto. Nessun dato per ciclo di richieste trovato. @@ -986,7 +985,7 @@ it: supplier_totals: Totali Ciclo di richieste fornitori supplier_totals_by_distributor: Totali Ciclo di richieste fornitori per distributore totals_by_supplier: Totali Ciclo di richieste fornitori per fornitore - customer_totals: Totali ciclo di richieste consumatori + customer_totals: Ciclo Ordini Cliente Totale all_products: Tutti i prodotti inventory: Inventario (in mano) lettuce_share: LettuceShare @@ -996,7 +995,7 @@ it: delivery: Rapporto Consegne tax_types: Tipologia tariffe tax_rates: Aliquote d'imposta - pack_by_customer: Smistato dai consumatori + pack_by_customer: Imballato dal Cliente pack_by_supplier: Smistato dai fornitori orders_and_distributors: name: Gentili richieste e distributori @@ -1010,7 +1009,7 @@ it: orders_and_fulfillment: name: Gentili richieste e resoconti di soddifazione customers: - name: Consumatori + name: Clienti products_and_inventory: name: Prodotti e inventario users_and_enterprises: @@ -1047,7 +1046,7 @@ it: enable_subscriptions_step_2: 2. In "Preferenze Negozio", attiva l'opzione Abbonamenti set_up_shipping_and_payment_methods_html: 'Imposta i metodi %{shipping_link} e %{payment_link} ' set_up_shipping_and_payment_methods_note_html: Nota con gli abbonamenti può
essere utilizzato solo il metodo Contanti - ensure_at_least_one_customer_html: 'Assicurati che esista almeno un %{customer_link} ' + ensure_at_least_one_customer_html: Assicurati che almeno un %{customer_link} esista create_at_least_one_schedule: Crea almeno un programma create_at_least_one_schedule_step_1_html: '1. Vai alla pagina %{order_cycles_link} ' create_at_least_one_schedule_step_2: 2. Crea un Ciclo di Richieste se non l'hai già fatto @@ -1073,9 +1072,9 @@ it: invalid_error: Oops! Per favore compila i campi obbligatori... allowed_payment_method_types_tip: Al momento può essere utilizzato solo il metodo di pagamento Contanti credit_card: Carta di Credito - charges_not_allowed: Non sono consentiti Oneri per questo cliente + charges_not_allowed: Non sono consentiti ricarichi per questo cliente no_default_card: Il cliente non ha carte disponibili da caricare - card_ok: il cliente ha una carta disponibile da caricare + card_ok: Il cliente ha una carta disponibile da caricare begins_at_placeholder: "Seleziona una data" ends_at_placeholder: "Facoltativo" loading_flash: @@ -1100,9 +1099,9 @@ it: cancel_failure_msg: "Ci dispiace, eliminazione non riuscita!" confirm_pause_msg: "Sei sicura/o di voler mettere in pausa questo abbonamento?" pause_failure_msg: "Spiacente, pausa fallita!" - confirm_unpause_msg: "Se hai un ciclo di richieste aperto durante questa registrazione, sarà creato un ordine per l'utente registrato. Vuoi annullare la registrazione?" + confirm_unpause_msg: "Se hai aperto un Ciclo d'Ordini durante questa sottoscrizione pianificata, un ordine per l'utente verrà creato per questo cliente. Sei sicuro di voler attivare questa sottoscrizione?" unpause_failure_msg: "Ci dispiace, ripresa non riuscita!" - confirm_cancel_open_orders_msg: "Alcune di queste richieste sono attualmente attive. I consumatori sono già stati avvisati che le richieste verranno soddisfatte. Vuoi eliminare questa/e richiesta/e o mantenerla?" + confirm_cancel_open_orders_msg: "Alcuni ordini per questa sottoscrizione sono attualmente aperti. I clienti sono già stati avvisati che le richieste verranno soddisfatte. Vuoi eliminare questa/e richiesta/e o mantenerle?" resume_canceled_orders_msg: "Alcuni ordini per questo abbonamento possono essere ripresi in questo momento. Puoi riprenderli dal menu a discesa degli ordini." yes_cancel_them: Cancella l'articolo no_keep_them: Tieni l'articolo @@ -1176,7 +1175,7 @@ it: login: "fai il login" signup: "Registrati" contact: "contatto" - require_customer_login: "Solo utenti approvati hanno accesso a questo negozio" + require_customer_login: "Solo clienti approvati hanno accesso a questo negozio" require_login_html: "Se sei già un cliente approvato, %{login} o %{signup} per procedere." require_login_2_html: "Vuoi iniziare a acquistare qui? Per favore %{contact}%{enterprise}e chiedi di essere aggiunto." require_customer_html: "Se vuoi iniziare a comprare, per favore %{contact} %{enterprise} per chiedere di raggiungerci." @@ -1189,7 +1188,7 @@ it: invoice_column_tax: "IVA" invoice_column_price: "Prezzo" invoice_column_item: "Articolo" - invoice_column_qty: "Qtà." + invoice_column_qty: "Qtà" invoice_column_unit_price_with_taxes: "Prezzo unitario (incl. tasse)" invoice_column_unit_price_without_taxes: "Prezzo unitario (escl. tasse)" invoice_column_price_with_taxes: "Prezzo totale (incl. tasse)" @@ -1405,14 +1404,14 @@ it: order_paid: PAGATO order_not_paid: NON PAGATO order_total: Totale dell'ordine - order_payment: "Pagamento via:" + order_payment: "Pagamento attraverso:" order_billing_address: Indirizzo di fatturazione order_delivery_on: Consegna il order_delivery_address: Indirizzo di consegna order_delivery_time: Tempo di consegna order_special_instructions: "Tue note:" order_pickup_time: Pronto per il ritiro - order_pickup_instructions: Istruzioni per la raccolta + order_pickup_instructions: Istruzioni per la Distribuzione order_produce: Produrre order_total_price: Totale order_includes_tax: (include le tasse) @@ -1438,17 +1437,17 @@ it: email_social: "Connettiti con Noi:" email_contact: "Scrivici:" email_signoff: "Saluti," - email_signature: "Team di %{sitename}" + email_signature: "Il team di %{sitename}" email_confirm_customer_greeting: "Ciao %{name}," email_confirm_customer_intro_html: "Grazie per aver acquistato presso %{distributor}!" email_confirm_customer_number_html: "Conferma dell'Ordine #%{number}" - email_confirm_customer_details_html: "Qui sono i dettagli del tuo ordine da %{distributor}:" + email_confirm_customer_details_html: "Ecco i dettagli del tuo ordine da %{distributor}:" email_confirm_customer_signoff: "Cordiali saluti," email_confirm_shop_greeting: "Ciao %{name}," email_confirm_shop_order_html: "Ben fatto! Hai un nuovo ordine per %{distributor}!" email_confirm_shop_number_html: "Conferma dell'Ordine #%{number}" email_order_summary_item: "Articolo" - email_order_summary_quantity: "Qtà." + email_order_summary_quantity: "Qtà" email_order_summary_sku: "SKU" email_order_summary_price: "Prezzo" email_order_summary_subtotal: "Subtotale:" @@ -1456,8 +1455,8 @@ it: email_order_summary_includes_tax: "(include le tasse)" email_payment_paid: PAGATO email_payment_not_paid: NON PAGATO - email_payment_summary: Riassunto del pagamento - email_payment_method: "Pagamento via:" + email_payment_summary: Riepilogo di pagamento + email_payment_method: "Pagamento attraverso:" email_so_placement_intro_html: "Hai una nuova gentile richiesta di %{distributor}" email_so_placement_details_html: "Ecco i dettagli della gentile richiesta per %{distributor}:" email_so_placement_changes: "Purtroppo alcuni prodotti richiesti non sono disponibili. Le quantità originali richieste sono barrate qui sotto." @@ -1481,13 +1480,13 @@ it: email_shipping_delivery_address: "Indirizzo di consegna" email_shipping_collection_details: Dettagli della raccolta email_shipping_collection_time: "Pronto per il ritiro:" - email_shipping_collection_instructions: "Istruzioni per la raccolta:" + email_shipping_collection_instructions: "Istruzioni per la distribuzione:" email_special_instructions: "Tue note:" email_signup_greeting: Ciao! email_signup_welcome: "Benvenuto a %{sitename}!" email_signup_confirmed_email: "Grazie di aver confermato la tua mail." email_signup_shop_html: "Puoi effettuare il log in qui: %{link}." - email_signup_text: "Grazie per esserti unito alla rete. Se sei un cliente, non vediamo l'ora di introdurti a molti produttori fantastici, distributori di cibo spettacolari e cibo delizioso! Se sei un produttore o un'impresa del cibo, siamo entusiasti di averti come parte della rete." + email_signup_text: "Grazie per esserti unito alla rete. Se sei un cliente, non vediamo l'ora di introdurti a molti produttori fantastici, distributori di cibo spettacolari e cibo delizioso! Se sei un produttore o un'impresa alimentare, siamo entusiasti di averti come parte della rete." email_signup_help_html: "Accettiamo volentieri tutte le tue domane e i tuoi suggerimenti: puoi usare il bottone Invia Feedback sul sito o scriverci a %{email}" invite_email: greeting: "Ciao!" @@ -1980,7 +1979,7 @@ it: scheduled_for: "Programmato per" customers: "Clienti" please_select_hub: "Seleziona un hub" - loading_customers: "Clienti in caricamento" + loading_customers: "Caricamento Clienti" no_customers_found: "Nessun cliente trovato" go: "Vai" hub: "Distributore" @@ -2130,8 +2129,8 @@ it: report_header_tax_on_fees: "Oneri sulle provvigioni (%{currency_symbol})" report_header_total_tax: "Oneri totali (%{currency_symbol})" report_header_enterprise: Azienda - report_header_customer: Consumatore - report_header_customer_code: Codice cliente + report_header_customer: Cliente + report_header_customer_code: Codice Cliente report_header_product: Prodotto report_header_product_properties: Proprietà prodotto report_header_quantity: Quantità @@ -2175,10 +2174,10 @@ it: report_header_order_id: ID richiesta report_header_item_name: Nome articolo report_header_temp_controlled_items: Articolo a Temperatura Controllata - report_header_customer_name: Nome Consumatore - report_header_customer_email: Email consumatore - report_header_customer_phone: Telefono Consumatore - report_header_customer_city: Città consumatore + report_header_customer_name: Nome Cliente + report_header_customer_email: Email Cliente + report_header_customer_phone: Telefono Cliente + report_header_customer_city: Città Cliente report_header_payment_state: Stato Pagamento report_header_payment_type: Tipo Pagamento report_header_item_price: "Articolo (%{currency})" @@ -2278,12 +2277,12 @@ it: adjustments_tax_rate_error: "^Verificate che l'aliquota d'imposta per questo adeguamento sia corretta." active_distributors_not_ready_for_checkout_message_singular: >- L'hub %{distributor_names} figura in un ciclo di richieste attivo, ma non ha - metodi di consegna e di pagamento validi. Finché non li imposti, i consumatori - non potranno acquistare da questo hub. + metodi di consegna e di pagamento validi. Finché non li imposti, i clienti non + potranno acquistare da questo hub. active_distributors_not_ready_for_checkout_message_plural: >- - Gli hub %{distributor_names}figurano in un ciclo di richieste attivo, ma non - hanno metodi di consegna e di pagamento validi. Finché non li imposti, i consumatori - non potranno acquistare da questi hub. + I distributori %{distributor_names} figurano in un ciclo di richieste attivo, + ma non hanno metodi di consegna e di pagamento validi. Finché non li imposti, + i clienti non potranno acquistare da questi distributori. enterprise_fees_update_notice: Le tariffe della tua azienda sono state aggiornate. enterprise_register_package_error: "Per favore seleziona un pacchetto" enterprise_register_error: "Non abbiamo potuto completare la registrazione per %{enterprise}" @@ -2340,9 +2339,9 @@ it: title: Regole Tag overview: Panoramica overview_text: > - Le regole per le tag forniscono un modo per definire quali elementi - sono visibili, o a quali utenti. Gli elementi possono essere: metodi - di consegna, metodi di pagamento, prodotti e cicli di richieste. + Le regole per le tag forniscono un modo per descrivere quali elementi + sono visibili, o a quali utenti. Gli elementi possono essere: Metodi + di Consegna, Metodi di Pagamento, Prodotti e Cicli d'Ordine. by_default_rules: "Regole predefinite" by_default_rules_text: > Le regole predefinite ti permettono di nascondere gli elementi affinché @@ -2585,7 +2584,7 @@ it: edit_profile: "modifica profilo" add_products_to_inventory: "aggiungi prodotti all'inventario" resources: - could_not_delete_customer: 'Non è possibile annullare utente' + could_not_delete_customer: 'Non è possibile cancellare il cliente' product_import: confirmation: | Questo imposterà il livello delle scorte a zero su tutti i prodotti per questa @@ -2594,7 +2593,7 @@ it: create_failure: "Impossibile creare il ciclo dell'ordine" update_success: 'Il tuo ciclo di richieste è stato aggiornato' update_failure: "Impossibile aggiornare il ciclo dell'ordine" - no_distributors: Non ci sono distributori in questo ciclo dell'ordine. Questo ciclo dell'ordine non sarà visibile ai consumatori fino a quando non ne verrà aggiunto uno. Vuoi continuare a salvare questo ciclo dell'ordine? + no_distributors: Non ci sono distributori in questo ciclo d'ordine. Questo ciclo d'ordine non sarà visibile ai clienti fino a quando non ne verrà aggiunto uno. Vuoi continuare a salvare questo ciclo d'ordine? enterprises: producer: "Produttore" non_producer: "Non-produttore" @@ -2720,7 +2719,7 @@ it: fee_type: "Tipo di tariffa" enterprise_name: "Proprietario dell'azienda" fee_name: "Nome della tariffa" - customer_name: "Consumatore" + customer_name: "Cliente" fee_placement: "Posizionamento della tariffa" fee_calculated_on_transfer_through_name: "Calcolo della commissione sul trasferimento tramite" tax_category_name: "Categoria d'imposta" @@ -2730,7 +2729,7 @@ it: fee_type: "Tipo di tariffa" enterprise_name: "Proprietario dell'azienda" fee_name: "Nome della tariffa" - customer_name: "Consumatore" + customer_name: "Cliente" fee_placement: "Posizionamento della tariffa" fee_calculated_on_transfer_through_name: "Calcolo della commissione sul trasferimento tramite" tax_category_name: "Categoria d'imposta" @@ -2739,7 +2738,7 @@ it: order: "Gentile Richiesta" distribution: "Distribuzione" order_details: "Dettagli ordine" - customer_details: "Dettagli cliente" + customer_details: "Dettagli Cliente" adjustments: "Regolazioni" payments: "Pagamenti" payment: "Pagamento" @@ -2788,8 +2787,8 @@ it: cannot_set_shipping_method_without_address: "Impossibile impostare il metodo di spedizione finché non vengono forniti i dettagli del cliente." no_tracking_present: "Nessun dettaglio di tracciamento fornito." order_total: "Ordine totale" - customer_details: "Dettagli cliente" - customer_search: "Ricerca clienti" + customer_details: "Dettagli Cliente" + customer_search: "Ricerca Clienti" choose_a_customer: "Scegli un cliente" account: "Account" billing_address: "Indirizzo di fatturazione" @@ -2807,7 +2806,7 @@ it: use_billing_address: "Utilizzare l'indirizzo di fatturazione" adjustments: "Regolazioni" continue: "Continua" - fill_in_customer_info: "Si prega di compilare le informazioni del cliente" + fill_in_customer_info: "Per favore compila le informazioni del cliente" new_payment: "Nuovo pagamento" capture: "Cattura" void: "vuoto" @@ -2960,7 +2959,7 @@ it: order_cycles: "Cicli di richieste" enterprises: "Aziende" enterprise_relationships: "permessi" - customers: "Consumatori" + customers: "Clienti" groups: "Gruppi" product_properties: index: @@ -3036,7 +3035,7 @@ it: completed_at: "Completo al" number: "Numero" state: "Stato" - email: "Mail consumatore" + email: "E-mail Cliente" invoice: issued_on: "Emesso il" tax_invoice: "FATTURA DELLE TASSE" @@ -3062,7 +3061,7 @@ it: other: "Hai il %{count} di prodotti disponibili" order_cycles: order_cycles: "Cicli di richieste" - order_cycles_tip: "I cicli di richieste determinano dove e quando i tuoi prodotti sono disponibili per i consumatori." + order_cycles_tip: "I cicli di richieste determinano dove e quando i tuoi prodotti sono disponibili per i clienti." you_have_active: zero: "Non hai nessun ciclo di richieste attivo." one: "Hai un ciclo di richieste attivo." @@ -3201,7 +3200,7 @@ it: bulk_coop_supplier_report: 'Totali per fornitore - tabella' bulk_coop_allocation: 'Assegnazione - tabella' bulk_coop_packing_sheets: 'Imballaggio - tabella' - bulk_coop_customer_payments: 'Pagamenti clienti - tabella' + bulk_coop_customer_payments: 'Bulk Co-op - Pagamenti Clienti' users: index: listing_users: "Elenco Utenti" @@ -3246,6 +3245,7 @@ it: display_as_placeholder: 'es. 2 kg' display_name_placeholder: 'es. Pomodori' autocomplete: + out_of_stock: "Esaurito" producer_name: "Produttore" unit: "Unità" shared: diff --git a/config/locales/nb.yml b/config/locales/nb.yml index 073ed2c232..f25465f87e 100644 --- a/config/locales/nb.yml +++ b/config/locales/nb.yml @@ -368,7 +368,6 @@ nb: title: "Matomo Innstillinger" matomo_url: "Matomo URL" matomo_site_id: "Matomo Site ID" - info_html: "Matomo er en web- og mobilanalyse. Du kan enten hoste Matomo selv eller bruke en skytjeneste. Se matomo.org for mer informasjon." config_instructions_html: "Her kan du konfigurere OFN-Matomo integrasjonen. URL til Matomo nedenfor skal peke på Matomo-instansen der brukersporingsinformasjonen skal sendes til; Hvis den er tom, blir Matomo-brukersporing deaktivert. Site-ID feltet er ikke obligatorisk, men nyttig hvis du sporer mer enn ett nettsted på en enkelt Matomo-instans; den kan bli funnet på Matomo-konsollen." customers: index: @@ -3206,6 +3205,7 @@ nb: display_as_placeholder: 'f.eks. 2 kg' display_name_placeholder: 'f.eks. Tomater' autocomplete: + out_of_stock: "Ikke på Lager" producer_name: "Produsent" unit: "Enhet" shared: diff --git a/config/locales/nl_BE.yml b/config/locales/nl_BE.yml index d2aa82ed37..952d7a5579 100644 --- a/config/locales/nl_BE.yml +++ b/config/locales/nl_BE.yml @@ -354,7 +354,6 @@ nl_BE: title: "Matomo instellingen" matomo_url: "Matomo URL" matomo_site_id: "Matomo Site ID" - info_html: "Matomo is een Web en Mobile Analytics. U kunt Matomo on-premises hosten of gebruik maken van een cloud-hosted service. Zie matomo.org voor meer informatie." config_instructions_html: "Hier kunt u de OFN Matomo integratie configureren. De Matomo URL hieronder zou moeten verwijzen naar de Matomo instantie waar de gebruiker tracking informatie naartoe wordt gestuurd; als deze leeg wordt gelaten, wordt Matomo gebruiker tracking uitgeschakeld. Het veld Site ID is niet verplicht, maar handig als je meer dan één website volgt op één Matomo instance; het is te vinden op de Matomo instance console. Vertaald met www.DeepL.com/Translator" customers: index: @@ -3030,6 +3029,7 @@ nl_BE: price: "Prijs" display_as: "Weergeven als" autocomplete: + out_of_stock: "Geen voorraad" producer_name: "Producent" unit: "Unit" shared: diff --git a/config/locales/pt.yml b/config/locales/pt.yml index d7328b6e33..1e8b8f7efe 100644 --- a/config/locales/pt.yml +++ b/config/locales/pt.yml @@ -347,7 +347,6 @@ pt: title: "Configurações Matomo" matomo_url: "URL Matomo" matomo_site_id: "Site ID Matomo" - info_html: "Matomo é uma ferramenta de análise web e mobile. Pode instalar o Matomo no seu servidor ou utilizar um serviço na cloud. Veja matomo.org para mais informações." config_instructions_html: "Aqui pode configurar a integração com Matomo. O URL Matomo em baixo deve apontar para o serviror para onde a informação de tracking de utilizadores será enviada; se deixado vazio, o tracking de utilizadores através do Matomo ficará desactivado. O campo Site ID não é obrigatório mas útil se estive a fazer tracking de mais do que um website numa instância única do Matomo; pode ser encontrado na consola da instância Matomo." customers: index: @@ -2967,6 +2966,7 @@ pt: price: "Preço" display_as: "Mostrar como" autocomplete: + out_of_stock: "Sem Stock" producer_name: "Produtor" unit: "Unidade" shared: diff --git a/config/locales/pt_BR.yml b/config/locales/pt_BR.yml index daab978405..3c2ac7d748 100644 --- a/config/locales/pt_BR.yml +++ b/config/locales/pt_BR.yml @@ -368,7 +368,6 @@ pt_BR: title: "Configurações do Matomo" matomo_url: "Matomo URL" matomo_site_id: "Matomo Site ID" - info_html: "Matomo é uma Web e Mobile Analytics. Você pode hospedar o Matomo localmente ou usar um serviço hospedado na nuvem. Veja matomo.org para mais informações." config_instructions_html: "Aqui você pode configurar a integração do OFN Matomo. O URL do Matomo abaixo deve apontar para a instância do Matomo para onde as informações de rastreamento do usuário serão enviadas; se for deixado em branco, o rastreamento de usuários do Matomo será desativado. O campo ID do site não é obrigatório, mas é útil se você estiver controlando mais de um site em uma única instância do Matomo. ele pode ser encontrado no console da instância Matomo." customers: index: @@ -3230,6 +3229,7 @@ pt_BR: display_as_placeholder: 'ex. 2 kg' display_name_placeholder: 'ex. Tomates' autocomplete: + out_of_stock: "Sem estoque" producer_name: "Produtor" unit: "Unidade" shared: diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 81e7552502..825fab2b41 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -368,7 +368,6 @@ tr: title: "Matomo Ayarları" matomo_url: "Matomo URL'si" matomo_site_id: "Matomo Site Kimliği" - info_html: "Matomo bir Web ve Mobil Analitik programıdır. Matomo'yu şirket içinde kullanabilir veya bulutta saklanan bir hizmet olarak kullanabilirsiniz. Daha fazla bilgi için matomo.org adresini ziyaret edin." config_instructions_html: "Burada OFN Matomo entegrasyonunu yapılandırabilirsiniz. Aşağıdaki Matomo URL'si, kullanıcı izleme bilgilerinin gönderileceği Matomo örneğini göstermelidir; boş bırakılırsa Matomo kullanıcı takibi devre dışı bırakılır. Site Kimliği alanı zorunlu değildir, ancak tek bir Matomo örneğinde birden fazla web sitesini izliyorsanız yararlıdır; Matomo örnek konsolunda bulunabilir." customers: index: @@ -2297,7 +2296,7 @@ tr: order_cycles_no_permission_to_coordinate_error: "Hiçbir işletmenizin sipariş dönemini koordine etme izni yok" order_cycles_no_permission_to_create_error: "Bu işletme tarafından koordine edilen bir sipariş dönemi oluşturma izniniz yok" back_to_orders_list: "Sipariş listesine geri dön" - no_orders_found: "Sipariş bulunamadı" + no_orders_found: "SİPARİŞ BULUNAMADI" order_information: "Sipariş Bilgisi" date_completed: "Tamamlanma Tarihi" amount: "Tutar" @@ -2893,7 +2892,7 @@ tr: default: "varsayılan" calculator: "Hesaplama" zone: "bölge" - display: "Görüntüle" + display: "GÖSTER" environment: "çevre" active: "Aktif" nore: "Daha fazla" @@ -2943,7 +2942,7 @@ tr: admin: tab: dashboard: "KONTROL PANELİ" - orders: "Siparişler" + orders: "SİPARİŞLER" bulk_order_management: "Toplu Sipariş Yönetimi" subscriptions: "Üyelikler" products: "Ürünler" @@ -2982,7 +2981,7 @@ tr: index: new_return_authorization: "Yeni İade Yetkisi" return_authorizations: "İade Yetkileri" - back_to_orders_list: "Siparişler Listesine Geri Dön" + back_to_orders_list: "SİPARİŞLER LİSTESİNE GERİ DÖN" rma_number: "RMA Numarası" status: "Durum" amount: "Miktar" @@ -3011,7 +3010,7 @@ tr: canceled: "İptal edildi" orders: index: - listing_orders: "Siparişler Listeleniyor" + listing_orders: "SİPARİŞLER LİSTELENİYOR" new_order: "Yeni Sipariş" capture: "Tahsilat" ship: "Teslimat" @@ -3023,7 +3022,7 @@ tr: previous: "Önceki" next: "Sonraki" loading: "Yükleniyor" - no_orders_found: "Sipariş Bulunamadı" + no_orders_found: "SİPARİŞ BULUNAMADI" results_found: "%{number} Sonuç bulundu." viewing: "%{start} - %{end} görüntüleniyor." print_invoices: "Faturaları Yazdır" @@ -3073,7 +3072,7 @@ tr: products_distributor: "Dağıtımcı" zone: "bölge" calculator: "Hesaplama" - display: "Görüntüle" + display: "GÖSTER" both: "Ödeme Sayfası ve Panel" back_end: "Sadece panel" no_shipping_methods_found: "Hiçbir teslimat yöntemi bulunamadı" @@ -3097,8 +3096,8 @@ tr: name: "İSİM" products_distributor: "Dağıtımcı" provider: "Sağlayıcı" - environment: "çevre" - display: "Görüntüle" + environment: "Çevre" + display: "GÖSTER" active: "Aktif" both: "Her ikisi de" front_end: "Sadece Ödeme" @@ -3129,8 +3128,8 @@ tr: form: name: "İSİM" description: "Açıklama" - environment: "çevre" - display: "Görüntüle" + environment: "Çevre" + display: "GÖSTER" active: "Aktif" active_yes: "Evet" active_no: "Hayır" @@ -3138,7 +3137,7 @@ tr: front_end: "Sadece Ödeme" back_end: "Sadece panel" tags: "Etiketler" - deactivation_warning: "Bir ödeme yöntemini kaldırmak listenizden silinmesine sebep olabilir. Alternatif olarak, ödeme yöntemini 'Göster' yerine 'Yalnızca " + deactivation_warning: "Bir ödeme yöntemini kaldırmak listenizden silinmesine sebep olabilir. Alternatif olarak, ödeme yöntemi ayarını 'Göster' yerine 'Sadece Panel' olarak değiştirebilirsiniz. " providers: provider: "Sağlayıcı" payments: @@ -3243,6 +3242,7 @@ tr: display_as_placeholder: 'örn. 2 kg' display_name_placeholder: 'örn. Domates' autocomplete: + out_of_stock: "Stok tükendi" producer_name: "Üretici" unit: "Birim" shared: @@ -3360,14 +3360,14 @@ tr: account_settings: Hesap Ayarları show: tabs: - orders: Siparişler + orders: SİPARİŞLER cards: Kredi kartları transactions: İşlemler settings: Hesap ayarları unconfirmed_email: "Bekleyen e-posta onayı: %{unconfirmed_email}. Yeni e-posta onaylandıktan sonra e-posta adresiniz güncellenecektir." orders: - open_orders: Açık Siparişler - past_orders: Geçmiş Siparişler + open_orders: AÇIK SİPARİŞLER + past_orders: GEÇMİŞ SİPARİŞLER transactions: transaction_history: İşlem Geçmişi open_orders: