diff --git a/.env.test b/.env.test
index 4cd76d6f0a..1fa63c9339 100644
--- a/.env.test
+++ b/.env.test
@@ -1,7 +1,8 @@
# ENV vars for the test environment
# Override locally with `.env.test.local`
-# Locale for translation.
+# Locale for translation. Using a locale other than `en` tests the
+# successful fallback to `en`.
LOCALE="en_TST"
OFN_REDIS_JOBS_URL="redis://localhost:6379/2"
@@ -15,6 +16,10 @@ STRIPE_PUBLIC_TEST_API_KEY="bogus_stripe_publishable_key"
SITE_URL="test.host"
+# OIDC Settings for DFC authentication
+# Find secrets in BitWarden.
+# To get a refresh token: log into the OIDC provider, connect your OFN user to it at /admin/oidc_settings, then copy the token from the database:
+# ./bin/rails runner 'puts "OPENID_REFRESH_TOKEN=\"#{OidcAccount.last.refresh_token}\""'
OPENID_APP_ID="test-provider"
OPENID_APP_SECRET="dummy-openid-app-secret-token"
OPENID_REFRESH_TOKEN="dummy-refresh-token"
diff --git a/.github/ISSUE_TEMPLATE/release.md b/.github/ISSUE_TEMPLATE/release.md
index 9e4a0fc526..f652057116 100644
--- a/.github/ISSUE_TEMPLATE/release.md
+++ b/.github/ISSUE_TEMPLATE/release.md
@@ -13,6 +13,7 @@ assignees: ''
- [ ] Include translations: `script/release/update_locales`
- You need the [Transifex Client] installed on your local dev environement to run the script.
- [ ] Increment version number: `git push upstream HEAD:refs/tags/vX.Y.Z`
+ Check for [minor or major breaking changes]
- Major: if server changes are required (eg. provision with ofn-install)
- Minor: larger change that is irreversible (eg. migration deleting data)
- Patch: all others. Shortcut: `script/release/tag`
@@ -56,3 +57,4 @@ The full process is described at https://github.com/openfoodfoundation/openfoodn
[Create issue]: https://github.com/openfoodfoundation/openfoodnetwork/issues/new?assignees=&labels=&projects=&template=release.md&title=Release
[#delivery-circle]: https://openfoodnetwork.slack.com/archives/C01T75H6G0Z
[Transifex Client]: https://developers.transifex.com/docs/cli
+[minor or major breaking changes]: https://github.com/openfoodfoundation/openfoodnetwork/pulls?q=label%3A%22breaking+change%22%2C%22major+breaking+change%22
\ No newline at end of file
diff --git a/.github/release.yml b/.github/release.yml
index 5f9b85166d..218b3d49f3 100644
--- a/.github/release.yml
+++ b/.github/release.yml
@@ -14,6 +14,12 @@ changelog:
- technical changes only
- user facing changes
+ # These will require a minor or major version increment
+ - title: "Significant changes 🚀"
+ labels:
+ - breaking change
+ - major breaking change
+
# Posted in advance for #instance-managers
- title: "User-facing changes 👀"
labels:
diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml
index b1f9326fef..f93c65bf72 100644
--- a/.github/workflows/linters.yml
+++ b/.github/workflows/linters.yml
@@ -24,7 +24,7 @@ jobs:
level: error
filter_mode: nofilter
use_bundler: true
- fail_on_error: true
+ fail_level: any
prettier:
name: runner / prettier
runs-on: ubuntu-latest
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index 28e32673a1..2eac524a65 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -6,39 +6,6 @@
# Note that changes in the inspected code, or installation of new
# versions of RuboCop, may require this file to be generated again.
-# Offense count: 1
-# This cop supports safe autocorrection (--autocorrect).
-Layout/EmptyLines:
- Exclude:
- - 'app/services/products_renderer.rb'
-
-# Offense count: 16
-# Configuration parameters: AllowComments, AllowEmptyLambdas.
-Lint/EmptyBlock:
- Exclude:
- - 'engines/catalog/config/routes.rb'
- - 'spec/components/distributor_title_component_spec.rb'
- - 'spec/components/example_component_spec.rb'
- - 'spec/controllers/admin/subscription_line_items_controller_spec.rb'
- - 'spec/controllers/api/v0/shipments_controller_spec.rb'
- - 'spec/controllers/concerns/extra_fields_spec.rb'
- - 'spec/factories.rb'
- - 'spec/factories/enterprise_factory.rb'
- - 'spec/jobs/order_cycle_opened_job_spec.rb'
- - 'spec/jobs/subscription_placement_job_spec.rb'
- - 'spec/models/product_import/entry_validator_spec.rb'
-
-# Offense count: 4
-# Configuration parameters: AllowComments.
-Lint/EmptyClass:
- Exclude:
- - 'spec/lib/reports/report_loader_spec.rb'
-
-# Offense count: 1
-Lint/FloatComparison:
- Exclude:
- - 'app/models/spree/gateway/pay_pal_express.rb'
-
# Offense count: 24
# Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes, Max.
Metrics/AbcSize:
@@ -507,23 +474,12 @@ RSpecRails/InferredSpecType:
- 'spec/requests/voucher_adjustments_spec.rb'
- 'spec/routing/stripe_spec.rb'
-# Offense count: 21
+# Offense count: 1
# Configuration parameters: IgnoreScopes, Include.
# Include: app/models/**/*.rb
Rails/InverseOf:
Exclude:
- - 'app/models/enterprise.rb'
- - 'app/models/order_cycle.rb'
- - 'app/models/spree/country.rb'
- - 'app/models/spree/inventory_unit.rb'
- - 'app/models/spree/line_item.rb'
- 'app/models/spree/order.rb'
- - 'app/models/spree/payment.rb'
- - 'app/models/spree/price.rb'
- - 'app/models/spree/product.rb'
- - 'app/models/spree/stock_item.rb'
- - 'app/models/spree/variant.rb'
- - 'app/models/subscription_line_item.rb'
# Offense count: 35
# Configuration parameters: Include.
@@ -549,17 +505,6 @@ Rails/LexicallyScopedActionFilter:
- 'app/controllers/spree/admin/zones_controller.rb'
- 'app/controllers/spree/users_controller.rb'
-# Offense count: 7
-# This cop supports unsafe autocorrection (--autocorrect-all).
-# Configuration parameters: EnforcedStyle.
-# SupportedStyles: strict, flexible
-Rails/TimeZone:
- Exclude:
- - 'app/models/spree/gateway/pay_pal_express.rb'
- - 'spec/controllers/spree/credit_cards_controller_spec.rb'
- - 'spec/services/order_cycles/webhook_service_spec.rb'
- - 'spec/services/orders/customer_cancellation_service_spec.rb'
-
# Offense count: 1
# Configuration parameters: TransactionMethods.
Rails/TransactionExitStatement:
@@ -594,13 +539,6 @@ Style/ArrayIntersect:
- 'lib/open_food_network/tag_rule_applicator.rb'
- 'spec/support/matchers/select2_matchers.rb'
-# Offense count: 1
-# This cop supports safe autocorrection (--autocorrect).
-# Configuration parameters: AllowOnConstant, AllowOnSelfClass.
-Style/CaseEquality:
- Exclude:
- - 'spec/models/spree/payment_spec.rb'
-
# Offense count: 23
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: EnforcedStyle.
@@ -630,24 +568,6 @@ Style/ClassAndModuleChildren:
- 'lib/open_food_network/locking.rb'
- 'spec/models/spree/payment_method_spec.rb'
-# Offense count: 1
-# This cop supports unsafe autocorrection (--autocorrect-all).
-# Configuration parameters: EnforcedStyle.
-# SupportedStyles: always, always_true, never
-Style/FrozenStringLiteralComment:
- Exclude:
- - '.simplecov'
-
-# Offense count: 6
-# This cop supports unsafe autocorrection (--autocorrect-all).
-Style/GlobalStdStream:
- Exclude:
- - 'lib/tasks/data.rake'
- - 'lib/tasks/missing_payments.rake'
- - 'lib/tasks/sample_data/logging.rb'
- - 'lib/tasks/subscriptions/debug.rake'
- - 'lib/tasks/subscriptions/test.rake'
-
# Offense count: 10
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: AllowSplatArgument.
@@ -738,34 +658,6 @@ Style/OptionalBooleanParameter:
- 'lib/spree/core/controller_helpers/order.rb'
- 'spec/support/request/web_helper.rb'
-# Offense count: 1
-# This cop supports unsafe autocorrection (--autocorrect-all).
-# Configuration parameters: EnforcedStyle.
-# SupportedStyles: short, verbose
-Style/PreferredHashMethods:
- Exclude:
- - 'app/controllers/api/v0/shipments_controller.rb'
-
-# Offense count: 1
-# This cop supports unsafe autocorrection (--autocorrect-all).
-# Configuration parameters: Methods.
-Style/RedundantArgument:
- Exclude:
- - 'engines/dfc_provider/app/services/authorization_control.rb'
-
-# Offense count: 1
-# This cop supports safe autocorrection (--autocorrect).
-Style/RedundantAssignment:
- Exclude:
- - 'spec/models/database_spec.rb'
-
-# Offense count: 1
-# This cop supports unsafe autocorrection (--autocorrect-all).
-# Configuration parameters: AutoCorrect, AllowComments.
-Style/RedundantInitialize:
- Exclude:
- - 'spec/models/spree/gateway_spec.rb'
-
# Offense count: 19
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: AllowedMethods, AllowedPatterns.
@@ -774,11 +666,3 @@ Style/ReturnNilInPredicateMethodDefinition:
- 'app/models/order_cycle.rb'
- 'app/serializers/api/admin/customer_serializer.rb'
- 'engines/order_management/app/services/order_management/subscriptions/validator.rb'
-
-# Offense count: 3
-# This cop supports unsafe autocorrection (--autocorrect-all).
-Style/SlicingWithRange:
- Exclude:
- - 'app/helpers/spree/admin/navigation_helper.rb'
- - 'app/services/embedded_page_service.rb'
- - 'engines/order_management/app/services/order_management/subscriptions/validator.rb'
diff --git a/.simplecov b/.simplecov
index 8cf02c6b54..66573a094d 100755
--- a/.simplecov
+++ b/.simplecov
@@ -1,4 +1,5 @@
#!/bin/env ruby
+# frozen_string_literal: true
SimpleCov.start 'rails' do
add_filter '/bin/'
diff --git a/Gemfile.lock b/Gemfile.lock
index 5de3aa8e2f..d419f72057 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -525,7 +525,7 @@ GEM
psych (5.1.2)
stringio
public_suffix (5.0.5)
- puma (6.4.2)
+ puma (6.5.0)
nio4r (~> 2.0)
query_count (1.1.1)
activerecord (>= 4.2)
@@ -658,7 +658,7 @@ GEM
rspec-support (~> 3.13)
rspec-retry (0.6.2)
rspec-core (> 3.3)
- rspec-sql (0.0.2)
+ rspec-sql (0.0.3)
activesupport
rspec
rspec-support (3.13.1)
diff --git a/app/controllers/admin/dfc_product_imports_controller.rb b/app/controllers/admin/dfc_product_imports_controller.rb
index a95e24ffdb..4e87b6b2ac 100644
--- a/app/controllers/admin/dfc_product_imports_controller.rb
+++ b/app/controllers/admin/dfc_product_imports_controller.rb
@@ -15,18 +15,15 @@ module Admin
def index
# Fetch DFC catalog JSON for preview
api = DfcRequest.new(spree_current_user)
- @catalog_url = params.require(:catalog_url)
+ @catalog_url = params.require(:catalog_url).strip
@catalog_json = api.call(@catalog_url)
- graph = DfcIo.import(@catalog_json)
- catalog = DfcCatalog.new(graph)
+ catalog = DfcCatalog.from_json(@catalog_json)
# Render table and let user decide which ones to import.
- @items = catalog.products.map do |subject|
- [
- subject,
- @enterprise.supplied_variants.linked_to(subject.semanticId)&.product
- ]
- end
+ @items = list_products(catalog)
+ rescue URI::InvalidURIError
+ flash[:error] = t ".invalid_url"
+ redirect_to admin_product_import_path
rescue Faraday::Error,
Addressable::URI::InvalidURIError,
ActionController::ParameterMissing => e
@@ -45,8 +42,7 @@ module Admin
ids = params.require(:semanticIds)
# Load DFC catalog JSON
- graph = DfcIo.import(params.require(:catalog_json))
- catalog = DfcCatalog.new(graph)
+ catalog = DfcCatalog.from_json(params.require(:catalog_json))
catalog.apply_wholesale_values!
# Import all selected products for given enterprise.
@@ -74,5 +70,15 @@ module Admin
.managed_product_enterprises.is_primary_producer
.find(params.require(:enterprise_id))
end
+
+ # List internal and external products for the preview.
+ def list_products(catalog)
+ catalog.products.map do |subject|
+ [
+ subject,
+ @enterprise.supplied_variants.linked_to(subject.semanticId)&.product
+ ]
+ end
+ end
end
end
diff --git a/app/controllers/api/v0/shipments_controller.rb b/app/controllers/api/v0/shipments_controller.rb
index 1580e1f89f..afaea6a5b2 100644
--- a/app/controllers/api/v0/shipments_controller.rb
+++ b/app/controllers/api/v0/shipments_controller.rb
@@ -117,7 +117,7 @@ module Api
end
def shipment_params
- return {} unless params.has_key? :shipment
+ return {} unless params.key? :shipment
params.require(:shipment).permit(:tracking, :selected_shipping_rate_id)
end
diff --git a/app/helpers/link_helper.rb b/app/helpers/link_helper.rb
index 98a0f43e5c..dde2433446 100644
--- a/app/helpers/link_helper.rb
+++ b/app/helpers/link_helper.rb
@@ -15,4 +15,12 @@ module LinkHelper
prefix + url
end
end
+
+ def new_tab_option
+ if feature?(:open_in_same_tab, spree_current_user)
+ {}
+ else
+ { target: "_blank" }
+ end
+ end
end
diff --git a/app/helpers/spree/admin/navigation_helper.rb b/app/helpers/spree/admin/navigation_helper.rb
index d39ac5b3cc..7b408e5ef5 100644
--- a/app/helpers/spree/admin/navigation_helper.rb
+++ b/app/helpers/spree/admin/navigation_helper.rb
@@ -122,7 +122,7 @@ module Spree
end
else
if html_options['data-update'].nil? && html_options[:remote]
- object_name, action = url.split('/')[-2..-1]
+ object_name, action = url.split('/')[-2..]
html_options['data-update'] = [action, object_name.singularize].join('_')
end
diff --git a/app/jobs/backorder_job.rb b/app/jobs/backorder_job.rb
index a0a3c168e5..64c9cd8e62 100644
--- a/app/jobs/backorder_job.rb
+++ b/app/jobs/backorder_job.rb
@@ -55,12 +55,11 @@ class BackorderJob < ApplicationJob
ordered_quantities[item] = retail_quantity
end
+ return if backorder.lines.empty?
+
place_order(user, order, orderer, backorder)
- items.each do |item|
- variant = item.variant
- variant.on_hand += ordered_quantities[item] if variant.on_demand
- end
+ adjust_stock(items, ordered_quantities)
end
# We look at linked variants which are either stock controlled or
@@ -80,6 +79,9 @@ class BackorderJob < ApplicationJob
needed_quantity = needed_quantity(line_item)
solution = broker.best_offer(variant.semantic_links[0].semantic_id)
+ # If this product was removed from the catalog, we can't order it.
+ return 0 unless solution.offer
+
# The number of wholesale packs we need to order to fulfill the
# needed quantity.
# For example, we order 2 packs of 12 cans if we need 15 cans.
@@ -135,4 +137,14 @@ class BackorderJob < ApplicationJob
order.exchange.semantic_links.create!(semantic_id: placed_order.semanticId)
end
+
+ def adjust_stock(items, ordered_quantities)
+ items.each do |item|
+ variant = item.variant
+ quantity = ordered_quantities[item]
+ next if quantity.zero?
+
+ variant.on_hand += quantity if variant.on_demand
+ end
+ end
end
diff --git a/app/jobs/open_order_cycle_job.rb b/app/jobs/open_order_cycle_job.rb
new file mode 100644
index 0000000000..80c4e1d7b8
--- /dev/null
+++ b/app/jobs/open_order_cycle_job.rb
@@ -0,0 +1,67 @@
+# frozen_string_literal: true
+
+# Run any pre-conditions and mark order cycle as open.
+#
+# Currently, an order cycle is considered open in the shopfront when orders_open_at >= now.
+# But now there are some pre-conditions for opening an order cycle, so we would like to change that.
+# Instead, the presence of opened_at (and absence of processed_at) should indicate it is open.
+class OpenOrderCycleJob < ApplicationJob
+ sidekiq_options retry_for: 10.minutes
+
+ def perform(order_cycle_id)
+ ActiveRecord::Base.transaction do
+ # Fetch order cycle if it's still unopened, and lock DB row until finished
+ order_cycle = OrderCycle.lock.find_by!(id: order_cycle_id, opened_at: nil)
+
+ sync_remote_variants(order_cycle)
+
+ # Mark as opened
+ opened_at = Time.zone.now
+ order_cycle.update_columns(opened_at:)
+
+ # And notify any subscribers
+ OrderCycles::WebhookService.create_webhook_job(order_cycle, 'order_cycle.opened', opened_at)
+ end
+ end
+
+ private
+
+ def sync_remote_variants(order_cycle)
+ # Sync any remote variants for each supplier
+ order_cycle.suppliers.each do |supplier|
+ links = variant_links_for(order_cycle, supplier)
+ next if links.empty?
+
+ # Find authorised user to access remote products
+ dfc_user = supplier.owner # we assume the owner's account is the one used to import from dfc.
+
+ import_variants(links, dfc_user)
+ end
+ end
+
+ # Fetch all remote variants for this supplier in the order cycle
+ def variant_links_for(order_cycle, supplier)
+ variants = order_cycle.exchanges.incoming.from_enterprise(supplier)
+ .joins(:exchange_variants).select('exchange_variants.variant_id')
+ SemanticLink.where(subject_id: variants)
+ end
+
+ def import_variants(links, dfc_user)
+ # Find any catalogues associated with the variants
+ catalogs = links.group_by do |link|
+ FdcUrlBuilder.new(link.semantic_id).catalog_url
+ end
+
+ # Import selected variants from each catalog
+ catalogs.each do |catalog_url, catalog_links|
+ catalog = DfcCatalog.load(dfc_user, catalog_url)
+ catalog.apply_wholesale_values!
+
+ catalog_links.each do |link|
+ catalog_item = catalog.item(link.semantic_id)
+
+ SuppliedProductImporter.update_product(catalog_item, link.subject) if catalog_item
+ end
+ end
+ end
+end
diff --git a/app/jobs/order_cycle_closing_job.rb b/app/jobs/order_cycle_closing_job.rb
index 31ca6fb2a2..3a695e820a 100644
--- a/app/jobs/order_cycle_closing_job.rb
+++ b/app/jobs/order_cycle_closing_job.rb
@@ -25,8 +25,7 @@ class OrderCycleClosingJob < ApplicationJob
def mark_as_processed
OrderCycle.where(id: recently_closed_order_cycles).update_all(
- processed_at: Time.zone.now,
- updated_at: Time.zone.now
+ processed_at: Time.zone.now
)
end
end
diff --git a/app/jobs/order_cycle_opened_job.rb b/app/jobs/order_cycle_opened_job.rb
deleted file mode 100644
index 3b4cee16db..0000000000
--- a/app/jobs/order_cycle_opened_job.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-# frozen_string_literal: true
-
-# Trigger jobs for any order cycles that recently opened
-class OrderCycleOpenedJob < ApplicationJob
- def perform
- ActiveRecord::Base.transaction do
- recently_opened_order_cycles.find_each do |order_cycle|
- OrderCycles::WebhookService.create_webhook_job(order_cycle, 'order_cycle.opened')
- end
- mark_as_opened(recently_opened_order_cycles)
- end
- end
-
- private
-
- def recently_opened_order_cycles
- @recently_opened_order_cycles ||= OrderCycle
- .where(opened_at: nil)
- .where(orders_open_at: 1.hour.ago..Time.zone.now)
- .lock.order(:id)
- end
-
- def mark_as_opened(order_cycles)
- now = Time.zone.now
- order_cycles.update_all(opened_at: now, updated_at: now)
- end
-end
diff --git a/app/jobs/trigger_order_cycles_to_open_job.rb b/app/jobs/trigger_order_cycles_to_open_job.rb
new file mode 100644
index 0000000000..ca1d5c8393
--- /dev/null
+++ b/app/jobs/trigger_order_cycles_to_open_job.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+# Trigger jobs for any order cycles that recently opened
+class TriggerOrderCyclesToOpenJob < ApplicationJob
+ def perform
+ recently_opened_order_cycles.find_each do |order_cycle|
+ OpenOrderCycleJob.perform_later(order_cycle.id)
+ end
+ end
+
+ private
+
+ def recently_opened_order_cycles
+ OrderCycle
+ .where(opened_at: nil)
+ .where(orders_open_at: 1.hour.ago..Time.zone.now)
+ end
+end
diff --git a/app/jobs/webhook_delivery_job.rb b/app/jobs/webhook_delivery_job.rb
index 1196e6a1d6..6004b0d6f1 100644
--- a/app/jobs/webhook_delivery_job.rb
+++ b/app/jobs/webhook_delivery_job.rb
@@ -13,11 +13,11 @@ class WebhookDeliveryJob < ApplicationJob
queue_as :default
- def perform(url, event, payload)
+ def perform(url, event, payload, at: Time.zone.now)
body = {
id: job_id,
- at: Time.zone.now.to_s,
event:,
+ at: at.to_s,
data: payload,
}
diff --git a/app/mailers/payment_mailer.rb b/app/mailers/payment_mailer.rb
index 97db37e053..f9819d252a 100644
--- a/app/mailers/payment_mailer.rb
+++ b/app/mailers/payment_mailer.rb
@@ -16,13 +16,14 @@ class PaymentMailer < ApplicationMailer
end
def authorization_required(payment)
- @payment = payment
- shop_owner = @payment.order.distributor.owner
+ @order = payment.order
+ shop_owner = @order.distributor.owner
subject = I18n.t('spree.payment_mailer.authorization_required.subject',
- order: @payment.order)
+ order: @order)
I18n.with_locale valid_locale(shop_owner) do
mail(to: shop_owner.email,
- subject:)
+ subject:,
+ reply_to: @order.email)
end
end
end
diff --git a/app/mailers/spree/order_mailer.rb b/app/mailers/spree/order_mailer.rb
index e4d886d3e9..b396e79283 100644
--- a/app/mailers/spree/order_mailer.rb
+++ b/app/mailers/spree/order_mailer.rb
@@ -23,7 +23,8 @@ module Spree
I18n.with_locale valid_locale(@order.distributor.owner) do
subject = I18n.t('spree.order_mailer.cancel_email_for_shop.subject')
mail(to: @order.distributor.contact.email,
- subject:)
+ subject:,
+ reply_to: @order.email)
end
end
@@ -43,7 +44,8 @@ module Spree
I18n.with_locale valid_locale(@order.user) do
subject = mail_subject(t('spree.order_mailer.confirm_email.subject'), resend)
mail(to: @order.distributor.contact.email,
- subject:)
+ subject:,
+ reply_to: @order.email)
end
end
diff --git a/app/models/concerns/product_stock.rb b/app/models/concerns/product_stock.rb
deleted file mode 100644
index 9c66e5e066..0000000000
--- a/app/models/concerns/product_stock.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-# frozen_string_literal: true
-
-require 'active_support/concern'
-
-module ProductStock
- extend ActiveSupport::Concern
-
- def on_demand
- raise 'Cannot determine product on_demand value of product with multiple variants' if
- variants.size > 1
-
- variants.first.on_demand
- end
-
- def on_hand
- variants.map(&:on_hand).reduce(:+)
- end
-end
diff --git a/app/models/enterprise.rb b/app/models/enterprise.rb
index 77dcb2c195..b369712fb1 100644
--- a/app/models/enterprise.rb
+++ b/app/models/enterprise.rb
@@ -31,19 +31,25 @@ class Enterprise < ApplicationRecord
has_many :relationships_as_parent, class_name: 'EnterpriseRelationship',
foreign_key: 'parent_id',
+ inverse_of: :parent,
dependent: :destroy
has_many :relationships_as_child, class_name: 'EnterpriseRelationship',
foreign_key: 'child_id',
+ inverse_of: :child,
dependent: :destroy
has_and_belongs_to_many :groups, join_table: 'enterprise_groups_enterprises',
class_name: 'EnterpriseGroup'
- has_many :producer_properties, foreign_key: 'producer_id', dependent: :destroy
+ has_many :producer_properties, foreign_key: 'producer_id',
+ inverse_of: :producer,
+ dependent: :destroy
has_many :properties, through: :producer_properties
has_many :supplied_variants,
- class_name: 'Spree::Variant', foreign_key: 'supplier_id', dependent: :destroy
+ class_name: 'Spree::Variant', foreign_key: 'supplier_id',
+ inverse_of: :supplier, dependent: :destroy
has_many :supplied_products, through: :supplied_variants, source: :product
has_many :distributed_orders, class_name: 'Spree::Order',
foreign_key: 'distributor_id',
+ inverse_of: :distributor,
dependent: :restrict_with_exception
belongs_to :address, class_name: 'Spree::Address'
diff --git a/app/models/order_cycle.rb b/app/models/order_cycle.rb
index 5403982fbc..82d060200b 100644
--- a/app/models/order_cycle.rb
+++ b/app/models/order_cycle.rb
@@ -19,10 +19,12 @@ class OrderCycle < ApplicationRecord
# :incoming_exchanges and :outgoing_exchanges.
has_many :cached_incoming_exchanges, -> {
where incoming: true
- }, class_name: "Exchange", dependent: :destroy
+ }, class_name: "Exchange", inverse_of: :order_cycle,
+ dependent: :destroy
has_many :cached_outgoing_exchanges, -> {
where incoming: false
- }, class_name: "Exchange", dependent: :destroy
+ }, class_name: "Exchange", inverse_of: :order_cycle,
+ dependent: :destroy
has_many :orders, class_name: 'Spree::Order', dependent: :restrict_with_exception
has_many :suppliers, -> { distinct }, source: :sender, through: :cached_incoming_exchanges
diff --git a/app/models/spree/country.rb b/app/models/spree/country.rb
index ca83337caf..45fdae5ce9 100644
--- a/app/models/spree/country.rb
+++ b/app/models/spree/country.rb
@@ -2,7 +2,7 @@
module Spree
class Country < ApplicationRecord
- has_many :states, -> { order('name ASC') }, dependent: :destroy
+ has_many :states, -> { order('name ASC') }, inverse_of: :country, dependent: :destroy
validates :name, :iso_name, presence: true
diff --git a/app/models/spree/gateway/pay_pal_express.rb b/app/models/spree/gateway/pay_pal_express.rb
index d4c669097f..ba2242580b 100644
--- a/app/models/spree/gateway/pay_pal_express.rb
+++ b/app/models/spree/gateway/pay_pal_express.rb
@@ -84,7 +84,7 @@ module Spree
end
def refund(payment, amount)
- refund_type = payment.amount == amount.to_f ? "Full" : "Partial"
+ refund_type = payment.amount == amount.to_d ? "Full" : "Partial"
refund_transaction = provider.build_refund_transaction(
TransactionID: payment.source.transaction_id,
RefundType: refund_type,
@@ -97,7 +97,7 @@ module Spree
refund_transaction_response = provider.refund_transaction(refund_transaction)
if refund_transaction_response.success?
payment.source.update(
- refunded_at: Time.now,
+ refunded_at: Time.zone.now,
refund_transaction_id: refund_transaction_response.RefundTransactionID,
state: "refunded",
refund_type:
diff --git a/app/models/spree/inventory_unit.rb b/app/models/spree/inventory_unit.rb
index 6240883659..0cac45c246 100644
--- a/app/models/spree/inventory_unit.rb
+++ b/app/models/spree/inventory_unit.rb
@@ -4,7 +4,8 @@ module Spree
class InventoryUnit < ApplicationRecord
self.belongs_to_required_by_default = false
- belongs_to :variant, -> { with_deleted }, class_name: "Spree::Variant"
+ belongs_to :variant, -> { with_deleted }, class_name: "Spree::Variant",
+ inverse_of: :inventory_units
belongs_to :order, class_name: "Spree::Order"
belongs_to :shipment, class_name: "Spree::Shipment"
belongs_to :return_authorization, class_name: "Spree::ReturnAuthorization",
diff --git a/app/models/spree/line_item.rb b/app/models/spree/line_item.rb
index 0b1e0e0abb..b2913e331f 100644
--- a/app/models/spree/line_item.rb
+++ b/app/models/spree/line_item.rb
@@ -13,7 +13,7 @@ module Spree
belongs_to :order, class_name: "Spree::Order", inverse_of: :line_items
has_one :order_cycle, through: :order
- belongs_to :variant, -> { with_deleted }, class_name: "Spree::Variant"
+ belongs_to :variant, -> { with_deleted }, class_name: "Spree::Variant", inverse_of: :line_items
has_one :product, through: :variant
has_one :supplier, through: :variant
belongs_to :tax_category, class_name: "Spree::TaxCategory", optional: true
diff --git a/app/models/spree/order.rb b/app/models/spree/order.rb
index 66bfdb3db3..642b57678a 100644
--- a/app/models/spree/order.rb
+++ b/app/models/spree/order.rb
@@ -47,6 +47,7 @@ module Spree
has_many :payments, dependent: :destroy
has_many :return_authorizations, dependent: :destroy, inverse_of: :order
has_many :adjustments, -> { order "#{Spree::Adjustment.table_name}.created_at ASC" },
+ inverse_of: :adjustable,
as: :adjustable,
dependent: :destroy
@@ -65,6 +66,7 @@ module Spree
.order("#{Spree::Adjustment.table_name}.created_at ASC")
},
class_name: 'Spree::Adjustment',
+ inverse_of: :order,
dependent: :destroy
has_many :invoices, dependent: :restrict_with_exception
belongs_to :order_cycle, optional: true
diff --git a/app/models/spree/payment.rb b/app/models/spree/payment.rb
index a2330f6124..03111f42c6 100644
--- a/app/models/spree/payment.rb
+++ b/app/models/spree/payment.rb
@@ -22,6 +22,7 @@ module Spree
has_many :offsets, -> { where("source_type = 'Spree::Payment' AND amount < 0").completed },
class_name: "Spree::Payment", foreign_key: :source_id,
+ inverse_of: :source,
dependent: :restrict_with_exception
has_many :log_entries, as: :source, dependent: :destroy
@@ -115,10 +116,6 @@ module Spree
amount - offsets_total
end
- def can_credit?
- credit_allowed.positive?
- end
-
def build_source
return if source_attributes.nil?
return unless payment_method&.payment_source_class
diff --git a/app/models/spree/price.rb b/app/models/spree/price.rb
index 9fcdac6459..b5de0fe50f 100644
--- a/app/models/spree/price.rb
+++ b/app/models/spree/price.rb
@@ -6,7 +6,7 @@ module Spree
acts_as_paranoid without_default_scope: true
- belongs_to :variant, -> { with_deleted }, class_name: 'Spree::Variant'
+ belongs_to :variant, -> { with_deleted }, class_name: 'Spree::Variant', inverse_of: :prices
validate :check_price
validates :amount, numericality: { greater_than_or_equal_to: 0 }, allow_nil: true
diff --git a/app/models/spree/product.rb b/app/models/spree/product.rb
index 171f6de744..a0b9da8dfe 100755
--- a/app/models/spree/product.rb
+++ b/app/models/spree/product.rb
@@ -18,7 +18,6 @@ require 'open_food_network/property_merge'
#
module Spree
class Product < ApplicationRecord
- include ProductStock
include LogDestroyPerformer
self.belongs_to_required_by_default = false
@@ -41,6 +40,7 @@ module Spree
has_many :product_properties, dependent: :destroy
has_many :properties, through: :product_properties
has_many :variants, -> { order("spree_variants.id ASC") }, class_name: 'Spree::Variant',
+ inverse_of: :product,
dependent: :destroy
has_many :prices, -> { order('spree_variants.id, currency') }, through: :variants
diff --git a/app/models/spree/stock_item.rb b/app/models/spree/stock_item.rb
index db236f7ecf..92e5021551 100644
--- a/app/models/spree/stock_item.rb
+++ b/app/models/spree/stock_item.rb
@@ -6,7 +6,7 @@ module Spree
acts_as_paranoid
- belongs_to :variant, -> { with_deleted }, class_name: 'Spree::Variant'
+ belongs_to :variant, -> { with_deleted }, class_name: 'Spree::Variant', inverse_of: :stock_items
has_many :stock_movements, dependent: :destroy
validates :variant_id, uniqueness: { scope: [:deleted_at] }
diff --git a/app/models/spree/variant.rb b/app/models/spree/variant.rb
index f79340a4f4..7cd8e1a10b 100644
--- a/app/models/spree/variant.rb
+++ b/app/models/spree/variant.rb
@@ -32,7 +32,8 @@ module Spree
belongs_to :product, -> {
with_deleted
- }, touch: true, class_name: 'Spree::Product', optional: false
+ }, touch: true, class_name: 'Spree::Product', optional: false,
+ inverse_of: :variants
belongs_to :tax_category, class_name: 'Spree::TaxCategory'
belongs_to :shipping_category, class_name: 'Spree::ShippingCategory', optional: false
belongs_to :primary_taxon, class_name: 'Spree::Taxon', touch: true, optional: false
@@ -46,12 +47,14 @@ module Spree
has_many :stock_items, dependent: :destroy, inverse_of: :variant
has_many :images, -> { order(:position) }, as: :viewable,
dependent: :destroy,
- class_name: "Spree::Image"
+ class_name: "Spree::Image",
+ inverse_of: :viewable
accepts_nested_attributes_for :images
has_one :default_price,
-> { with_deleted.where(currency: CurrentConfig.get(:currency)) },
class_name: 'Spree::Price',
+ inverse_of: :variant,
dependent: :destroy
has_many :prices,
class_name: 'Spree::Price',
diff --git a/app/models/subscription_line_item.rb b/app/models/subscription_line_item.rb
index 20a98d7ceb..36188b1ea6 100644
--- a/app/models/subscription_line_item.rb
+++ b/app/models/subscription_line_item.rb
@@ -2,7 +2,7 @@
class SubscriptionLineItem < ApplicationRecord
belongs_to :subscription, inverse_of: :subscription_line_items
- belongs_to :variant, -> { with_deleted }, class_name: 'Spree::Variant'
+ belongs_to :variant, -> { with_deleted }, class_name: 'Spree::Variant', inverse_of: false
validates :quantity, presence: true, numericality: { only_integer: true }
diff --git a/app/serializers/api/admin/product_serializer.rb b/app/serializers/api/admin/product_serializer.rb
index 991cb8e8b9..2cedbcf860 100644
--- a/app/serializers/api/admin/product_serializer.rb
+++ b/app/serializers/api/admin/product_serializer.rb
@@ -3,7 +3,7 @@
module Api
module Admin
class ProductSerializer < ActiveModel::Serializer
- attributes :id, :name, :sku, :inherits_properties, :on_hand, :price, :import_date, :image_url,
+ attributes :id, :name, :sku, :inherits_properties, :price, :import_date, :image_url,
:thumb_url, :variants
def variants
diff --git a/app/services/embedded_page_service.rb b/app/services/embedded_page_service.rb
index 52fc4b98c4..6e979c9722 100644
--- a/app/services/embedded_page_service.rb
+++ b/app/services/embedded_page_service.rb
@@ -81,7 +81,7 @@ class EmbeddedPageService
def current_referer_without_www
return unless current_referer
- current_referer.start_with?('www.') ? current_referer[4..-1] : current_referer
+ current_referer.start_with?('www.') ? current_referer[4..] : current_referer
end
def set_embedded_layout
diff --git a/app/services/order_cycles/webhook_service.rb b/app/services/order_cycles/webhook_service.rb
index f12c94ea1b..b45c5c6e41 100644
--- a/app/services/order_cycles/webhook_service.rb
+++ b/app/services/order_cycles/webhook_service.rb
@@ -5,9 +5,9 @@
module OrderCycles
class WebhookService
- def self.create_webhook_job(order_cycle, event)
+ def self.create_webhook_job(order_cycle, event, at)
webhook_payload = order_cycle
- .slice(:id, :name, :orders_open_at, :orders_close_at, :coordinator_id)
+ .slice(:id, :name, :orders_open_at, :opened_at, :orders_close_at, :coordinator_id)
.merge(coordinator_name: order_cycle.coordinator.name)
# Endpoints for coordinator owner
@@ -17,7 +17,7 @@ module OrderCycles
webhook_endpoints |= order_cycle.distributors.map(&:owner).flat_map(&:webhook_endpoints)
webhook_endpoints.each do |endpoint|
- WebhookDeliveryJob.perform_later(endpoint.url, event, webhook_payload)
+ WebhookDeliveryJob.perform_later(endpoint.url, event, webhook_payload, at:)
end
end
end
diff --git a/app/services/orders/workflow_service.rb b/app/services/orders/workflow_service.rb
index 99eec1bd17..f0e84fbe18 100644
--- a/app/services/orders/workflow_service.rb
+++ b/app/services/orders/workflow_service.rb
@@ -92,7 +92,10 @@ module Orders
# Verifies if the in-memory payment state is different from the one stored in the database
# This is be done without reloading the payment so that in-memory data is not changed
def different_from_db_payment_state?(in_memory_payment_state, payment_id)
- in_memory_payment_state != Spree::Payment.find(payment_id).state
+ # Re-load payment from the DB (unless it was cleared by clear_invalid_payments)
+ db_payment = Spree::Payment.find_by(id: payment_id)
+
+ db_payment.present? && in_memory_payment_state != db_payment.state
end
end
end
diff --git a/app/services/products_renderer.rb b/app/services/products_renderer.rb
index 90b9e8e029..12ccbb19f8 100644
--- a/app/services/products_renderer.rb
+++ b/app/services/products_renderer.rb
@@ -2,7 +2,6 @@
require 'open_food_network/scope_product_to_hub'
-
class ProductsRenderer
include Pagy::Backend
diff --git a/app/views/checkout/_tabs.html.haml b/app/views/checkout/_tabs.html.haml
index e4c027c895..8ec938cc9d 100644
--- a/app/views/checkout/_tabs.html.haml
+++ b/app/views/checkout/_tabs.html.haml
@@ -1,4 +1,5 @@
-.flex
+-# Prevent Turbo pre-fetch which changes cart state
+.flex{'data-turbo-prefetch': "false"}
.columns.three.text-center.checkout-tab{"class": [("selected" if checkout_step?(:details)), ("success" unless checkout_step?(:details))]}
%div
%span.checkout-tab-number
diff --git a/app/views/payment_mailer/authorization_required.html.haml b/app/views/payment_mailer/authorization_required.html.haml
index 080a88de06..391ccbc04a 100644
--- a/app/views/payment_mailer/authorization_required.html.haml
+++ b/app/views/payment_mailer/authorization_required.html.haml
@@ -1,2 +1,2 @@
-= t('spree.payment_mailer.authorization_required.message', order_number: @payment.order.number)
-= link_to spree.edit_admin_order_url(@payment.order), spree.edit_admin_order_url(@payment.order)
+= t('spree.payment_mailer.authorization_required.message', order_number: @order.number)
+= link_to spree.edit_admin_order_url(@order), spree.edit_admin_order_url(@order)
diff --git a/app/views/payment_mailer/authorization_required.text.haml b/app/views/payment_mailer/authorization_required.text.haml
index b084ca2755..c494f054e3 100644
--- a/app/views/payment_mailer/authorization_required.text.haml
+++ b/app/views/payment_mailer/authorization_required.text.haml
@@ -1,3 +1,3 @@
-= t('spree.payment_mailer.authorization_required.message', order_number: @payment.order.number)
+= t('spree.payment_mailer.authorization_required.message', order_number: @order.number)
-= link_to spree.edit_admin_order_url(@payment.order), spree.edit_admin_order_url(@payment.order)
+= link_to spree.edit_admin_order_url(@order), spree.edit_admin_order_url(@order)
diff --git a/app/views/shared/menu/_signed_in.html.haml b/app/views/shared/menu/_signed_in.html.haml
index 059580c1a2..8d5fec0fae 100644
--- a/app/views/shared/menu/_signed_in.html.haml
+++ b/app/views/shared/menu/_signed_in.html.haml
@@ -9,7 +9,7 @@
- if admin_user? or enterprise_user?
%li
- %a{href: spree.admin_dashboard_path, target:'_blank'}
+ %a{href: spree.admin_dashboard_path, **new_tab_option}
%i.ofn-i_021-tools
= t 'label_administration'
diff --git a/app/views/shared/menu/_signed_in_offcanvas.html.haml b/app/views/shared/menu/_signed_in_offcanvas.html.haml
index e5ec28bef4..1aa438391b 100644
--- a/app/views/shared/menu/_signed_in_offcanvas.html.haml
+++ b/app/views/shared/menu/_signed_in_offcanvas.html.haml
@@ -1,6 +1,6 @@
- if admin_user? or enterprise_user?
%li
- %a{href: spree.admin_dashboard_path, target:'_blank'}
+ %a{href: spree.admin_dashboard_path, **new_tab_option}
%i.ofn-i_021-tools
= t 'label_admin'
diff --git a/app/views/spree/admin/orders/_note.html.haml b/app/views/spree/admin/orders/_note.html.haml
index fb46907191..7eaf1910c8 100644
--- a/app/views/spree/admin/orders/_note.html.haml
+++ b/app/views/spree/admin/orders/_note.html.haml
@@ -1,9 +1,9 @@
%table.index.edit-note-table
%tr.edit-note.hidden.total
%td{ colspan: "5", data: { controller: "input-char-count" }, style: "position: relative;" }
- %label
+ %label{ for: "note" }
= t(".note_label")
- = text_field_tag :note, @order.note, { maxLength: 280, data: { "input-char-count-target": "input" } }
+ = text_area_tag :note, @order.note, { id: "note", rows: 3, maxLength: 280, data: { "input-char-count-target": "input" }, style: "width: 100%;" }
%span.edit-note-count{ data: { "input-char-count-target": "count" }, style: "position: absolute; right: 7px; top: 7px; font-size: 11px;" }
%td.actions
@@ -15,7 +15,8 @@
- if order.note.present?
%strong
= t(".note_label")
- = order.note
+ %pre{ style: "font-family: inherit;" }
+ = order.note
- else
= t(".no_note_present")
diff --git a/config/environments/test.rb b/config/environments/test.rb
index cfba7d0307..2e14aea9c3 100644
--- a/config/environments/test.rb
+++ b/config/environments/test.rb
@@ -52,7 +52,17 @@ Openfoodnetwork::Application.configure do
# config.active_record.schema_format = :sql
# Print deprecation notices to the stderr
- config.active_support.deprecation = :stderr
+ # config.active_support.deprecation = :stderr
+
+ # Fail tests on deprecated code unless it's a known case to solve.
+ ActiveSupport::Deprecation.behavior = ->(message, callstack, deprecation_horizon, gem_name) do
+ allowed_warnings = [
+ # List strings here to allow matching deprecations.
+ ]
+ unless allowed_warnings.any? { |pattern| message.match(pattern) }
+ ActiveSupport::Deprecation::DEFAULT_BEHAVIORS[:raise].call(message, callstack, deprecation_horizon, gem_name)
+ end
+ end
config.active_job.queue_adapter = :test
end
diff --git a/config/initializers/deprecations.rb b/config/initializers/deprecations.rb
new file mode 100644
index 0000000000..76d05f9acd
--- /dev/null
+++ b/config/initializers/deprecations.rb
@@ -0,0 +1,14 @@
+# frozen_string_literal: true
+
+ActiveSupport::Notifications.subscribe(/deprecation/) do |_name, _start, _finish, _id, payload|
+ e = ActiveSupport::DeprecationException.new(payload[:message])
+ e.set_backtrace(payload[:callstack].map(&:to_s))
+
+ Bugsnag.notify(e) do |report|
+ report.severity = "warning"
+ report.add_tab(
+ :deprecation,
+ payload.except(:callstack),
+ )
+ end
+end
diff --git a/config/locales/ar.yml b/config/locales/ar.yml
index e24245b6b4..65a742b78e 100644
--- a/config/locales/ar.yml
+++ b/config/locales/ar.yml
@@ -640,6 +640,8 @@ ar:
index:
update: تحديث
new: جديد
+ selected:
+ other: "%{count} تم تحديد"
import: استيراد
enterprise_fees:
index:
@@ -2628,20 +2630,9 @@ ar:
spree_admin_enterprises_fees: "رسوم الشركة"
spree_admin_enterprises_none_create_a_new_enterprise: "إنشاء مؤسسة جديدة"
spree_admin_enterprises_none_text: "ليس لديك أي مؤسسات حتى الآن"
- spree_admin_enterprises_tabs_hubs: "مراكز بيع"
spree_admin_enterprises_producers_manage_products: "إدارة المنتجات"
spree_admin_enterprises_create_new_product: "إنشاء منتج جديد"
- spree_admin_single_enterprise_alert_mail_confirmation: "يرجى تأكيد عنوان البريد الإلكتروني ل"
- spree_admin_single_enterprise_alert_mail_sent: "لقد أرسلنا رسالة إلكترونية إلى"
- spree_admin_overview_action_required: "الإجراء مطلوب"
- spree_admin_overview_check_your_inbox: "يرجى التحقق من صندوق الوارد الخاص بك لمزيد من التعليمات. شكر!"
- spree_admin_unit_value: قيمة النوع
- spree_admin_unit_description: وصف الوحدة
- spree_admin_variant_unit: 'وحدة النوع '
- spree_admin_variant_unit_scale: 'النوع مقياس وحدة '
spree_admin_supplier: المورد
- spree_admin_product_category: 'نوع المنتج '
- spree_admin_variant_unit_name: 'النوع اسم الوحدة '
unit_name: "إسم الوحدة"
change_package: "تغيير الحزمة"
spree_admin_single_enterprise_hint: "لمحة: للسماح للأشخاص بالعثور عليك ، قم بتشغيل الرؤية الخاصة بك أسفل"
diff --git a/config/locales/ca.yml b/config/locales/ca.yml
index 7e985e72e0..365b90368b 100644
--- a/config/locales/ca.yml
+++ b/config/locales/ca.yml
@@ -2640,20 +2640,9 @@ ca:
spree_admin_enterprises_fees: "Comissions de l'organització"
spree_admin_enterprises_none_create_a_new_enterprise: "CREA UNA NOVA ORGANITZACIÓ"
spree_admin_enterprises_none_text: "Encara no tens cap organització"
- spree_admin_enterprises_tabs_hubs: "GRUPS"
spree_admin_enterprises_producers_manage_products: "GESTIONA ELS PRODUCTES"
spree_admin_enterprises_create_new_product: "CREA UN NOU PRODUCTE"
- spree_admin_single_enterprise_alert_mail_confirmation: "Si us plau confirma l'adreça de correu electrònic de"
- spree_admin_single_enterprise_alert_mail_sent: "Hem enviat un correu electrònic a"
- spree_admin_overview_action_required: "Acció requerida"
- spree_admin_overview_check_your_inbox: "Si us plat comproveu la vostra safata d'entrada per obtenir més instruccions. Gràcies!"
- spree_admin_unit_value: Valor de la unitat
- spree_admin_unit_description: Descripció de la unitat
- spree_admin_variant_unit: Unitat de variants
- spree_admin_variant_unit_scale: Escala de unitat de variants
spree_admin_supplier: Proveïdora
- spree_admin_product_category: Categoria del producte
- spree_admin_variant_unit_name: Nom de unitat de variants
unit_name: "Nom de la unitat"
change_package: "Canvia el perfil"
spree_admin_single_enterprise_hint: "Suggeriment: per permetre que la gent us trobi, activeu la vostra visibilitat"
diff --git a/config/locales/cy.yml b/config/locales/cy.yml
index 82d1cec9e0..9c80d1d57d 100644
--- a/config/locales/cy.yml
+++ b/config/locales/cy.yml
@@ -699,6 +699,8 @@ cy:
index:
update: Diweddaru
new: Newydd
+ selected:
+ other: "Dewiswyd %{count}"
import: Mewnforio
enterprise_fees:
index:
@@ -2781,20 +2783,9 @@ cy:
spree_admin_enterprises_fees: "Ffioedd Menter"
spree_admin_enterprises_none_create_a_new_enterprise: "CREU MENTER NEWYDD"
spree_admin_enterprises_none_text: "Nid oes gennych unrhyw fentrau eto"
- spree_admin_enterprises_tabs_hubs: "HYBIAU"
spree_admin_enterprises_producers_manage_products: "RHEOLI CYNNYRCH"
spree_admin_enterprises_create_new_product: "CREU CYNNYRCH NEWYDD"
- spree_admin_single_enterprise_alert_mail_confirmation: "Dylid cadarnhau'r cyfeiriad e-bost ar gyfer"
- spree_admin_single_enterprise_alert_mail_sent: "Anfonwyd e-bost at"
- spree_admin_overview_action_required: "Camau Angenrheidiol"
- spree_admin_overview_check_your_inbox: "Gwiriwch eich mewnflwch am gyfarwyddiadau pellach. Diolch!"
- spree_admin_unit_value: Gwerth yr Uned
- spree_admin_unit_description: Disgrifiad o'r Uned
- spree_admin_variant_unit: Uned amrywiolyn
- spree_admin_variant_unit_scale: Graddfa uned amrywiolyn
spree_admin_supplier: Cyflenwr
- spree_admin_product_category: Categori Cynnyrch
- spree_admin_variant_unit_name: Enw uned amrywiolyn
unit_name: "Enw'r uned"
change_package: "Newid Pecyn"
spree_admin_single_enterprise_hint: "Awgrym: Er mwyn caniatáu i bobl ddod o hyd i chi, gofalwch fod pobl yn gallu eich gweld"
diff --git a/config/locales/de_CH.yml b/config/locales/de_CH.yml
index 6cefdae6d3..0367209383 100644
--- a/config/locales/de_CH.yml
+++ b/config/locales/de_CH.yml
@@ -2187,7 +2187,7 @@ de_CH:
sell_hubs_detail: "Richten Sie im Open Food Network ein Profil für Ihr Lebensmittelunternehmen oder Ihre Organisation ein. Sie können Ihr Profil jederzeit erweitern und Produkte von anderen Produzenten und Läden direkt an Kunden verkaufen."
sell_groups_detail: "Richten Sie eine Gruppe von Unternehmen ein, um Ihren Kunden den Zugang zu den Läden Ihrer Gruppe zu erleichtern. Fassen Sie in der Gruppe z. B. Produzenten und andere Lebensmittelunternehmen Ihrer Region, Ihres Bauernmarktes oder Ihrer Organisation zusammen."
sell_user_guide: "Erfahren Sie mehr in unserem Benutzerhandbuch."
- sell_listing_price: "Die Aufnahme ins Open Food Network ist kostenlos. Das Eröffnen und Betreiben eines Online-Shops ist für Unternehmen mit einem monatlichen Umsatz unter 500 € kostenlos. Bei höherem Umsatz erlauben wir uns nach einer 3-monatigen kostenlosen Testphase die Berechnung von 3 % Gebühr, um unsere Kosten zu decken."
+ sell_listing_price: "Die Aufnahme ins Open Food Network ist kostenlos. Das Eröffnen und Betreiben eines Online-Shops ist für Unternehmen mit einem monatlichen Umsatz unter 500 CHF kostenlos. Bei höherem Umsatz erlauben wir uns nach einer 3-monatigen kostenlosen Testphase die Berechnung von 3 % Gebühr, um unsere Kosten zu decken."
sell_embed: "Wir bieten noch weitere Dienste rund um Ihr Unternehmen an."
sell_ask_services: "Fragen Sie uns nach Dienstleistungen rund um das Open Food Network."
shops_title: Regional Einkaufen
@@ -2559,20 +2559,9 @@ de_CH:
spree_admin_enterprises_fees: "Gebühren"
spree_admin_enterprises_none_create_a_new_enterprise: "ERSTELLEN SIE EIN NEUES UNTERNEHMEN"
spree_admin_enterprises_none_text: "Sie haben noch keine Unternehmen."
- spree_admin_enterprises_tabs_hubs: "HUBS"
spree_admin_enterprises_producers_manage_products: "PRODUKTE VERWALTEN"
spree_admin_enterprises_create_new_product: "NEUES PRODUKT"
- spree_admin_single_enterprise_alert_mail_confirmation: "Bitte bestätigen Sie die E-Mail-Adresse für"
- spree_admin_single_enterprise_alert_mail_sent: "Wir haben eine E-Mail gesendet an "
- spree_admin_overview_action_required: "Handlung erforderlich"
- spree_admin_overview_check_your_inbox: "Bitte überprüfen Sie Ihren Posteingang für weitere Anweisungen. Vielen Dank!"
- spree_admin_unit_value: Einheitswert
- spree_admin_unit_description: Einheit Beschreibung
- spree_admin_variant_unit: Varianteneinheit
- spree_admin_variant_unit_scale: Einheit der Produktvariante
spree_admin_supplier: Lieferant
- spree_admin_product_category: Produktkategorie
- spree_admin_variant_unit_name: Einheit der Produktvariante
unit_name: "Einheitenname"
change_package: "Paket ändern"
spree_admin_single_enterprise_hint: "Tipp: Damit andere Nutzer Sie finden können, aktivieren Sie Ihre Sichtbarkeit unter:"
@@ -3586,12 +3575,12 @@ de_CH:
per_kg: "Pro kg"
amount: "Betrag"
currency: "Währung"
- first_item: "Gebühr erster Artikel (€)"
- additional_item: "Gebühr weitere Artikel (€)"
+ first_item: "Gebühr erster Artikel (CHF)"
+ additional_item: "Gebühr weitere Artikel (CHF)"
max_items: "Gebührenfrei bei mehr als x Artikeln"
- minimal_amount: "Mengenrabatt ab (€)"
- normal_amount: "Gebühr unterhalb (€)"
- discount_amount: "Gebühr oberhalb (€)"
+ minimal_amount: "Mengenrabatt ab (CHF)"
+ normal_amount: "Gebühr unterhalb (CHF)"
+ discount_amount: "Gebühr oberhalb (CHF)"
no_images_found: "Keine Bilder gefunden."
new_image: "Neues Bild"
filename: "Dateiname"
diff --git a/config/locales/de_DE.yml b/config/locales/de_DE.yml
index c22ad8cb70..6d15d1f52d 100644
--- a/config/locales/de_DE.yml
+++ b/config/locales/de_DE.yml
@@ -699,6 +699,8 @@ de_DE:
index:
update: Speichern
new: Neu
+ selected:
+ other: "%{count} ausgewählt"
import: Importieren
enterprise_fees:
index:
@@ -2761,20 +2763,9 @@ de_DE:
spree_admin_enterprises_fees: "Gebühren"
spree_admin_enterprises_none_create_a_new_enterprise: "ERSTELLEN SIE EIN NEUES UNTERNEHMEN"
spree_admin_enterprises_none_text: "Sie haben noch keine Unternehmen."
- spree_admin_enterprises_tabs_hubs: "LÄDEN"
spree_admin_enterprises_producers_manage_products: "PRODUKTE VERWALTEN"
spree_admin_enterprises_create_new_product: "NEUES PRODUKT"
- spree_admin_single_enterprise_alert_mail_confirmation: "Bitte bestätigen Sie die E-Mail-Adresse für"
- spree_admin_single_enterprise_alert_mail_sent: "Wir haben eine E-Mail gesendet an "
- spree_admin_overview_action_required: "Handlung erforderlich"
- spree_admin_overview_check_your_inbox: "Bitte überprüfen Sie Ihren Posteingang für weitere Anweisungen. Vielen Dank!"
- spree_admin_unit_value: Menge
- spree_admin_unit_description: Einheit Beschreibung
- spree_admin_variant_unit: Varianteneinheit
- spree_admin_variant_unit_scale: Einheit der Produktvariante
spree_admin_supplier: Lieferant
- spree_admin_product_category: Produktkategorie
- spree_admin_variant_unit_name: Einheit der Produktvariante
unit_name: "Einheitenname"
change_package: "Paket ändern"
spree_admin_single_enterprise_hint: "Tipp: Damit andere Nutzer Sie finden können, aktivieren Sie Ihre Sichtbarkeit unter:"
diff --git a/config/locales/el.yml b/config/locales/el.yml
index 3c33812700..c600850757 100644
--- a/config/locales/el.yml
+++ b/config/locales/el.yml
@@ -721,6 +721,8 @@ el:
index:
update: Ενημέρωση
new: Νέος
+ selected:
+ other: "%{count}επιλέχθηκε"
import: Εισαγωγή
import:
imported_products: "Εισαγόμενα προϊόντα:"
@@ -2830,20 +2832,9 @@ el:
spree_admin_enterprises_fees: "Τέλη επιχείρησης"
spree_admin_enterprises_none_create_a_new_enterprise: "ΔΗΜΙΟΥΡΓΗΣΤΕ ΝΕΑ ΕΠΙΧΕΙΡΗΣΗ"
spree_admin_enterprises_none_text: "Δεν έχετε ακόμη επιχειρήσεις"
- spree_admin_enterprises_tabs_hubs: "ΚΕΝΤΡΑ ΔΙΑΝΟΜΗΣ"
spree_admin_enterprises_producers_manage_products: "Διαχείριση προϊόντων"
spree_admin_enterprises_create_new_product: "ΔΗΜΙΟΥΡΓΗΣΤΕ ΝΕΟ ΠΡΟDΟΝ"
- spree_admin_single_enterprise_alert_mail_confirmation: "Παρακαλώ επιβεβαιώστε τη διεύθυνση email για"
- spree_admin_single_enterprise_alert_mail_sent: "Έχουμε στείλει ένα email στο"
- spree_admin_overview_action_required: "Απαιτείται Ενέργεια"
- spree_admin_overview_check_your_inbox: "Ελέγξτε τα εισερχόμενά σας για περισσότερες οδηγίες. Ευχαριστώ!"
- spree_admin_unit_value: Αξία μονάδας
- spree_admin_unit_description: Περιγραφή μονάδας
- spree_admin_variant_unit: Μονάδα παραλλαγής
- spree_admin_variant_unit_scale: Κλίμακα μονάδας παραλλαγής
spree_admin_supplier: Προμηθευτής
- spree_admin_product_category: Κατηγορία προϊόντων
- spree_admin_variant_unit_name: Όνομα παραλλαγής μονάδας
unit_name: "Όνομα μονάδας"
change_package: "Αλλαγή πακέτου"
spree_admin_single_enterprise_hint: "Υπόδειξη: Για να επιτρέψεις στους άλλους να σε βρουν, ενεργοποίησε την ορατότητά σου πατώντας παρακάτω στό: "
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 1f0aa5c52b..f81b6232ee 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -862,6 +862,7 @@ en:
one: "1 selected"
other: "%{count} selected"
import: Import
+ invalid_url: This catalog URL is not valid.
import:
title: "DFC product catalog import"
imported_products: "Imported products:"
diff --git a/config/locales/en_AU.yml b/config/locales/en_AU.yml
index 07e4dc0d52..c82b3ea2a4 100644
--- a/config/locales/en_AU.yml
+++ b/config/locales/en_AU.yml
@@ -2309,20 +2309,9 @@ en_AU:
spree_admin_enterprises_fees: "Enterprise Fees"
spree_admin_enterprises_none_create_a_new_enterprise: "CREATE A NEW ENTERPRISE"
spree_admin_enterprises_none_text: "You don't have any enterprises yet"
- spree_admin_enterprises_tabs_hubs: "HUBS"
spree_admin_enterprises_producers_manage_products: "MANAGE PRODUCTS"
spree_admin_enterprises_create_new_product: "CREATE A NEW PRODUCT"
- spree_admin_single_enterprise_alert_mail_confirmation: "Please confirm the email address for"
- spree_admin_single_enterprise_alert_mail_sent: "We've sent an email to"
- spree_admin_overview_action_required: "Action Required"
- spree_admin_overview_check_your_inbox: "Please check your inbox for further instructions. Thanks!"
- spree_admin_unit_value: Unit Value
- spree_admin_unit_description: Unit Description
- spree_admin_variant_unit: Variant unit
- spree_admin_variant_unit_scale: Variant unit scale
spree_admin_supplier: Supplier
- spree_admin_product_category: Product Category
- spree_admin_variant_unit_name: Variant unit name
unit_name: "Unit name"
change_package: "Change Package"
spree_admin_single_enterprise_hint: "Hint: To allow people to find you, turn on your visibility under"
diff --git a/config/locales/en_BE.yml b/config/locales/en_BE.yml
index b87621dde0..8a3506bcb3 100644
--- a/config/locales/en_BE.yml
+++ b/config/locales/en_BE.yml
@@ -2176,20 +2176,9 @@ en_BE:
spree_admin_enterprises_fees: "Enterprise Fees"
spree_admin_enterprises_none_create_a_new_enterprise: "CREATE A NEW ENTERPRISE"
spree_admin_enterprises_none_text: "You don't have any enterprises yet"
- spree_admin_enterprises_tabs_hubs: "HUBS"
spree_admin_enterprises_producers_manage_products: "MANAGE PRODUCTS"
spree_admin_enterprises_create_new_product: "CREATE A NEW PRODUCT"
- spree_admin_single_enterprise_alert_mail_confirmation: "Please confirm the email address for"
- spree_admin_single_enterprise_alert_mail_sent: "We've sent an email to"
- spree_admin_overview_action_required: "Action Required"
- spree_admin_overview_check_your_inbox: "Please check your inbox for further instructions. Thanks!"
- spree_admin_unit_value: Unit Value
- spree_admin_unit_description: Unit Description
- spree_admin_variant_unit: Variant unit
- spree_admin_variant_unit_scale: Variant unit scale
spree_admin_supplier: Supplier
- spree_admin_product_category: Product Category
- spree_admin_variant_unit_name: Variant unit name
unit_name: "Unit name"
change_package: "Change Package"
spree_admin_single_enterprise_hint: "Hint: To allow people to find you, turn on your visibility under"
diff --git a/config/locales/en_CA.yml b/config/locales/en_CA.yml
index 8ff74f976a..a9ed396751 100644
--- a/config/locales/en_CA.yml
+++ b/config/locales/en_CA.yml
@@ -787,9 +787,15 @@ en_CA:
title: "DFC product catalog"
catalog_url: "%{count} products to be imported from: %{catalog_url}"
enterprise: "Import to enterprise: %{enterprise_name}"
+ select_all: "Select/deselect all"
update: Update
new: New
+ selected:
+ zero: "0 selected"
+ one: "1 selected"
+ other: "%{count} selected"
import: Import
+ invalid_url: This catalog URL is not valid.
import:
title: "DFC product catalog import"
imported_products: "Imported products:"
@@ -2954,20 +2960,10 @@ en_CA:
spree_admin_enterprises_fees: "Enterprise Fees"
spree_admin_enterprises_none_create_a_new_enterprise: "CREATE A NEW ENTERPRISE"
spree_admin_enterprises_none_text: "You don't have any enterprises yet"
- spree_admin_enterprises_tabs_hubs: "HUBS"
+ spree_admin_enterprises_showing: "Showing %{count} of %{total}"
spree_admin_enterprises_producers_manage_products: "MANAGE PRODUCTS"
spree_admin_enterprises_create_new_product: "CREATE A NEW PRODUCT"
- spree_admin_single_enterprise_alert_mail_confirmation: "Please confirm the email address for"
- spree_admin_single_enterprise_alert_mail_sent: "We've sent an email to"
- spree_admin_overview_action_required: "Action Required"
- spree_admin_overview_check_your_inbox: "Please check your inbox for further instructions. Thanks!"
- spree_admin_unit_value: Unit Value
- spree_admin_unit_description: Unit Description
- spree_admin_variant_unit: Variant unit
- spree_admin_variant_unit_scale: Variant unit scale
spree_admin_supplier: Supplier
- spree_admin_product_category: Product Category
- spree_admin_variant_unit_name: Variant unit name
unit_name: "Unit Name"
change_package: "Change Package"
spree_admin_single_enterprise_hint: "Hint: To allow people to find you, turn on your visibility under"
@@ -4649,6 +4645,7 @@ en_CA:
invoice_attached_text: Please find attached an invoice for your recent order from
user_mailer:
reset_password_instructions:
+ dear_customer: "Dear customer,"
request_sent_text: |
A request to reset your password has been made.
If you did not make this request, simply ignore this email.
diff --git a/config/locales/en_DE.yml b/config/locales/en_DE.yml
index 2995b3b430..f8f43c06e0 100644
--- a/config/locales/en_DE.yml
+++ b/config/locales/en_DE.yml
@@ -2185,20 +2185,9 @@ en_DE:
spree_admin_enterprises_fees: "Enterprise Fees"
spree_admin_enterprises_none_create_a_new_enterprise: "CREATE A NEW ENTERPRISE"
spree_admin_enterprises_none_text: "You don't have any enterprises yet"
- spree_admin_enterprises_tabs_hubs: "HUBS"
spree_admin_enterprises_producers_manage_products: "MANAGE PRODUCTS"
spree_admin_enterprises_create_new_product: "CREATE A NEW PRODUCT"
- spree_admin_single_enterprise_alert_mail_confirmation: "Please confirm the email address for"
- spree_admin_single_enterprise_alert_mail_sent: "We've sent an email to"
- spree_admin_overview_action_required: "Action Required"
- spree_admin_overview_check_your_inbox: "Please check your inbox for further instructions. Thanks!"
- spree_admin_unit_value: Unit Value
- spree_admin_unit_description: Unit Description
- spree_admin_variant_unit: Variant unit
- spree_admin_variant_unit_scale: Variant unit scale
spree_admin_supplier: Supplier
- spree_admin_product_category: Product Category
- spree_admin_variant_unit_name: Variant unit name
unit_name: "Unit name"
change_package: "Change Package"
spree_admin_single_enterprise_hint: "Hint: To allow people to find you, turn on your visibility under"
diff --git a/config/locales/en_FR.yml b/config/locales/en_FR.yml
index 03d3ad2c34..ca7953798d 100644
--- a/config/locales/en_FR.yml
+++ b/config/locales/en_FR.yml
@@ -787,9 +787,15 @@ en_FR:
title: "DFC product catalog"
catalog_url: "%{count} products to be imported from: %{catalog_url}"
enterprise: "Import to enterprise: %{enterprise_name}"
+ select_all: "Select/deselect all"
update: Update
new: New
+ selected:
+ zero: "0 selected"
+ one: "1 selected"
+ other: "%{count} selected"
import: Import
+ invalid_url: This catalog URL is not valid.
import:
title: "DFC product catalog import"
imported_products: "Imported products:"
@@ -2954,20 +2960,10 @@ en_FR:
spree_admin_enterprises_fees: "Enterprise Fees"
spree_admin_enterprises_none_create_a_new_enterprise: "CREATE A NEW ENTERPRISE"
spree_admin_enterprises_none_text: "You don't have any enterprises yet"
- spree_admin_enterprises_tabs_hubs: "HUBS"
+ spree_admin_enterprises_showing: "Showing %{count} of %{total}"
spree_admin_enterprises_producers_manage_products: "MANAGE PRODUCTS"
spree_admin_enterprises_create_new_product: "CREATE A NEW PRODUCT"
- spree_admin_single_enterprise_alert_mail_confirmation: "Please confirm the email address for"
- spree_admin_single_enterprise_alert_mail_sent: "We've sent an email to"
- spree_admin_overview_action_required: "Action Required"
- spree_admin_overview_check_your_inbox: "Please check your inbox for further instructions. Thanks!"
- spree_admin_unit_value: Unit Value
- spree_admin_unit_description: Unit Description
- spree_admin_variant_unit: Variant unit
- spree_admin_variant_unit_scale: Variant unit scale
spree_admin_supplier: Supplier
- spree_admin_product_category: Product Category
- spree_admin_variant_unit_name: Variant unit name
unit_name: "Unit name"
change_package: "Change Package"
spree_admin_single_enterprise_hint: "Hint: To allow people to find you, turn on your visibility under"
@@ -4650,6 +4646,7 @@ en_FR:
invoice_attached_text: Please find attached an invoice for your recent order from
user_mailer:
reset_password_instructions:
+ dear_customer: "Dear customer,"
request_sent_text: |
A request to reset your password has been made.
If you did not make this request, simply ignore this email.
diff --git a/config/locales/en_GB.yml b/config/locales/en_GB.yml
index a78f82ffe9..90644562eb 100644
--- a/config/locales/en_GB.yml
+++ b/config/locales/en_GB.yml
@@ -767,6 +767,8 @@ en_GB:
index:
update: Update
new: New
+ selected:
+ other: "%{count} selected"
import: Import
import:
imported_products: "Imported products:"
@@ -2911,20 +2913,9 @@ en_GB:
spree_admin_enterprises_fees: "Enterprise Fees"
spree_admin_enterprises_none_create_a_new_enterprise: "CREATE A NEW ENTERPRISE"
spree_admin_enterprises_none_text: "You don't have any enterprises yet"
- spree_admin_enterprises_tabs_hubs: "HUBS"
spree_admin_enterprises_producers_manage_products: "MANAGE PRODUCTS"
spree_admin_enterprises_create_new_product: "CREATE A NEW PRODUCT"
- spree_admin_single_enterprise_alert_mail_confirmation: "Please confirm the email address for"
- spree_admin_single_enterprise_alert_mail_sent: "We've sent an email to"
- spree_admin_overview_action_required: "Action Required"
- spree_admin_overview_check_your_inbox: "Please check your inbox for further instructions. Thanks!"
- spree_admin_unit_value: Unit Value
- spree_admin_unit_description: Unit Description
- spree_admin_variant_unit: Variant unit
- spree_admin_variant_unit_scale: Variant unit scale
spree_admin_supplier: Supplier
- spree_admin_product_category: Product Category
- spree_admin_variant_unit_name: Variant unit name
unit_name: "Unit name"
change_package: "Change Package"
spree_admin_single_enterprise_hint: "Hint: To allow people to find you, turn on your visibility under"
diff --git a/config/locales/en_IE.yml b/config/locales/en_IE.yml
index cba8e30d62..70a08c065e 100644
--- a/config/locales/en_IE.yml
+++ b/config/locales/en_IE.yml
@@ -767,6 +767,8 @@ en_IE:
index:
update: Update
new: New
+ selected:
+ other: "%{count} selected"
import: Import
import:
imported_products: "Imported products:"
@@ -2908,20 +2910,9 @@ en_IE:
spree_admin_enterprises_fees: "Enterprise Fees"
spree_admin_enterprises_none_create_a_new_enterprise: "CREATE A NEW ENTERPRISE"
spree_admin_enterprises_none_text: "You don't have any enterprises yet"
- spree_admin_enterprises_tabs_hubs: "HUBS"
spree_admin_enterprises_producers_manage_products: "MANAGE PRODUCTS"
spree_admin_enterprises_create_new_product: "CREATE A NEW PRODUCT"
- spree_admin_single_enterprise_alert_mail_confirmation: "Please confirm the email address for"
- spree_admin_single_enterprise_alert_mail_sent: "We've sent an email to"
- spree_admin_overview_action_required: "Action Required"
- spree_admin_overview_check_your_inbox: "Please check your inbox for further instructions. Thanks!"
- spree_admin_unit_value: Unit Value
- spree_admin_unit_description: Unit Description
- spree_admin_variant_unit: Variant unit
- spree_admin_variant_unit_scale: Variant unit scale
spree_admin_supplier: Supplier
- spree_admin_product_category: Product Category
- spree_admin_variant_unit_name: Variant unit name
unit_name: "Unit name"
change_package: "Change Package"
spree_admin_single_enterprise_hint: "Hint: To allow people to find you, turn on your visibility under"
diff --git a/config/locales/en_IN.yml b/config/locales/en_IN.yml
index 340b95b209..9021653272 100644
--- a/config/locales/en_IN.yml
+++ b/config/locales/en_IN.yml
@@ -2255,20 +2255,9 @@ en_IN:
spree_admin_enterprises_fees: "Enterprise Fees"
spree_admin_enterprises_none_create_a_new_enterprise: "CREATE A NEW ENTERPRISE"
spree_admin_enterprises_none_text: "You don't have any enterprises yet"
- spree_admin_enterprises_tabs_hubs: "HUBS"
spree_admin_enterprises_producers_manage_products: "MANAGE PRODUCTS"
spree_admin_enterprises_create_new_product: "CREATE A NEW PRODUCT"
- spree_admin_single_enterprise_alert_mail_confirmation: "Please confirm the email address for"
- spree_admin_single_enterprise_alert_mail_sent: "We've sent an email to"
- spree_admin_overview_action_required: "Action Required"
- spree_admin_overview_check_your_inbox: "Please check your inbox for further instructions. Thanks!"
- spree_admin_unit_value: Unit Value
- spree_admin_unit_description: Unit Description
- spree_admin_variant_unit: Variant unit
- spree_admin_variant_unit_scale: Variant unit scale
spree_admin_supplier: Supplier
- spree_admin_product_category: Product Category
- spree_admin_variant_unit_name: Variant unit name
unit_name: "Unit name"
change_package: "Change Package"
spree_admin_single_enterprise_hint: "Hint: To allow people to find you, turn on your visibility under"
diff --git a/config/locales/en_NZ.yml b/config/locales/en_NZ.yml
index eb60ec8f99..9d5161fa3e 100644
--- a/config/locales/en_NZ.yml
+++ b/config/locales/en_NZ.yml
@@ -2549,20 +2549,9 @@ en_NZ:
spree_admin_enterprises_fees: "Enterprise Fees"
spree_admin_enterprises_none_create_a_new_enterprise: "CREATE A NEW ENTERPRISE"
spree_admin_enterprises_none_text: "You don't have any enterprises yet"
- spree_admin_enterprises_tabs_hubs: "HUBS"
spree_admin_enterprises_producers_manage_products: "MANAGE PRODUCTS"
spree_admin_enterprises_create_new_product: "CREATE A NEW PRODUCT"
- spree_admin_single_enterprise_alert_mail_confirmation: "Please confirm the email address for"
- spree_admin_single_enterprise_alert_mail_sent: "We've sent an email to"
- spree_admin_overview_action_required: "Action Required"
- spree_admin_overview_check_your_inbox: "Please check your inbox for further instructions. Thanks!"
- spree_admin_unit_value: Unit Value
- spree_admin_unit_description: Unit Description
- spree_admin_variant_unit: Variant unit
- spree_admin_variant_unit_scale: Variant unit scale
spree_admin_supplier: Supplier
- spree_admin_product_category: Product Category
- spree_admin_variant_unit_name: Variant unit name
unit_name: "Unit name"
change_package: "Change Package"
spree_admin_single_enterprise_hint: "Hint: To allow people to find you, turn on your visibility under"
diff --git a/config/locales/en_PH.yml b/config/locales/en_PH.yml
index 6d6e0228cf..657e12846d 100644
--- a/config/locales/en_PH.yml
+++ b/config/locales/en_PH.yml
@@ -2226,20 +2226,9 @@ en_PH:
spree_admin_enterprises_fees: "Enterprise Fees"
spree_admin_enterprises_none_create_a_new_enterprise: "CREATE A NEW ENTERPRISE"
spree_admin_enterprises_none_text: "You don't have any enterprises yet"
- spree_admin_enterprises_tabs_hubs: "HUBS"
spree_admin_enterprises_producers_manage_products: "MANAGE PRODUCTS"
spree_admin_enterprises_create_new_product: "CREATE A NEW PRODUCT"
- spree_admin_single_enterprise_alert_mail_confirmation: "Please confirm the email address for"
- spree_admin_single_enterprise_alert_mail_sent: "We've sent an email to"
- spree_admin_overview_action_required: "Action Required"
- spree_admin_overview_check_your_inbox: "Please check your inbox for further instructions. Thanks!"
- spree_admin_unit_value: Unit Value
- spree_admin_unit_description: Unit Description
- spree_admin_variant_unit: Variant unit
- spree_admin_variant_unit_scale: Variant unit scale
spree_admin_supplier: Supplier
- spree_admin_product_category: Product Category
- spree_admin_variant_unit_name: Variant unit name
unit_name: "Unit name"
change_package: "Change Package"
spree_admin_single_enterprise_hint: "Hint: To allow people to find you, turn on your visibility under"
diff --git a/config/locales/en_US.yml b/config/locales/en_US.yml
index 5425e78281..3d505f29e2 100644
--- a/config/locales/en_US.yml
+++ b/config/locales/en_US.yml
@@ -2504,20 +2504,9 @@ en_US:
spree_admin_enterprises_fees: "Enterprise Fees"
spree_admin_enterprises_none_create_a_new_enterprise: "CREATE A NEW ENTERPRISE"
spree_admin_enterprises_none_text: "You don't have any enterprises yet"
- spree_admin_enterprises_tabs_hubs: "HUBS"
spree_admin_enterprises_producers_manage_products: "MANAGE PRODUCTS"
spree_admin_enterprises_create_new_product: "CREATE A NEW PRODUCT"
- spree_admin_single_enterprise_alert_mail_confirmation: "Please confirm the email address for"
- spree_admin_single_enterprise_alert_mail_sent: "We've sent an email to"
- spree_admin_overview_action_required: "Action Required"
- spree_admin_overview_check_your_inbox: "Please check your inbox for further instructions. Thanks!"
- spree_admin_unit_value: Unit Value
- spree_admin_unit_description: Unit Description
- spree_admin_variant_unit: Variant unit
- spree_admin_variant_unit_scale: Variant unit scale
spree_admin_supplier: Supplier
- spree_admin_product_category: Product Category
- spree_admin_variant_unit_name: Variant unit name
unit_name: "Unit name"
change_package: "Change Package"
spree_admin_single_enterprise_hint: "Hint: To allow people to find you, turn on your visibility under"
diff --git a/config/locales/en_ZA.yml b/config/locales/en_ZA.yml
index cd6705a97d..85a54439f0 100644
--- a/config/locales/en_ZA.yml
+++ b/config/locales/en_ZA.yml
@@ -2235,20 +2235,9 @@ en_ZA:
spree_admin_enterprises_fees: "Enterprise Fees"
spree_admin_enterprises_none_create_a_new_enterprise: "CREATE A NEW ENTERPRISE"
spree_admin_enterprises_none_text: "You don't have any enterprises yet"
- spree_admin_enterprises_tabs_hubs: "HUBS"
spree_admin_enterprises_producers_manage_products: "MANAGE PRODUCTS"
spree_admin_enterprises_create_new_product: "CREATE A NEW PRODUCT"
- spree_admin_single_enterprise_alert_mail_confirmation: "Please confirm the email address for"
- spree_admin_single_enterprise_alert_mail_sent: "We've sent an email to"
- spree_admin_overview_action_required: "Action Required"
- spree_admin_overview_check_your_inbox: "Please check your inbox for further instructions. Thanks!"
- spree_admin_unit_value: Unit Value
- spree_admin_unit_description: Unit Description
- spree_admin_variant_unit: Variant unit
- spree_admin_variant_unit_scale: Variant unit scale
spree_admin_supplier: Supplier
- spree_admin_product_category: Product Category
- spree_admin_variant_unit_name: Variant unit name
unit_name: "Unit name"
change_package: "Change Package"
spree_admin_single_enterprise_hint: "Hint: To allow people to find you, turn on your visibility under"
diff --git a/config/locales/es.yml b/config/locales/es.yml
index b3909f572c..11fddddb0d 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -2812,20 +2812,9 @@ es:
spree_admin_enterprises_fees: "Comisiones de la Organización"
spree_admin_enterprises_none_create_a_new_enterprise: "CREAR NUEVA ORGANIZACIÓN"
spree_admin_enterprises_none_text: "No tienes ninguna organización"
- spree_admin_enterprises_tabs_hubs: "HUBS"
spree_admin_enterprises_producers_manage_products: "GESTIONAR PRODUCTOS"
spree_admin_enterprises_create_new_product: "CREAR UN NUEVO PRODUCTO"
- spree_admin_single_enterprise_alert_mail_confirmation: "Confirma la dirección de email para"
- spree_admin_single_enterprise_alert_mail_sent: "Te hemos enviado un mail a"
- spree_admin_overview_action_required: "Acción Requerida"
- spree_admin_overview_check_your_inbox: "Revisa tu bandeja de entrada para las siguientes instrucciones. Gracias!"
- spree_admin_unit_value: Valor unidad
- spree_admin_unit_description: Descripción de la unidad
- spree_admin_variant_unit: Variante
- spree_admin_variant_unit_scale: Escala de unidad
spree_admin_supplier: Proveedora
- spree_admin_product_category: categoría del producto
- spree_admin_variant_unit_name: Nombre de la variante
unit_name: "Nombre de la unidad"
change_package: "Cambiar Perfil"
spree_admin_single_enterprise_hint: "Sugerencia: Para permitir que la gente te encuentre, activa tu visibilidad"
diff --git a/config/locales/es_CO.yml b/config/locales/es_CO.yml
index 7a6369a936..67b550ea18 100644
--- a/config/locales/es_CO.yml
+++ b/config/locales/es_CO.yml
@@ -2284,20 +2284,9 @@ es_CO:
spree_admin_enterprises_fees: "Comisiones de la Organización"
spree_admin_enterprises_none_create_a_new_enterprise: "CREAR NUEVA ORGANIZACIÓN"
spree_admin_enterprises_none_text: "No tienes ninguna organización"
- spree_admin_enterprises_tabs_hubs: "NODOS"
spree_admin_enterprises_producers_manage_products: "GESTIONAR PRODUCTOS"
spree_admin_enterprises_create_new_product: "CREAR UN NUEVO PRODUCTO"
- spree_admin_single_enterprise_alert_mail_confirmation: "Confirma la dirección de email para"
- spree_admin_single_enterprise_alert_mail_sent: "Te hemos enviado un mail a"
- spree_admin_overview_action_required: "Acción Requerida"
- spree_admin_overview_check_your_inbox: "Revisa tu bandeja de entrada para las siguientes instrucciones. Gracias!"
- spree_admin_unit_value: Valor unidad
- spree_admin_unit_description: Descripción de la unidad
- spree_admin_variant_unit: Variante
- spree_admin_variant_unit_scale: Escala de unidad
spree_admin_supplier: Proveedora
- spree_admin_product_category: categoría del producto
- spree_admin_variant_unit_name: Nombre de la variante
unit_name: "Nombre de la unidad"
change_package: "Cambiar Perfil"
spree_admin_single_enterprise_hint: "Sugerencia: Para permitir que la gente te encuentre, activa tu visibilidad"
diff --git a/config/locales/es_CR.yml b/config/locales/es_CR.yml
index f15a469316..c4c28a3f3c 100644
--- a/config/locales/es_CR.yml
+++ b/config/locales/es_CR.yml
@@ -2563,20 +2563,9 @@ es_CR:
spree_admin_enterprises_fees: "Comisiones de la Organización"
spree_admin_enterprises_none_create_a_new_enterprise: "CREAR NUEVA ORGANIZACIÓN"
spree_admin_enterprises_none_text: "No tienes ninguna organización"
- spree_admin_enterprises_tabs_hubs: "HUBS"
spree_admin_enterprises_producers_manage_products: "GESTIONAR PRODUCTOS"
spree_admin_enterprises_create_new_product: "CREAR UN NUEVO PRODUCTO"
- spree_admin_single_enterprise_alert_mail_confirmation: "Confirma la dirección de email para"
- spree_admin_single_enterprise_alert_mail_sent: "Te hemos enviado un mail a"
- spree_admin_overview_action_required: "Acción Requerida"
- spree_admin_overview_check_your_inbox: "Revisa tu bandeja de entrada para las siguientes instrucciones. Gracias!"
- spree_admin_unit_value: Valor unidad
- spree_admin_unit_description: Descripción de la unidad
- spree_admin_variant_unit: Variante
- spree_admin_variant_unit_scale: Escala de unidad
spree_admin_supplier: Proveedora
- spree_admin_product_category: categoría del producto
- spree_admin_variant_unit_name: Nombre de la variante
unit_name: "Nombre de la unidad"
change_package: "Cambiar Perfil"
spree_admin_single_enterprise_hint: "Sugerencia: Para permitir que la gente te encuentre, activa tu visibilidad"
diff --git a/config/locales/es_US.yml b/config/locales/es_US.yml
index 599a478ecb..c552c55720 100644
--- a/config/locales/es_US.yml
+++ b/config/locales/es_US.yml
@@ -2451,20 +2451,9 @@ es_US:
spree_admin_enterprises_fees: "Comisiones de la Organización"
spree_admin_enterprises_none_create_a_new_enterprise: "CREAR NUEVA ORGANIZACIÓN"
spree_admin_enterprises_none_text: "No tienes ninguna organización"
- spree_admin_enterprises_tabs_hubs: "HUBS"
spree_admin_enterprises_producers_manage_products: "GESTIONAR PRODUCTOS"
spree_admin_enterprises_create_new_product: "CREAR UN NUEVO PRODUCTO"
- spree_admin_single_enterprise_alert_mail_confirmation: "Confirma la dirección de email para"
- spree_admin_single_enterprise_alert_mail_sent: "Te hemos enviado un mail a"
- spree_admin_overview_action_required: "Acción Requerida"
- spree_admin_overview_check_your_inbox: "Revisa tu bandeja de entrada para las siguientes instrucciones. Gracias!"
- spree_admin_unit_value: Valor unidad
- spree_admin_unit_description: Descripción de la unidad
- spree_admin_variant_unit: Variante
- spree_admin_variant_unit_scale: Escala de unidad
spree_admin_supplier: Proveedora
- spree_admin_product_category: categoría del producto
- spree_admin_variant_unit_name: Nombre de la variante
unit_name: "Nombre de la unidad"
change_package: "Cambiar Perfil"
spree_admin_single_enterprise_hint: "Sugerencia: Para permitir que la gente te encuentre, activa tu visibilidad"
diff --git a/config/locales/eu.yml b/config/locales/eu.yml
new file mode 100644
index 0000000000..f710978a0a
--- /dev/null
+++ b/config/locales/eu.yml
@@ -0,0 +1,4458 @@
+eu:
+ language_name: "Euskara"
+ time:
+ formats:
+ long: "%Yko %Bren %d, %-H:%M %p"
+ activerecord:
+ models:
+ spree/product: Produktua
+ spree/shipping_method: Bidaltzeko metodoa
+ attributes:
+ spree/image:
+ attachment: Erantsia
+ spree/order/ship_address:
+ address1: "Bidaltzeko helbidea (kalea eta zenbakia)"
+ address2: "2. linea bidaltzeko helbidea"
+ city: "Hiria bidaltzeko helbidea"
+ country: "Herrialdea bidaltzeko helbidea"
+ phone: "Telefono-zenbakia"
+ firstname: "Izena"
+ lastname: "Abizena"
+ zipcode: "Posta-kodea bidaltzeko helbidea"
+ spree/order/bill_address:
+ address1: "Fakturazio-helbidea (kalea + zk.)"
+ zipcode: "Fakturazio-helbidea, posta-kodea"
+ city: "Hiria fakturatzeko helbidea"
+ country: "Herrialdea fakturatzeko zuzendaritza"
+ firstname: "Fakturazio-helbidea izena"
+ lastname: "Fakturazio-helbidea abizenak"
+ phone: Kontsumitzailearen telefonoa
+ spree/user:
+ password: "Pasahitza"
+ password_confirmation: "pasahitza berrestea"
+ reset_password_token: Pasahitza berrezartzeko tokena
+ enterprise_fee:
+ fee_type: Batzorde mota
+ spree/order:
+ payment_state: Ordainketaren egoera
+ shipment_state: Bidalketa-probintzia
+ completed_at: 'Osatutakoa:'
+ number: Zenbakia
+ state: Egoera
+ email: Kontsumitzailearen e-maila
+ spree/payment:
+ amount: Kopurua
+ state: Egoera
+ source: Iturria
+ spree/product:
+ name: "produktuaren izena"
+ price: "Prezioa"
+ primary_taxon_id: "produktuaren kategoria"
+ shipping_category_id: "Bidalketa-kategoria"
+ spree/variant:
+ primary_taxon: "produktuaren kategoria"
+ shipping_category_id: "Bidalketa-kategoria"
+ supplier: "Hornitzailea"
+ variant_unit: "Batasunaren balioa"
+ variant_unit_name: "Aldaeraren unitatearen izena"
+ unit_value: "Batasunaren balioa"
+ spree/credit_card:
+ base: "Kreditu-txartela"
+ number: "Zenbakia"
+ month: "Hilabetea"
+ verification_value: "Egiaztapen-balioa"
+ year: "Urtea"
+ order_cycle:
+ orders_close_at: Itxiera-data
+ variant_override:
+ count_on_hand: "Eskuragarri"
+ spree/payment_method/calculator:
+ preferred_flat_percent: "Kalkulagailua Ehuneko finkoa:"
+ preferred_amount: "Zenbatekoa kalkulatzeko makina:"
+ preferred_first_item: "Kalkulagailua Lehen elementua:"
+ preferred_additional_item: "Artikulu gehigarriaren kostua:"
+ preferred_max_items: "Max Items kalkulagailua:"
+ preferred_minimal_amount: "Kalkulagailua Gutxieneko zenbatekoa:"
+ preferred_normal_amount: "Kalkulagailua Kantitate normala:"
+ preferred_discount_amount: "Kalkulagailua Deskontuaren zenbatekoa:"
+ preferred_unit_from_list: "Zerrendako unitatearen kalkulagailua:"
+ preferred_per_unit: "Unitateko kalkulagailua:"
+ enterprise:
+ white_label_logo_link: "Erakusleihoan erabiliko zen logoarentzako esteka"
+ errors:
+ models:
+ enterprise_fee:
+ inherit_tax_requires_per_item_calculator: "Kategoria fiskala heredatzeko, kalkulagailu bat behar da artikulu bakoitzeko."
+ spree/user:
+ attributes:
+ email:
+ taken: "Badago helbide elektroniko hau duen kontu bat. Saioa hasi edo pasahitza berrezarri."
+ reset_password_token:
+ invalid: baliogabea da
+ spree/order:
+ no_card: Ez dago baimendutako kreditu-txartelik kargatzeko
+ spree/credit_card:
+ attributes:
+ base:
+ card_expired: "amaitu da"
+ order_cycle:
+ attributes:
+ orders_close_at:
+ after_orders_open_at: Irekiera-dataren ondoren izan behar du
+ variant_override:
+ count_on_hand:
+ using_producer_stock_settings_but_count_on_hand_set: "hutsik egon behar du, ekoizlearen estokaren konfigurazioa erabiltzen ari zarelako"
+ limited_stock_but_no_count_on_hand: "zehaztu egin behar da zergatik definitu den aldi mugatua"
+ connected_apps:
+ vine:
+ api_request_error: "Errorea gertatu da Vine APIra konektatzean"
+ messages:
+ confirmation: "Ez dator bat"
+ blank: "ezin da hutsik egon"
+ too_short: "laburregia da (gutxienekoa %{count} karaktere da)"
+ errors:
+ messages:
+ content_type_invalid: "Eduki-mota baliogabea du"
+ file_size_out_of_range: " %{file_size} tamaina ez dago eskatutako barrutian"
+ limit_out_of_range: "Guztizko kopurua tartetik kanpo dago"
+ image_metadata_missing: "ez da irudi balioduna"
+ dimension_min_inclusion: " %{width} x %{height} pixelen adinakoa edo handiagoa izan behar du."
+ dimension_max_inclusion: " %{width} x %{height} pixelak baino txikiagoa edo berdina izan behar du."
+ dimension_width_inclusion: "zabalera ez da sartzen %{min} eta %{max} pixelen artean."
+ dimension_height_inclusion: "altuera ez da sartzen %{min} eta %{max} pixelen artean."
+ dimension_width_greater_than_or_equal_to: "Zabalerak %{length} pixelekoa edo handiagoa izan behar du."
+ dimension_height_greater_than_or_equal_to: "Altuerak %{length} pixela baino handiagoa edo berdina izan behar du."
+ dimension_width_less_than_or_equal_to: "Zabalerak %{length} pixelekoa edo txikiagoa izan behar du."
+ dimension_height_less_than_or_equal_to: "Altuerak %{length} pixela edo txikiagoa izan behar du."
+ dimension_width_equal_to: "Zabalerak %{length} pixelen berdina izan behar du."
+ dimension_height_equal_to: "altuerak %{length} pixel izan behar du."
+ aspect_ratio_not_square: "irudiak karratua izan behar du"
+ aspect_ratio_not_portrait: "irudiak erretratua izan behar du"
+ aspect_ratio_not_landscape: "paisaiaren irudia izan behar du"
+ aspect_ratio_is_not: " %{aspect_ratio} itxura-erlazioa izan behar du"
+ aspect_ratio_unknown: "itxura ezezaguneko harremana du"
+ image_not_processable: "ez da irudi balioduna"
+ not_found:
+ title: "Bilatzen ari zaren orrialdea ez da existitzen (404)"
+ message_html: "Mesedez, saiatu berriro Hau denbora arazo bat izan daiteke.
Egin klik Atzera botoian aurreko pantailara itzultzeko edo itzuli Hasiera botoira eta saiatu berriro. Jarri harremanetan laguntza-zerbitzuarekin Arazoak jarraitzen badu edo premiazkoa bada, jakinaraz iezaguzu.
Aurkitu gure harremanetarako datuak Open Food Network-en tokiko orrian.
Oso lagungarria izango zaigu falta den orriaren arrazoiari buruzko xehetasun posible guztiak ematea.
"
+ internal_server_error:
+ title: "Sentitzen dugu, baina zerbait gaizki joan da (500)"
+ unprocessable_entity:
+ title: "Nahi den aldaketa baztertu egin da (422)"
+ general_error:
+ message: "Sentitzen dugu, baina zerbait gaizki joan da.\n\nBaliteke aldi baterako arazoa izatea, beraz, saia zaitez berriro edo kargatu orria.\nAkats guztiak erregistratzen ditugu eta litekeena da konponbide bat lantzen aritzea.\nArazoak bere horretan jarraitzen badu edo premiazkoa bada, jar zaitez gurekin harremanetan.\n"
+ stripe:
+ error_code:
+ incorrect_number: "Txartelaren zenbakia ez da zuzena."
+ invalid_number: "Txartelaren zenbakia ez da baliozkoa."
+ invalid_expiry_month: "Txartela iraungitako hilabetea baliogabea da."
+ invalid_expiry_year: "Txartela iraungitzen den urtea baliogabea da."
+ invalid_cvc: "Txartelaren segurtasun-kodea baliogabea da."
+ expired_card: "Txartela amaitu da."
+ incorrect_cvc: "Txartelaren segurtasun-kodea ez da zuzena."
+ incorrect_zip: "Txartelaren posta-kodeak huts egin du balidazioan."
+ card_declined: "Txartela ukatu egin da."
+ missing: "Kobratzen ari zaion kontsumitzaileak ez du txartelik."
+ processing_error: "Errorea gertatu da txartela prozesatzean."
+ rate_limit: "Errore bat gertatu da eskaerak azkarregi iritsi zirelako APIra. Jakinaraz iezaguzu ea etengabe aurkitzen den errore honekin."
+ authentication_required: "Txartela ukatu egin da, transakzioak autentifikazioa eskatzen duelako."
+ approve_with_id: "Ordainketa ezin da baimendu."
+ call_issuer: "Arrazoi ezezagun batengatik ukatu da txartela."
+ card_not_supported: "Txartelak ez du horrelako erosketarik onartzen."
+ card_velocity_exceeded: "Bezeroak txartelean eskuragarri duen kreditu-saldoa edo -muga gainditu du."
+ currency_not_supported: "Txartelak ez du zehaztutako moneta onartzen."
+ do_not_honor: "Arrazoi ezezagun batengatik ukatu da txartela."
+ do_not_try_again: "Arrazoi ezezagun batengatik ukatu da txartela."
+ duplicate_transaction: "Duela gutxi transakzio bat bidali zen kreditu-txartelaren kopuru eta informazio berarekin."
+ fraudulent: "Ordainketa atzera bota da Stripek iruzurrezkoa dela susmatzen duelako."
+ generic_decline: "Arrazoi ezezagun batengatik ukatu da txartela."
+ incorrect_pin: "Sartutako PINa ez da zuzena. Errefus-kode hau txartel-irakurgailu batekin egindako ordainketei bakarrik aplikatzen zaie."
+ insufficient_funds: "Txartelak ez du nahikoa funts erosketa osatzeko."
+ invalid_account: "Txartela, edo hari lotutako kontua, baliogabea da."
+ invalid_amount: "Ordainketaren zenbatekoa baliogabea da edo baimendutako zenbatekoa gainditzen du."
+ invalid_pin: "Sartutako PINa ez da zuzena. Errefus-kode hau txartel-irakurgailu batekin egindako ordainketei bakarrik aplikatzen zaie."
+ issuer_not_available: "Ezin izan zen txartelaren igorlearekin harremanetan jarri, eta, beraz, ezin izan zen ordainketa baimendu."
+ lost_card: "Ordainketa atzera bota da txartela galdutzat eman delako."
+ merchant_blacklist: "Ordainketa atzera bota da, Stripeko erabiltzailearen blokeo-zerrendako balio batekin bat datorrelako."
+ new_account_information_available: "Txartela, edo hari lotutako kontua, baliogabea da."
+ no_action_taken: "Arrazoi ezezagun batengatik ukatu da txartela."
+ not_permitted: "Ezin da ordaindu."
+ offline_pin_required: "Txartela atzera bota da PIN bat behar duelako."
+ online_or_offline_pin_required: "Txartela atzera bota da PIN bat behar duelako."
+ pickup_card: "Txartela ezin da erabili ordainketa hori egiteko (baliteke galdu edo lapurtu gisa jakinarazi izana)."
+ pin_try_exceeded: "Baimendutako PIN saiakeren kopurua gainditu da."
+ reenter_transaction: "Jaulkitzaileak ezin izan zuen ordainketa prozesatu arrazoi ezezagun batengatik."
+ restricted_card: "Txartela ezin da erabili ordainketa hori egiteko (baliteke galdu edo lapurtu gisa jakinarazi izana)."
+ revocation_of_all_authorizations: "Arrazoi ezezagun batengatik ukatu da txartela."
+ revocation_of_authorization: "Arrazoi ezezagun batengatik ukatu da txartela."
+ security_violation: "Arrazoi ezezagun batengatik ukatu da txartela."
+ service_not_allowed: "Arrazoi ezezagun batengatik ukatu da txartela."
+ stolen_card: "Ordainketa atzera bota da, txartela lapurtutzat eman delako."
+ stop_payment_order: "Arrazoi ezezagun batengatik ukatu da txartela."
+ testmode_decline: "Stripe proba-txartelaren zenbaki bat erabili zen."
+ transaction_not_allowed: "Arrazoi ezezagun batengatik ukatu da txartela."
+ try_again_later: "Arrazoi ezezagun batengatik ukatu da txartela."
+ withdrawal_count_limit_exceeded: "Bezeroak txartelean eskuragarri duen kreditu-saldoa edo -muga gainditu du."
+ disconnect_failure: "Stripe ezin izan dugu deskonektatu."
+ success_code:
+ disconnected: "Stripe kontu deskonektatua."
+ activemodel:
+ errors:
+ messages:
+ inclusion: "ez dago zerrendan sartuta"
+ models:
+ order_management/subscriptions/validator:
+ attributes:
+ subscription_line_items:
+ at_least_one_product: "^ Mesedez, gehitu produktu bat gutxienez"
+ not_available: "^ %{name} ez dago eskuragarri hautatutako programan"
+ ends_at:
+ after_begins_at: "ondoren hasiko da"
+ customer:
+ does_not_belong_to_shop: "ez da %{shop}"
+ schedule:
+ not_coordinated_by_shop: "ez dago %{shop} k koordinatuta"
+ payment_method:
+ not_available_to_shop: "ez dago erabilgarri %{shop} rako"
+ invalid_type: "Metodoa Cash edo Stripe izan behar da"
+ charges_not_allowed: "^ Kreditu-txartelaren karguak ez daude baimenduta kontsumitzaile horrentzat"
+ no_default_card: "^ Kontsumitzaile honentzat eskuragarri dagoen txartel lehenetsirik ez dago"
+ shipping_method:
+ not_available_to_shop: "ez dago erabilgarri %{shop} rako"
+ card_details: "Txartelaren xehetasunak"
+ card_type: "Txartel mota"
+ card_type_is: "Txartel mota da"
+ unrecognized_card_type: "Aitortu gabeko txartel mota"
+ use_new_cc: "Beste txartel bat erabili"
+ what_is_this: "Zer da hau?"
+ cardholder_name: "Txartelaren titularraren izena"
+ community_forum_url: "Komunitatearen foroaren URLa"
+ customer_instructions: "Kontsumitzailearen jarraibideak"
+ additional_information: "Informazio gehigarria"
+ connect_app:
+ url: "https://n8n.openfoodnetwork.org/webhook/regen/connect-enterprise"
+ devise:
+ passwords:
+ spree_user:
+ cannot_be_blank: "Pasahitza ezin da hutsik egon. Mesedez sartu pasahitz bat. "
+ confirmations:
+ send_instructions: "Mezu elektroniko bat jasoko duzu zure kontua minutu gutxi barru berresteko jarraibideekin."
+ failed_to_send: "Errorea gertatu da zure baieztapen-mezu elektronikoa bidaltzean."
+ resend_confirmation_email: "Berrespen-mezu elektronikoa birbidali."
+ confirmed: "Eskerrik asko zure posta elektronikoa baieztatzeagatik! Orain saioa has dezakezu. "
+ not_confirmed: "Zure helbide elektronikoa ezin izan da baieztatu. Agian urrats hau bete duzu? "
+ user_confirmations:
+ spree_user:
+ send_instructions: "Mezu elektroniko bat jasoko duzu zure kontua minutu gutxi barru berresteko jarraibideekin."
+ confirmation_sent: "Baieztapen-mezu elektroniko bat bidali da"
+ confirmation_not_sent: "Errorea baieztapen-mezu elektronikoa bidaltzean."
+ user_registrations:
+ spree_user:
+ signed_up_but_unconfirmed: "Mezu bat bidali da zure helbide elektronikora, baieztapen-esteka batekin. Ireki zure kontua aktibatzeko esteka. "
+ unknown_error: "Zerbait gaizki atera da zure kontua sortzean. Begiratu zure helbide elektronikoa eta saiatu berriro. "
+ failure:
+ disabled: "Zure kontua desaktibatu da. Jar zaitez harremanetan administratzaile batekin arazo hau konpontzeko "
+ invalid: |
+ Baliogabeak diren posta edo pasahitza.
+ Gonbidatu zaituzte? Agian kontu bat sortu edo pasahitza berreskuratu beharko duzu.
+ unconfirmed: "Kontua berretsi behar duzu jarraitu baino lehen."
+ already_registered: "Helbide elektroniko hau erregistratuta dago. Hasi saioa jarraitzeko, edo itzuli atzera eta erabili beste helbide elektroniko bat. "
+ success:
+ logged_in_succesfully: "Arrakastaz hasitako saioa"
+ sessions:
+ signed_out: "Saioa behar bezala itxi da"
+ already_signed_out: "Saioa behar bezala itxi da"
+ user_passwords:
+ spree_user:
+ updated_not_active: "Zure pasahitza berrezarri da, baina zure posta elektronikoa oraindik ez da baieztatu."
+ updated: "Zure pasahitza arrakastaz aldatu da. Saioa hasita daukazu."
+ send_instructions: "Mezu elektroniko bat jasoko duzu zure kontua minutu gutxi barru berresteko jarraibideekin."
+ oidc:
+ failure: "Ezin izan da saioa hasi: %{errorea}"
+ home_page_alert_html: "Hasierako orrialdearen alertaren HTMLa"
+ hub_signup_case_studies_html: "HTML hub erregistroa aztertzeko kasuak"
+ hub_signup_detail_html: "HTML hub erregistroaren xehetasuna"
+ hub_signup_pricing_table_html: "HTML hub erregistro-prezioen taula"
+ group_signup_case_studies_html: "HTML talde-erregistroa aztertzeko kasuak"
+ group_signup_detail_html: "HTML talde-erregistroaren xehetasuna"
+ group_signup_pricing_table_html: "HTML taldeko erregistro-prezioen taula"
+ item_description: "Artikuluaren deskribapena"
+ menu_1_icon_name: "1. menuko ikonoaren izena"
+ menu_2_icon_name: "2. menuko ikonoaren izena"
+ menu_3_icon_name: "3. menuko ikonoaren izena"
+ menu_4_icon_name: "4. menuko ikonoaren izena"
+ menu_5_icon_name: "5. menuko ikonoaren izena"
+ menu_6_icon_name: "6. menuko ikonoaren izena"
+ menu_7_icon_name: "7. menuko ikonoaren izena"
+ models:
+ order_cycle:
+ cloned_order_cycle_name: "{order_cyclea} KOPIA"
+ tax_rate:
+ included_in_price: "Prezioan sartuta"
+ open_street_map_enabled: "Open Street Map gaitua"
+ open_street_map_default_latitude: "Open Street Map-en latitude lehenetsia"
+ open_street_map_default_longitude: "Open Street Map-en luzera lehenetsia"
+ open_street_map_provider_name: "Open Street Map hornitzailearen izena"
+ open_street_map_provider_options: "Open Street Map hornitzailearen aukerak"
+ producer_signup_case_studies_html: "HTML ekoiztetxeen erregistroa aztertzeko kasuak"
+ producer_signup_detail_html: "HTML ekoizle-erregistroaren xehetasuna"
+ producer_signup_pricing_table_html: "HTML produkzio-etxearen erregistro-prezioen taula"
+ producers_social: "Ekoizpen-etxearen izen soziala"
+ resume_order: "Eskaera berriz hastea"
+ sku: "SKU"
+ subtotal: "Subtotala"
+ tax_rate: "Zergen %"
+ with_tax_incl: " %{amount} zergak barne"
+ producer_mail_qty: Kant.
+ validators:
+ date_time_string_validator:
+ not_string_error: "kate bat izan behar du"
+ invalid_format_error: "baliozkoa izan behar du"
+ integer_array_validator:
+ not_array_error: "matrize bat izan behar du"
+ invalid_element_error: "osoko baliodunak bakarrik eduki behar ditu"
+ report_job:
+ report_failed: |
+ Txosten honek huts egin du. Agian handiegia da prozesatzeko.
+ Ikertuko dugu, abisatu ea arazoak bere horretan dirauen.
+ backorder_mailer:
+ backorder_failed:
+ subject: "Malda automatikoko eskaera batek huts egin du"
+ headline: "Akatsa egiteke dagoen eskabidean"
+ description: |
+ Artikulu agortuen zain dagoen eskaera bat egiten edo eguneratzen saiatzen gara, baina
+ zerbait gaizki atera zen. Baliteke existentzia negatiboak izatea eta
+ arazoa konpondu behar du existentzia gehiago eskatzeko.
+ hints: |
+ Baliteke OIDCen konfiguraziora joan behar izatea eta zure kontua berriro konektatu behar izatea.
+ Egiaztatu, halaber, zure hornitzailearen katalogoa ez dela aldatu, eta jarraitu
+ behar dituen produktu guztiak eskura ditzake. Jar zaitez gurekin harremanetan
+ zalantzaren bat du.
+ order: "Eragindako eskaera: %{number}"
+ stock: "Izakinak"
+ product: "Produktua"
+ backorder_incomplete:
+ subject: "Ez da bete egiteke dagoen eskaera automatikoa"
+ headline: "Zure eskaera zirriborro bat da oraindik"
+ description: |
+ Artikuluen zain dagoen eskaera bat osatzen saiatuko gara
+ baina zerbait gaizki atera zen. Egiteke dauden eskarien kopuruak
+ altuegiak izan daitezke ezeztapenak egon badira. Zure eskaera
+ ez da beteko zirriborro-egoeran dagoen bitartean.
+ hints: |-
+ Baliteke OIDCen konfiguraziora joan behar izatea eta zure kontua berriro konektatu behar izatea. Egiaztatu, halaber, zure hornitzailearen katalogoa ez dela aldatu, eta jarraitu behar dituen produktu guztiak eskura ditzake. Jar zaitez gurekin harremanetan zalantzaren bat du.
+ affected: "%{enterprise}: %{order_cycle}"
+ enterprise_mailer:
+ confirmation_instructions:
+ subject: "Berretsi %{enterprise} -ren helbide elektronikoa"
+ welcome:
+ subject: " %{enterprise} da orain %{sitename}"
+ email_welcome: "Ongi etorri"
+ email_registered: "orain zati bat da"
+ email_userguide_html: "Zure ekoiztetxea edo kontsumo-taldea konfiguratzeko euskarri zehatza duen erabiltzailearen gida hemen dago: %{link}"
+ userguide: "Open Food Network-en erabiltzaile-gida"
+ email_admin_html: "Zure kontua administratu dezakezu %{link} an saioa hasiz edo hasierako orriaren eskuinaldean dagoen engranean klik eginez, eta Administrazioa hautatuz."
+ admin_panel: "Administrazio-panela"
+ email_community_html: "OFN programarekin eta elikadura-erakunde baten funtzionamenduaren erronka bakarrekin lotutako eztabaida komunalerako foro bat ere badugu. Bat egitera gonbidatzen zaitugu. Etengabe ari gara eboluzionatzen, eta haren ekarpenak forma emango dio gero gertatzen denari. %{link}"
+ join_community: "Komunitatearekin bat egin"
+ invite_manager:
+ subject: " %{enterprise} administratzaile izatera gonbidatu zaitu"
+ producer_mailer:
+ order_cycle:
+ subject: "Eskaera-zikloaren txostena %-rako {producer}"
+ provider_settings: "Hornitzailearen konfigurazioa"
+ report_mailer:
+ report_ready:
+ subject: "Txostena prest"
+ heading: "Txostena deskargatzeko prest"
+ intro: |
+ Esteka hau astebetean iraungiko da
+ link_label: "%{name}"
+ shipment_mailer:
+ shipped_email:
+ dear_customer: "Kontsumitzaile estimatua,"
+ instructions: "Zure eskaera bidali da"
+ shipment_summary: "Bidalketaren laburpena"
+ subject: "Bidalketaren jakinarazpena"
+ thanks: "Eskerrik asko negozioak egiteagatik."
+ track_information: "Jarraipen-informazioa: %{tracking}"
+ track_link: "Jarraipen-lotura: %{url}"
+ subscription_mailer:
+ placement_summary_email:
+ subject: Azken harpidetza-eskaeren laburpena
+ greeting: "Kaixo %{name},"
+ intro: "Jarraian, %{shop} tan egin berri diren harpidetza-eskaeren laburpena erakusten da."
+ confirmation_summary_email:
+ subject: Duela gutxi baieztatutako harpidetza-eskaeren laburpena
+ greeting: "Kaixo %{name},"
+ intro: "Jarraian, amaitu berri diren harpidetza-eskaeren laburpen bat erakusten da, %{shop} rako."
+ summary_overview:
+ total: Guztira %{count} harpidetza markatu ziren automatikoki prozesatuak izateko.
+ success_zero: Horietatik, inor ez zuten auzipetu.
+ success_some: Horietatik, %{count} arrakastaz prozesatu ziren.
+ success_all: Denak arrakastaz auzipetu zituzten.
+ issues: 'Hona hemen aurkitutako arazoen xehetasunak:'
+ summary_detail:
+ no_message_provided: Ez dago errore-mezurik
+ changes:
+ title: Insufficient Stock (eskaeren %{count})
+ explainer: Eskaera horiek prozesatu ziren, baina ez zen nahikoa izakinik izan eskatutako artikulu batzuetarako
+ empty:
+ title: Stockik gabe ( %{count} eskaera)
+ explainer: Agindu horiek ezin izan ziren prozesatu, ez zegoelako izakinik eskuragarri eskatutako artikuluetarako
+ complete:
+ title: Dagoeneko prozesatuta ( %{count} eskaera)
+ explainer: Agindu horiek osotzat markatuta zeuden eta, beraz, ez ziren aldatu.
+ processing:
+ title: Aurkitutako errorea ( %{count} eskaera)
+ explainer: Agindu horien prozesamendu automatikoak errore baten ondorioz huts egin zuen. Errorea ahal den kasuetan erakutsiko da.
+ failed_payment:
+ title: Errorea ordainketan ( %{count} eskaera)
+ explainer: Eskaera horien ordainketaren prozesamendu automatikoak errore baten ondorioz huts egin zuen. Errorea zerrenda bat izan da, non posible izan den.
+ other:
+ title: Beste akats batzuk ( %{count} eskaera)
+ explainer: Agindu horien prozesatze automatikoak arrazoi ezezagun batengatik huts egin zuen. Hau ez litzateke gertatu behar, jarri gurekin harremanetan hau ikusten ari bazara.
+ home: "OFN"
+ title: "Open Food Network"
+ welcome_to: "Ongi etorri"
+ site_meta_description: "Gu behetik hasi ginen. Nekazariak eta ekoizleak prest beren istorioak harrotasunez eta benetakotasunez kontatzeko. Banatzaileak prest daude produktuak dituen jendea modu zuzen eta zintzoan konektatzeko. Asteko erosketen inguruko erabaki hobeak har ditzaketela uste duten erosleekin... "
+ search_by_name: Izenaren edo udalerriaren arabera bilatu...
+ producers_join: Australiako ekoiztetxeak ongi etorriak dira orain Open Food Network-ekin bat egitera.
+ charges_sales_tax: BEZaren karguak?
+ business_address: "Negozio Zuzendaritza"
+ print_invoice: "Faktura inprimatu"
+ print_ticket: "Tiketa inprimatu"
+ select_ticket_printer: "Aukeratu inprimagailua tiketetarako"
+ send_invoice: "Faktura bidali"
+ resend_confirmation: "Berrespena birbidali"
+ view_order: "Ikusi eskaera"
+ edit_order: "Editatu eskaera"
+ ship_order: "Bidali eskaera"
+ cancel_order: "Ezeztatu eskaera"
+ confirm_send_invoice: "Faktura bat bidali zitzaion bezeroari. Ziur zaude jarraitu nahi duzula? "
+ confirm_resend_order_confirmation: "Ziur zaude eskaera berresteko mezua birbidali nahi duzula?"
+ must_have_valid_business_number: " %{enterprise_name} k baliozko IFK bat izan behar du fakturak erabili ahal izateko."
+ invoice: "Faktura"
+ invoices: "Fakturak"
+ file: "Fitxategia"
+ active: "Aktiboa"
+ download: "Deskargatu"
+ cancelled: "Ezeztatuta"
+ more: "Gehiago"
+ say_no: "Ez"
+ say_yes: "Bai"
+ ongoing: Martxan
+ bill_address: Fakturazio-helbidea
+ ship_address: Bidalketa-helbidea
+ sort_order_cycles_on_shopfront_by: "Dendako eskaeren zikloak ordenatzea"
+ required_fields: Nahitaezko eremuak izartxo batekin adierazten dira
+ select_continue: Hautatu eta jarraitu
+ remove: Ezabatu
+ collapse_all: Denak uzkurtu
+ expand_all: Zabaldu guztiak
+ loading: Kargatzen...
+ show_more: Erakutsi gehiago
+ show_all: Erakutsi guztiak
+ show_all_with_more: "Erakutsi dena ( %{num} Gehiago)"
+ cancel: Ezeztatu
+ edit: Editatu
+ clone: Bikoiztu
+ distributors: Banatzaileak
+ distribution: Banaketa
+ order_cycles: Eskabide-zikloak
+ bulk_order_management: Eskaerak blokean kudeatzea
+ enterprises: Erakundeak
+ enterprise_groups: Sareak
+ reports: Txostenak
+ listing_reports: Txostenen zerrenda
+ variant_overrides: Inbentarioa
+ import: Inportatu
+ spree_products: Spree produktuak
+ all: Guztiak
+ current: Oraingoa
+ available: Eskuragarri
+ dashboard: Hasierako panela
+ undefined: mugagabea
+ unused: ez da erabiltzen
+ admin_and_handling: Administrazioa eta Erabilera
+ profile: Profila
+ supplier_only: Hornitzailea bakarrik
+ has_shopfront: Denda dauka
+ weight: Pisua
+ volume: Bolumena
+ items: Elementuak
+ summary: Laburpena
+ detailed: Xehatua
+ updated: Eguneratua
+ 'yes': "Bai"
+ 'no': "Ez"
+ y: 'B'
+ n: 'E'
+ powered_by: Powered by
+ blocked_cookies_alert: "Baliteke zure nabigatzailea denda hau erabiltzeko behar diren cookieak blokeatzen aritzea. Egin klik jarraian cookieak baimentzeko eta kargatu berriro orria. "
+ allow_cookies: "Cookieak baimentzea"
+ none: Bat ere ez
+ notes: Oharrak
+ error: Errorea
+ voucher: Bonoa
+ processing_payment: "Ordainketa prozesatzen..."
+ no_pending_payments: "Ez duzu ordainketarik egiteke"
+ invalid_payment_state: "Ordainketa-egoera baliogabea: %{state}"
+ filter_results: Iragazi emaitzak
+ clear_filters: Iragazkiak ezabatu
+ quantity: Kopurua
+ pick_up: Bilketa
+ ok: OK
+ copy: Kopia
+ change_my_password: "Aldatu nire pasahitza"
+ update_password: "Eguneratu pasahitza"
+ password_confirmation: Pasahitza berrestea
+ reset_password_token: pasahitza berrezartzeko tokena
+ expired: Amaitu da, mesedez eskatu berri bat
+ back_to_payments_list: "Itzuli ordainketa-zerrendara"
+ maestro_or_solo_cards: "Maisu-txartelak/Bakarrik"
+ backordered: "Berrhornitua"
+ on_hand: "Eskuragarri"
+ on hand: "Eskuragarri"
+ ship: "Bidalketa"
+ shipping_category: "Bidalketa-kategoria"
+ height: "Altuera"
+ width: "Zabalera"
+ depth: "Sakonera"
+ payment_could_not_process: "Ezin izan da ordainketa prozesatu"
+ payment_could_not_complete: "Ezin izan da ordainketa osatu"
+ vine_voucher_validator_service:
+ errors:
+ vine_api: "Errorea gertatu da HJArekiko komunikazioan, saia zaitez geroago."
+ invalid_voucher: "Bonuak ez du balio"
+ not_found_voucher: "Sentitzen dugu, ezin izan dugu txartel hori aurkitu, mesedez, egiaztatu kodea."
+ vine_voucher_redeemer_service:
+ errors:
+ vine_api: "Akats bat egon da APIrekiko komunikazioan"
+ redeeming_failed: "Errorea bonua trukatzean"
+ actions:
+ create_and_add_another: "Beste bat sortu eta gehitu"
+ create: "Sortu"
+ cancel: "Ezeztatu"
+ resume: "Jarraitu"
+ save: "Gorde"
+ edit: "Editatu"
+ update: "Eguneratu"
+ delete: "Ezabatu"
+ add: "Gehitu"
+ cut: "Moztu"
+ paste: "Itsatsi"
+ destroy: "Ezabatu"
+ rename: "Berrizendatu"
+ admin:
+ products_page:
+ title: Produktuak
+ filters:
+ categories:
+ title: Kategoriak
+ selected_categories: "Hautatutako kategorien %{count}"
+ producers:
+ title: Zutabeak
+ columns:
+ image: Irudia
+ name: Izena
+ unit_scale: Unitate-eskala
+ unit: Unitatea
+ unit_value: Unitateko balioa
+ display_as: Erakutsi batasuna
+ price: Prezioa
+ producer: Ekoizlea
+ category: Kategoria
+ sku: SKU
+ on_hand: "Eskuragarri"
+ on_demand: "Eskariaren arabera"
+ tax_category: "Zergen kategoria"
+ inherits_properties: "Jabetzak heredatzen ditu?"
+ import_date: "Inportazio-data"
+ actions: Ekintzak
+ columns_selector:
+ unit: Unitatea
+ price: Prezioa
+ producer: Ekoizlea
+ category: Kategoria
+ sku: SKU
+ on_hand: "Eskuragarri"
+ on_demand: "Eskariaren arabera"
+ tax_category: "Zergen kategoria"
+ inherits_properties: "Jabetzak heredatzen ditu?"
+ import_date: "Inportazio-data"
+ actions:
+ edit: Editatu
+ clone: Bikoiztu
+ delete: Ezabatu
+ remove: Ezabatu
+ preview: Aurretiko bista
+ image:
+ edit: Editatu
+ product_preview:
+ product_preview: Produktuaren aurretiko bista
+ shop_tab: Denda
+ product_details_tab: Produktuaren xehetasunak
+ adjustments:
+ skipped_changing_canceled_order: "Ezin duzu bertan behera utzitako eskaera bat aldatu."
+ begins_at: Hasi
+ begins_on: 'Hemen hasten da:'
+ bill_address: "Fakturaren helbidea"
+ ship_address: "Bidalketa-helbidea"
+ customer: Kontsumitzailea
+ date: Data
+ email: Emaila
+ ends_at: 'Hemen amaitzen da:'
+ ends_on: Amaitu
+ name: Izena
+ first_name: Izena
+ last_name: Abizena
+ on_hand: Eskuragarri
+ on_demand: Eskariaren arabera
+ on_demand?: Eskaeraren arabera?
+ order_cycle: Eskaera-zikloa
+ payment: Ordainketa
+ payment_method: Ordaintzeko modua
+ phone: Telefonoa
+ price: Prezioa
+ producer: Ekoizlea
+ image: Irudia
+ product: Produktua
+ quantity: Kopurua
+ schedule: Programazioa
+ shipping: Bidalketa
+ shipping_method: Bidaltzeko metodoa
+ shop: Denda
+ sku: erreferentzia-zenbakia
+ status_state: Probintzia
+ tags: Etiketak
+ variant: Barietatea
+ weight: Pisua
+ volume: Bolumena
+ items: Artikuluak
+ select_all: Hautatu dena
+ quick_search: Bilaketa azkarra
+ clear_all: Dena garbitu
+ start_date: "Hasiera-data"
+ end_date: "Amaiera-data"
+ unsaved_changes: "Gorde gabeko aldaketak dituzu"
+ form_invalid: "Inprimakiak eremu hutsak edo baliogabeak ditu"
+ clear_filters: Iragazkiak garbitzea
+ clear: Garbitu
+ save: Gorde
+ cancel: Ezeztatu
+ back: Atzera
+ show_more: Erakutsi gehiago
+ show_n_more: Erakutsi %{num} gehiago
+ choose: "Aukeratu..."
+ please_select: Mesedez aukeratu...
+ column_save_as_default: Gorde lehenetsita
+ columns: Zutabeak
+ actions: Ekintzak
+ viewing: "Ikusten: %{current_view_name}"
+ description: Deskribapena
+ whats_this: Zer da hau?
+ tag_has_rules: "Etiketa honetarako dauden arauak: %{num}"
+ has_one_rule: "Arau bat dauka"
+ has_n_rules: " %{num} arauak ditu"
+ unsaved_confirm_leave: "Orrialde honetan gorde gabeko aldaketak egin dituzu. Jarraitu gorde gabe?"
+ available_units: "Unitate erabilgarriak"
+ terms_of_service_have_been_updated_html: "Open Food Network zerbitzuaren baldintzak eguneratu dira: %{tos_link}"
+ terms_of_service: Zerbitzu-baldintzak irakurri
+ accept_terms_of_service: Zerbitzu-terminoak onartzea
+ shopfront_settings:
+ embedded_shopfront_settings: "Denda integratuaren konfigurazioa"
+ enable_embedded_shopfronts: "Denda integratuak gaitzea"
+ embedded_shopfronts_whitelist: "Baimendutako kanpo-domeinuen zerrenda"
+ terms_of_service_files:
+ create:
+ select_file: "Lehenbizi aukeratu fitxategi bat."
+ show:
+ title: "Zerbitzu-baldintzen artxiboak"
+ no_files: "Oraindik ez dira igo zerbitzu-baldintzak."
+ current_terms_html: "Ikusi gaur egungo %{tos_link} fitxategia. Karga-denbora: %{datetime}. "
+ terms_of_service: "Zerbitzu-baldintzak"
+ delete: "Fitxategia ezabatu"
+ confirm_delete: "Ziur zaude ezabatu nahi duzula Zerbitzuaren egungo baldintzen fitxategia?"
+ attachment: "Erantsia"
+ create_terms_of_service: "Sortu zerbitzu-baldintzen fitxategia"
+ number_localization:
+ number_localization_settings: "Number Localization Settings"
+ enable_localized_number: "Milaka hamartar bereizteko nazioarteko logika erabiltzea"
+ invoice_settings:
+ edit:
+ title: "Fakturaren konfigurazioa"
+ enable_invoices?: "Fakturak gaitu?"
+ invoice_style2?: "Erabili faktura alternatiboaren eredua, guztizko zerga-banakapena barne hartzen duena interes-tasaren eta artikulu bakoitzeko zerga-tasaren arabera (oraindik ez da egokia prezioak zergarik gabe erakusten dituzten herrialdeetarako)"
+ enterprise_number_required_on_invoices?: "ABN bat behar da faktura bat sortzeko?"
+ stripe_connect_settings:
+ edit:
+ title: "Stripe Connect"
+ settings: "Konfigurazioa"
+ stripe_connect_enabled: Stripe Connect bidezko ordainketak onartzen utzi dendei?
+ no_api_key_msg: Ez dago Stripe konturik erakunde honetarako.
+ configuration_explanation_html: Stripe Connect enpresarekiko integrazioa konfiguratzeko jarraibide zehatzak lortzeko, kontsultatu gida hau .
+ status: Egoera
+ ok: Ok
+ instance_secret_key: Instantziaren gako sekretua
+ account_id: Account ID
+ business_name: Erakundearen izena
+ charges_enabled: Gaitutako karguak
+ charges_enabled_warning: "Ohartarazpena: karguak ez daude gaituta beren konturako"
+ auth_fail_error: Eman zenuen API gakoa ez da baliozkoa.
+ empty_api_key_error_html: Ez da API Stripe koderik eman. Zure API gakoa konfiguratzeko, bete jarraibide hauek
+ matomo_settings:
+ edit:
+ title: "Matomoaren konfigurazioa"
+ matomo_url: "Matomoren URLa"
+ matomo_site_id: "Matomoren gunearen ID"
+ matomo_tag_manager_url: "Matomo Tag Managerraren URLa"
+ info_html: "Matomo web eta mugikor analisi aplikazio bat da. Matomok toki jakin batean ostatu har dezake, edo hodeian ostatatutako zerbitzu bat erabil dezake. Ikusi matomo.org informazio gehiagorako. "
+ config_instructions_html: "Hemen konfigura dezakezu OFN Matomoren integrazioa. Matomoren hurrengo URLak Matomoren instantziara jo behar du, eta hari bidaliko zaio erabiltzailearen jarraipen-informazioa; hutsik uzten bada, Matomo erabiltzailearen jarraipena desaktibatu egingo da. Gunearen ID eremua ez da nahitaezkoa, baina erabilgarria da Matomoren instantzia bakar batean webgune bat baino gehiago arakatzen ari bazara; Matomoren instantziaren kontsolan aurki daiteke. "
+ config_instructions_tag_manager_html: "Matomo Tag Managerraren URLaren konfigurazioak Matomo Tag Manager gaitzen du. Tresna honek aukera ematen dizu gertaera analitikoak konfiguratzeko. Matomo Tag Managerraren URLa Matomo Tag Managerraren instalazio-kodea atalaren kopia da. Ziurtatu edukiontzia eta ingurunea zuzena aukeratu, aukera horiek URLa aldatzen baitute. "
+ connected_app_settings:
+ edit:
+ title: "Konektatutako aplikazioaren doikuntzak"
+ enabled_legend: "Gaitutako aplikazio konektatuak"
+ update:
+ resource: Konektatutako aplikazioaren doikuntzak
+ customers:
+ index:
+ new_customer: "Kontsumitzaile berria"
+ code: Kodea
+ duplicate_code: "Kode hau dagoeneko erabili da."
+ bill_address: "Fakturazio Zuzendaritza"
+ ship_address: "Bidalketa-helbidea"
+ balance: "Saldoa"
+ update_address_success: "Helbide eguneratua behar bezala."
+ update_address_error: "Sartu eskatutako eremu guztiak"
+ edit_bill_address: "Editatu Fakturazio Zuzendaritza"
+ edit_ship_address: "Editatu bidalketa-helbidea"
+ required_fileds: "Nahitaezko eremuak izartxo batekin adierazten dira"
+ select_country: "Aukeratu herrialdea"
+ select_state: "Hautatu probintzia"
+ edit: "Editatu"
+ update_address: "Zuzendaritza eguneratu"
+ confirm_delete: "Baieztatzen duzu ezabatu nahi duzula?"
+ search_by_email: "Email/kode bidez bilatu"
+ guest_label: "Gonbidatu gisa eskaera egitea"
+ credit_owed: "Zor den kreditua"
+ balance_due: "Zor den saldoa"
+ contents:
+ edit:
+ title: Edukia
+ header: Sarrera
+ home_page: Orrialde nagusia
+ producer_signup_page: Ekoizlearen erregistro-orria
+ hub_signup_page: Taldearen erregistro-orria
+ group_signup_page: Taldea erregistratzeko orria
+ main_links: Menu nagusirako estekak
+ footer_and_external_links: Orri-oina eta kanpoko estekak
+ your_content: Zure edukia
+ user_guide: Erabiltzailearen eskuliburua
+ map: Mapa
+ dfc_product_imports:
+ index:
+ update: Eguneratu
+ new: Berria
+ import: Inportatu
+ import:
+ imported_products: "Inportatutako produktuak:"
+ enterprise_fees:
+ index:
+ title: "Erakundearen batzordeak"
+ enterprise: "Antolaketa"
+ fee_type: "Batzorde mota"
+ name: "Izena"
+ tax_category: "Zergaren kategoria"
+ calculator: "Kalkulagailua"
+ calculator_values: "Kalkulagailuaren balioak"
+ search: "Bilatu"
+ name_placeholder: "adibidez, enbalaje-batzordea"
+ enterprise_groups:
+ index:
+ new_button: Erakunde Talde Berria
+ form_primary_details:
+ primary_details: "Xehetasun nagusiak"
+ form_users:
+ users: "Erabiltzaileak"
+ form_about:
+ about: "Honi buruz"
+ form_images:
+ images: "Irudiak"
+ form_address:
+ contact: "Kontaktua"
+ form_web:
+ web: "Web baliabideak"
+ enterprise_roles:
+ form:
+ manages: Kudeatu
+ enterprise_role:
+ manages: Kudeatzen dute
+ products:
+ unit_name_placeholder: 'adibidez, mahukak'
+ index:
+ unit: Unitatea
+ display_as: Erakutsi nola
+ category: Kategoria
+ tax_category: Zerga kategoria
+ inherits_properties?: Jabetzak heredatzen ditu?
+ av_on: "Av. en"
+ import_date: Inportatua
+ upload_an_image: Irudi bat igo
+ seo:
+ product_search_keywords: "Produktuak bilatzeko gako-hitzak"
+ product_search_tip: "Idatzi hitzak zure produktuak dendetan bilatzen laguntzeko. Erabili gako-hitz bakoitza bereizteko espazioa. "
+ seo_tip: "Idatzi hitzak zure produktuak webean bilatzen laguntzeko. Erabili gako-hitz bakoitza bereizteko espazioa. "
+ search: "Bilatu"
+ properties:
+ property_name: "Jabetzaren izena"
+ inherited_property: "Jarauntsitako jabetza"
+ variants:
+ infinity: "infinitua"
+ to_order_tip: "Eskariaren arabera egindako artikuluek ez dute stock-mailarik; adibidez, eskariaren arabera egindako ogiak."
+ back_to_products_list: "Itzuli produktuen zerrendara"
+ editing_product: "Produktua editatzen"
+ tabs:
+ product_details: "Produktuaren xehetasunak"
+ group_buy_options: "Taldeko erosketa-aukerak"
+ images: "Irudiak"
+ variants: "aldakuntzak"
+ product_properties: "Produktuaren propietateak"
+ products_v3:
+ index:
+ header:
+ title: Hainbat produktu editatzea
+ content:
+ loading: Zure produktuak kargatzen
+ delete_modal:
+ delete_product_modal:
+ heading: "Ezabatu produktua"
+ confirmation_text: "Ezabatu produktua"
+ cancellation_text: "Produktua mantentzea"
+ delete_variant_modal:
+ heading: "Aldaera ezabatu"
+ confirmation_text: "Aldaera ezabatu"
+ cancellation_text: "Aldaera mantendu"
+ filters:
+ search_products: Produktuak bilatu
+ search_for_producers: Ekoiztetxeak bilatu
+ select_producer: Hautatu ekoizlea
+ all_producers: Produkzio-etxe guztiak
+ search_for_categories: Bilatu kategorien arabera
+ select_category: Hautatu kategoria
+ all_categories: Kategoria guztiak
+ producers:
+ label: Ekoizleak
+ categories:
+ label: Kategoriak
+ search: Bilatu
+ sort:
+ pagination:
+ per_page:
+ show: Erakutsi
+ clear_search: Bilaketa garbitzea
+ no_products:
+ no_products_found: Ez da produkturik aurkitu
+ import_products: Hainbat produktu inportatu
+ table:
+ reset: Baztertu aldaketak
+ save: Gorde aldaketak
+ product_variant_row:
+ new_variant: Aldaera berria
+ bulk_update:
+ success: Gordetako aldaketak
+ delete_product:
+ success: Produktua ezabatu egin da
+ error: Ezin da produktua ezabatu
+ delete_variant:
+ success: Aldaera ezabatu da
+ error: Ezin da aldaera ezabatu
+ variant_row:
+ none_tax_category: Bat ere ez
+ category_field_name: "Kategoria"
+ tax_category_field_name: "Zergen kategoria"
+ producer_field_name: "Ekoizlea"
+ clone:
+ success: Produktua klonatu du
+ error: Ezin izan da produktua klonatu
+ product_import:
+ title: Produktuen inportazioa
+ file_not_found: Artxiboa ez da aurkitu edo ezin izan da ireki
+ no_data: Ez da daturik aurkitu kalkulu-orrian
+ confirm_reset: "Horrek zeroko stock-maila ezarriko du erakunde honetarako kargatutako fitxategian ez dauden produktu guztietan"
+ model:
+ no_file: "Errorea: ez da fitxategirik igo"
+ could_not_process: "Ezin izan da fitxategia prozesatu: fitxategi mota baliogabea"
+ incorrect_value: balio okerra
+ conditional_blank: ezin da zuriz egon unit_type hutsik badago
+ no_product: ez dator bat datu-baseko ezein produkturekin
+ not_found: ez da aurkitu datu-basean
+ category_not_found: ez dator bat baimendutako kategoriekin. Kontsultatu produktuak inportatzeko orrian aukeratzeko kategoria zuzenak, edo egiaztatu ez dagoela akats ortografikorik.
+ not_updatable: Ezin da eguneratu dauden produktuen gainean produktuak inportatuz
+ values_must_be_same: berdina izan behar du izen bera duten produktuentzat
+ blank: ezin da hutsik egon
+ products_no_permission: ez duzu baimenik erakunde honentzat produktuak administratzeko
+ inventory_no_permission: ez duzu baimenik inbentarioa sortzeko ekoizpen-etxe honetarako
+ none_saved: Ez da produktu arrakastatsurik gorde
+ line_number: " %{number} lerroa:"
+ encoding_error: "Egiaztatu iturburu-fitxategiaren hizkuntza-konfigurazioa eta ziurtatu UTF-8 kodifikazioarekin gordeta dagoela"
+ unexpected_error: "Produktuen inportazioak ustekabeko errorea aurkitu zuen fitxategia irekitzean: %{error_message}"
+ malformed_csv: "Produktuaren inportazioak formatu okerreko CSV bat aurkitu zuen: %{error_message}"
+ index:
+ notice: "oharra"
+ beta_notice: "Funtzionalitate hau oraindik beta bertsioan dago: akats batzuk esperimentatu ditzake erabiltzen duen bitartean. Mesedez, ez izan zalantzarik gurekin harremanetan jartzeko. "
+ select_file: Aukeratu kalkulu-orri bat igotzeko
+ spreadsheet: Kalkulu-orria
+ choose_import_type: Aukeratu inportazio-mota
+ import_into: Inportazio mota
+ product_list: Produktuen zerrenda
+ inventories: Inbentarioak
+ import: Inportatu
+ upload: Igo
+ csv_templates: CSV txantiloiak
+ product_list_template: Deskargatu produktuen zerrendako txantiloia
+ inventory_template: Deskargatu inbentario-txantiloia
+ category_values: Kategoria-balio erabilgarriak
+ product_categories: Produktuaren kategoriak
+ tax_categories: Zerga kategoriak
+ shipping_categories: Bidalketa-kategoriak
+ dfc_import_form:
+ title: "Inportatu DFC katalogotik"
+ catalog_url: "DFC katalogoaren URLa"
+ preview: Aurretiko bista
+ import:
+ review: Berrikuspena
+ import: Inportatu
+ save: Gorde
+ results: Emaitzak
+ save_imported: Gorde inportatutako produktuak
+ no_valid_entries: Ez da sarrera baliozkorik aurkitu
+ none_to_save: Ez dago gorde daitekeen sarrerarik
+ some_invalid_entries: Inportatutako fitxategiak sarrera baliogabeak ditu
+ fix_before_import: Zuzendu errore hauek eta saiatu fitxategia berriro inportatzen
+ save_valid?: Oraingoz baliozko sarrerak gorde eta gainerakoak baztertu?
+ no_errors: Ez da akatsik aurkitu!
+ save_all_imported?: Gorde inportatutako produktu guztiak?
+ options_and_defaults: Inportazio-aukerak eta aurrez zehaztutako balioak
+ no_permission: ez duzu baimenik erakunde hau administratzeko
+ not_found: ezin izan da erakundea datu-basean aurkitu
+ no_name: Izenik gabe
+ blank_enterprise: Produktu batzuek ez dute antolamendu zehatzik.
+ reset_absent?: Falta diren produktuak berrezartzea
+ reset_absent_tip: Ezarri zero stocka artxiboan ez dauden produktu guztietarako.
+ overwrite_all: Gainidatzi dena
+ overwrite_empty: Gainidatzi hutsik badago
+ default_stock: Izakinen maila ezartzea
+ default_tax_cat: Zergen kategoria ezartzea
+ default_shipping_cat: Ezarri bidalketa-kategoria
+ default_available_date: Data erabilgarria ezarri
+ validation_overview: Inportazio-balidazioaren laburpena
+ entries_found: Inportatutako fitxategian aurkitutako sarrerak
+ entries_with_errors: Artikuluek akatsak dituzte eta ez dira inportatuko
+ products_to_create: Produktuak
+ products_to_update: Produktuak eguneratu egingo dira
+ inventory_to_create: Inbentario-artikuluak sortuko dira
+ inventory_to_update: Inbentario-artikuluak eguneratu egingo dira.
+ products_to_reset: Dauden produktuek beren stocka zeroan berrezarrita izango dute
+ inventory_to_reset: Inbentarioko gaiek beren stocka zeroan berrezarrita izango dute.
+ line: Lerroa
+ item_line: Artikuluaren ildoa
+ import_review:
+ not_updatable_tip: "Eremu hauek ezin dira eguneratu dauden produktuen inportazio masiboaren bidez:"
+ fields_ignored: Eremu horiek ez dira kontuan hartuko inportatutako produktuak gordetzen direnean.
+ entries_table:
+ not_updatable: Eremu hau ezin da lehendik dauden produktuetan inportazio masiboaren bidez eguneratu
+ save_results:
+ final_results: Inportatu azken emaitzak
+ products_created: Sortutako produktuak
+ products_updated: Produktu eguneratuak
+ inventory_created: Sortutako inbentario-artikuluak
+ inventory_updated: Inbentario-artikulu eguneratuak
+ products_reset: Produktuek zerora berrezarritako stock-maila zuten
+ inventory_reset: Inbentario-artikuluek zerora berrezarritako stock-maila zuten
+ all_saved: "Artikulu guztiak ondo gordeta"
+ some_saved: "Ondo gordetako artikuluak"
+ save_errors: Erroreak gorde
+ import_again: Igo beste fitxategi bat
+ view_products: Joan produktuen orrira
+ view_inventory: Joan inbentario-orrira
+ product_headings:
+ distributor: Banatzailea
+ producer: Ekoizlea
+ sku: SKU
+ name: Izena
+ display_name: Erakusteko izena
+ category: Kategoria
+ description: Deskribapena
+ units: Unitateak
+ unit_type: Unitate mota
+ variant_unit_name: Aldaeraren unitatearen izena
+ price: Prezioa
+ on_hand: Eskuragarri
+ on_demand: Eskariaren arabera
+ shipping_category: Bidalketa-kategoria
+ tax_category: Zerga kategoria
+ variant_overrides:
+ loading_flash:
+ loading_inventory: INBENTARIOA KARGATZEN
+ index:
+ title: Inbentarioa
+ description: Erabili orri hau zure erakundeentzako inbentarioak administratzeko. Hemen ezarritako produktuaren xehetasun guztiek 'Produktuak' webgunean ezarritakoak baliogabetuko dituzte
+ enable_reset?: Stockaren reseta aktibatu?
+ default_stock: "Aurrez zehaztutako stocka"
+ inherit?: Heredatua?
+ add: Gehitu
+ hide: Ezkutatu
+ import_date: Inportatua
+ select_a_shop: Aukeratu denda bat
+ review_now: Berrikusi orain
+ new_products_alert_message: '%{new_product_count} produktu berri batzuk daude zure inbentarioan gehitzeko.'
+ currently_empty: Zure inbentarioa hutsik dago
+ no_matching_products: Ez da aurkitzen zure inbentarioarekin bat datorren produkturik
+ no_hidden_products: Ez dago zure inbentarioan ezkutatutako produkturik
+ no_matching_hidden_products: Ez da aurkitu bat datozen produktu ezkuturik
+ no_new_products: Ez dago produktu berririk eskuragarri inbentario honetara gehitzeko
+ no_matching_new_products: Ez dago bat datorren produktu berririk
+ inventory_powertip: Hau da zure produktuen inbentarioa. Zure inbentarioan produktuak gehitzeko, hautatu "Produktu berriak" goitibeherako menuan.
+ hidden_powertip: Produktu horiek zure inbentarioan ezkutatu dira eta ez daude eskuragarri zure dendara gehitzeko. Egin klik "Gehitu" botoian zure inbentariora produktu bat gehitzeko.
+ new_powertip: Produktu horiek eskuragarri daude zure inbentarioan gehitzeko. Klikatu "Gehitu" zure inbentarioan produktu bat gehitzeko edo "Ezkutatu" bistatik ezkutatzeko. Beti alda dezakezu ideia!
+ controls:
+ back_to_my_inventory: Itzuli nire inbentariora
+ orders:
+ edit:
+ order_sure_want_to: Ziur al zaude eskaera hau %{event} nahi duzula?
+ tax_on_fees: "Tasen gaineko zerga"
+ invoice_email_sent: 'Posta elektronikoa bidali da fakturarekin.'
+ order_email_resent: 'Eskaeraren posta elektronikoa berriz bidali da'
+ bulk_management:
+ tip: "Erabili orri hau produktuaren kantitatea aldatzeko hainbat eskaeratan aldi berean. Produktuak eskaeretatik ken daitezke, beharrezkoa bada. "
+ shared: "Baliabide partekatua?"
+ order_no: "Eskaera zk."
+ order_date: "Hemen osatua:"
+ max: "Max"
+ product_unit: "Produktua: Unitatea"
+ weight_volume: "Pisua/Bolumena (g)"
+ ask: "Galdetzen du?"
+ page_title: "Eskaera anitzen kudeatzailea"
+ actions_delete: "Ezabatu hautatuak"
+ loading: "Eskaerak kargatzen"
+ no_results: "Ez dago eskaririk."
+ group_buy_unit_size: "Kontsumo Taldeko Magnitude Unitatea"
+ total_qtt_ordered: "Eskaeraren guztizko kopurua"
+ max_qtt_ordered: "Eskaeraren gehieneko kopurua"
+ current_fulfilled_units: "Unitate osatuak"
+ max_fulfilled_units: "Unitate osatuen gehienezkoa"
+ order_error: "Akats batzuk eskaerak eguneratu aurretik konpondu beharko dira.\nErtz gorria duten eremu guztiek akatsak dituzte."
+ variants_without_unit_value: "KONTUZ: Barietate batzuek ez dute balio unitarioa"
+ all: "Denak"
+ select_variant: "Hautatu aldaera bat"
+ note:
+ note_label: "Oharra:"
+ no_note_present: "Ez zen oharrik eman."
+ enterprise:
+ select_outgoing_oc_products_from: Hautatu hemendik ateratzen diren OC produktuak
+ enterprises:
+ index:
+ title: Erakundeak
+ new_enterprise: Antolaketa berria
+ producer?: "Ekoizlea?"
+ package: Profila
+ status: Egoera
+ manage: Kudeatu
+ form:
+ about_us:
+ legend: "Honi buruz"
+ desc_short: Deskribapen laburra
+ desc_short_placeholder: Esaiguzu zure antolaketari buruz esaldi batean edo bitan
+ desc_long: Guri buruz
+ desc_long_placeholder: Azaldu kontsumitzaileei nor zaren. Informazio hori zure profil publikoan agertuko da.
+ address:
+ legend: "Helbidea"
+ business_details:
+ legend: "Erakundearen xehetasunak"
+ upload: 'igo'
+ abn: IFZ
+ abn_placeholder: adib. 99 123 456 789
+ acn: ACN
+ acn_placeholder: adib. 123 456 789
+ display_invoice_logo: Erakutsi logoa fakturetan
+ invoice_text: Fakturen amaieran testu pertsonalizatua eranstea
+ terms_and_conditions: "Terminoak eta baldintzak"
+ remove_terms_and_conditions: "Fitxategia ezabatu"
+ uploaded_on: "Igota"
+ reset_form: "Formularioa berriz ezartzea"
+ business_address_legend: "Negozio Zuzendaritza"
+ invoice_item_sorting_legend: "Faktura-artikuluen sailkapena"
+ sort_items_by_supplier?: Hornitzaileak artikuluak ordenatu?
+ sort_items_by_supplier_tip: "Gaituta dagoenean, hornitzaile izenaren arabera ordenatuko dira gaiak."
+ enabled: Gaitu
+ disabled: Desgaitu
+ business_address:
+ company_legal_name: Enpresaren izen soziala
+ company_placeholder: S.A. adibidea
+ address1: Legezko helbidea
+ address1_placeholder: 123 Goiko kalea
+ address2: Helbidea (kont.)
+ legal_phone_number: Legezko telefono-zenbakia
+ phone_placeholder: "98 123 4565"
+ select_country: "Aukeratu herrialdea"
+ select_state: "Hautatu probintzia"
+ contact:
+ legend: "Kontaktua"
+ name: Izena
+ name_placeholder: adib. Gustav Plum
+ email_address: Helbide elektroniko publikoa
+ email_address_placeholder: p.ej. consultas@lacesta.com
+ email_address_tip: "Helbide elektroniko hau zure profil publikoan agertuko da"
+ phone: Telefonoa
+ phone_placeholder: adib. 98 7654 3210
+ whatsapp_phone: WhatsApp telefono zenbakia
+ whatsapp_phone_placeholder: e. +34 666 66666
+ whatsapp_phone_tip: "Zenbaki hau zure profil publikoan erakutsiko da, WhatsAppeko esteka gisa ireki dadin."
+ website: Webgunea
+ website_placeholder: adib. www.truffles.com
+ enterprise_fees:
+ legend: "Erakundearen batzordeak"
+ name: Izena
+ fee_type: Batzorde mota
+ manage_fees: Erakundearen batzordeak kudeatzen ditu
+ no_fees_yet: Ez duzu batzorderik antolakuntzarako.
+ create_button: Sortu bat orain
+ enterprise_permissions:
+ legend: "Erakundearen baimenak"
+ enterprise_relationships: Erakundearen Harremanak
+ images:
+ legend: "Irudiak"
+ logo: Logoa
+ logo_size: "300 x 300 pixel"
+ promo_image_placeholder: 'Irudi hau "Sobre nosotras" -en agertzen da'
+ promo_image_note1: 'ADI:'
+ promo_image_note2: Irudia 1200 x 260ra moztuko da.
+ promo_image_note3: Irudia erakundearen profilaren goiko aldean eta pop-up-etan erakutsiko da.
+ remove_logo: "Ezabatu irudia"
+ remove_promo_image: "Ezabatu irudia"
+ inventory_settings:
+ legend: "Inbentarioaren konfigurazioa"
+ text1: Stock mailak eta prezioak zure
+ inventory: inbentarioa
+ text2: >
+ Inbentario-tresna erabiltzen ari bazara, aukera dezakezu hornitzaileek erantsitako
+ produktu berriak biltegiratze-inbentarioari gehitu behar zaizkion ala
+ ez. Zure produktuak administratzeko inbentarioa erabiltzen ari ez bazara,
+ jarraian "gomendatutako" aukera hautatu behar duzu:
+ preferred_product_selection_from_inventory_only_yes: Produktu berriak dendan argitaratu daitezke (gomendatua)
+ preferred_product_selection_from_inventory_only_no: Produktu berriak inbentarioan sartu behar dira dendan jarri aurretik
+ payment_methods:
+ legend: "Ordaintzeko metodoak"
+ name: Izena
+ applies: Aplikatu?
+ manage: Ordainketa-metodoak kudeatzea
+ no_method_yet: Oraindik ez duzu ordaintzeko metodorik.
+ create_button: Ordainketa-metodo berri bat sortu
+ create_one_button: Sortu bat orain
+ primary_details:
+ legend: "Xehetasun nagusiak"
+ name: Izena
+ name_placeholder: adib. Plum's Biodynamic Truffles irakaslea
+ groups: Sareak
+ groups_tip: Hautatu kide zaren sareak edo eremuak. Horrek zure erakundea aurkitzen lagunduko die kontsumitzaileei.
+ groups_placeholder: Idatzi eskuragarri dauden sareak bilatzeko...
+ primary_producer: Ekoizle nagusia?
+ primary_producer_tip: Aukeratu "Ekoizlea" produktore nagusia bazara.
+ producer: Ekoizlea
+ any: Edozein
+ none: Bat ere ez
+ own: Propioa
+ sells: Saldu
+ sells_tip: "Bat ere ez - Erakundeak ez die zuzenean kontsumitzaileei saltzen. Popios - Erakundeak bere produktuak saltzen dizkie kontsumitzaileei. Edozein - Erakundeak bere produktuak edo beste batzuenak saltzen ditu."
+ visible_in_search: Ikusgai bilaketan?
+ visible: Publikoa
+ not_visible: Ezkutuan
+ hidden: Erreferentzia guztiak ezkutatu
+ properties:
+ legend: "Propietateak"
+ permalink:
+ permalink: Permalink (tarterik gabe)
+ permalink_tip: "Zure dendako URLa sortzeko erabiltzen da: %{link} tu-de-denda/shop izena"
+ link_to_front: Dendarako lotura
+ link_to_front_tip: Zure dendarako lotura zuzena Open Food Networks-en
+ ofn_uid: OFNko UIDa
+ ofn_uid_tip: Open Food Network-en erakundea identifikatzeko erabiltzen den identifikazio bakarra.
+ shipping_methods:
+ legend: "Bidaltzeko metodoak"
+ name: "Izena"
+ applies: "Aktiboa?"
+ manage: "Bidalketa-metodoak kudeatzea"
+ create_button: "Bidalketa-metodo berria sortu"
+ create_one_button: "Sortu bat orain"
+ no_method_yet: "Oraindik ez duzu bidaltzeko metodorik."
+ shop_preferences:
+ legend: "Dendaren konfigurazioa"
+ shopfront_requires_login: "Denda ikusgai eta publikoa izatea nahi duzu?"
+ shopfront_requires_login_tip: "Aukeratu bezeroek saioa hasi behar duten denda ikusteko edo denek ikusteko modukoa den."
+ shopfront_requires_login_false: "Publikoa"
+ shopfront_requires_login_true: "Erregistratutako kontsumitzaileentzat bakarrik ikus daiteke"
+ recommend_require_login: "Gomendatzen dugu erabiltzaileei sartzeko eskatzea beren eskaerak alda daitezkeenean."
+ allow_guest_orders: "Gonbidatuen eskaerak"
+ allow_guest_orders_tip: "Gonbidatu gisa edo erregistratutako erabiltzaile gisa bakarrik egin daitezkeen eskaerak baimentzea."
+ allow_guest_orders_false: "Eskaera bat egiteko logina egin behar da"
+ allow_guest_orders_true: "Gonbidatuei eskaerak baimentzea"
+ allow_order_changes: "Eskaerak aldatu"
+ allow_order_changes_tip: "Bezeroei eskaerak aldatzen uztea, eskaera-zikloak irekita jarraitzen duen bitartean."
+ allow_order_changes_false: "Egindako eskaerak ezin dira aldatu/ezeztatu"
+ allow_order_changes_true: "Bezeroek eskaerak alda/bertan behera utz ditzakete eskaera-zikloa irekita dagoen bitartean"
+ enable_subscriptions: "Harpidetzak"
+ enable_subscriptions_tip: "Harpidetzen funtzionaltasuna gaitu?"
+ enable_subscriptions_false: "Desgaitua"
+ enable_subscriptions_true: "Gaituta"
+ customer_names_in_reports: "Kontsumitzaileen izenak txostenetan"
+ customer_names_tip: "Utzi hornitzaileei txostenetan kontsumitzaileen izenak ikusten"
+ customer_names_false: "Desgaitua"
+ customer_names_true: "Gaituta"
+ shopfront_message: "Dendaren mezua"
+ shopfront_message_placeholder: >
+ Erosleentzako aukerako ongietorri-mezua, gunean nola erosi behar den
+ azaltzen du. Testua eremu horretan gehitzen bada, hasierako erlaitzean
+ erakutsiko da bezeroak dendara lehen aldiz sartzen direnean.
+ shopfront_closed_message: "Dendako mezua itxita"
+ shopfront_closed_message_placeholder: >
+ Mezu horrek azalpen zehatzagoa ematen du zure denda zergatik dagoen
+ itxita eta/edo noiz irekiko den berriro azaltzeko. Hori zure dendan
+ erakusten da soilik eskaera-ziklo aktiborik ez duzunean (adibidez,
+ denda itxita dagoenean).
+ shopfront_category_ordering: "Dendako kategorien ordena"
+ shopfront_category_ordering_note: "(goitik behera)"
+ open_date: "Hasiera-data"
+ close_date: "Amaiera-data"
+ display_ordering_in_shopfront: "Erakutsi eskaerak dendan:"
+ shopfront_sort_by_product: "Produktuaren arabera"
+ shopfront_sort_by_category: "Kategoriaren arabera"
+ shopfront_sort_by_producer: "Produktore bakoitzeko"
+ shopfront_sort_by_category_placeholder: "Kategoria"
+ shopfront_sort_by_producer_placeholder: "Ekoizlea"
+ display_remaining_stock: "Erakusleihoan dauden gainerako izakinak erakutsi, gutxi badaude"
+ display_remaining_stock_tip: "Jakinarazi erosleei 3 artikulu edo gutxiago geratzen direnean."
+ enabled: "Gaituta"
+ disabled: "Desgaitua"
+ social:
+ legend: "Soziala"
+ twitter_placeholder: "ej: the_prof"
+ instagram_placeholder: "adib. @nire_baratzea"
+ facebook_placeholder: "eg. www.facebook.com/NombreDePáginaAquí"
+ linkedin_placeholder: "adib. www.linkedin.com/in/YourNameHere"
+ stripe_connect:
+ connect_with_stripe: "Striperekin konektatu"
+ stripe_connect_intro: "Kreditu-txartelarekin egindako ordainketak onartzeko, zure Stripe kontua Open Food Network-ekin konektatu beharko duzu. Erabili eskuineko botoia hasteko. "
+ stripe_account_connected: "Stripe kontu konektatua."
+ disconnect: "Deskonektatu kontua"
+ confirm_modal:
+ title: Striperekin konektatu
+ part1: Stripe ordainketa-zerbitzu bat da, eta kontsumitzaileek kreditu-txartelarekin egindako ordainketak onartzeko aukera ematen die dendei.
+ part2: Funtzio hori erabiltzeko, zure Stripe kontua OFNrekin konektatu behar duzu. Ondoren, 'Onartu' sakatzean, Striperen webgunera birbideratuko zara. Bertan, lehendik dagoen Stripe kontu bat konekta dezakezu edo, oraindik ez baduzu, berri bat sor dezakezu.
+ part3: Horri esker, Open Food Network-ek bezeroen kreditu-txartelarekin egindako ordainketak onartuko ditu zure izenean. Kontuan izan zeure Stripe kontua mantendu beharko duzula, Striperen tarifak ordaindu beharko dituzula eta itzulketak eta bezeroarentzako zerbitzua kudeatu beharko dituzula.
+ i_agree: Ados nago
+ cancel: Ezeztatu
+ tag_rules:
+ legend: "Etiketen arauak"
+ default_rules:
+ by_default: Lehenetsita
+ no_rules_yet: Ez dago lehenespenez aplikatutako araurik
+ add_new_button: '+ Lehenetsitako arau berri bat gehitu'
+ no_tags_yet: Ez dago etiketarik erakunde honetarako
+ no_rules_yet: Oraindik ez zaio araurik aplikatzen etiketa horri
+ for_customers_tagged: 'Kontsumitzaile etiketatuentzat:'
+ add_new_rule: '+ Arau berri bat gehitu'
+ add_new_tag: '+ Etiketa berri bat erantsi'
+ users:
+ legend: "Erabiltzaileak"
+ email_confirmation_notice_html: "Helbide elektronikoa berrestea falta da. Baieztapen-mezu bat bidali dizugu %{email} helbidera. "
+ resend: Birbidali
+ owner: 'Jabea'
+ contact: "Kontaktua"
+ contact_tip: "Eskaera eta jakinarazpenetarako enpresaren mezu elektronikoak jasoko dituen administratzailea. Helbide elektroniko bat izan behar duzu baieztatuta. "
+ owner_tip: Arduradun nagusia erakunde honetarako erabiliko nuke.
+ notifications: Jakinarazpenak
+ notifications_tip: Eskaerei buruzko jakinarazpenak helbide honetara bidaliko dira.
+ notifications_placeholder: ej. gustav@truffles.com
+ notifications_note: 'Oharra: Helbide berri bat berretsi behar da.'
+ managers: Kudeatzaileak
+ managers_tip: Erakunde hori kudeatzeko baimena duten beste erabiltzaile batzuk.
+ invite_manager: "Gonbidatu administratzailea"
+ invite_manager_tip: "Erregistratu gabeko erabiltzaile bat gonbida ezazu erregistratzera eta erakunde honen administratzaile bihurtzera."
+ add_unregistered_user: "Gehitu erregistratu gabeko erabiltzaile bat"
+ email_confirmed: "Posta elektroniko baieztatua"
+ email_not_confirmed: "Baieztatu gabeko posta elektronikoa"
+ vouchers:
+ legend: Bonuak
+ voucher_code: Sustapen-kodea
+ rate: Zerga
+ label: Etiketa
+ purpose: Helburua
+ expiry: Iraungitzea
+ use_limit: Erabilera/Muga
+ customers: Kontsumitzailea
+ net_value: Balio garbia
+ active: Aktiboa?
+ add_new: Gehitu berria
+ no_voucher_yet: Oraindik ez dago bonurik
+ white_label:
+ legend: "Etiketa zuria"
+ hide_ofn_navigation: "Ezkutatu OFNren nabigazioa"
+ upload_logo: "Erakusleihoan erabiliko den logoa"
+ remove_logo: "Logoa ezabatu"
+ remove_logo_confirm: "Ziur zaude logo hau ezabatu nahi duzula?"
+ remove_logo_success: "Logoa kenduta"
+ white_label_logo_link_label: "Erakusleihoan erabiliko den log-erako esteka"
+ hide_groups_tab: "Ezkutatu taldeen erlaitza erakusleihoan"
+ create_custom_tab: "Sortu erlaitz pertsonalizatua erakusleihoan"
+ custom_tab_title: "Erlaitz pertsonalizatuaren izenburua"
+ custom_tab_content: "Fitxa pertsonalizatuaren edukia"
+ connected_apps:
+ legend: "Aplikazio konnektatuak"
+ affiliate_sales_data:
+ enable: "Datuak partekatzeko aukera ematea"
+ disable: "Utzi partekatzeari"
+ loading: "Kargatzen"
+ need_to_be_manager: "Administratzaileek bakarrik konekta ditzakete aplikazioak."
+ discover_regen:
+ enable: "Datuak partekatzeko aukera ematea"
+ disable: "Utzi partekatzeari"
+ loading: "Kargatzen"
+ need_to_be_manager: "Administratzaileek bakarrik konekta ditzakete aplikazioak."
+ vine:
+ enable: "Konektatu"
+ disable: "Deskonektatu"
+ need_to_be_manager: "Administratzaileek bakarrik konekta ditzakete aplikazioak."
+ actions:
+ edit_profile: Konfigurazioa
+ properties: Propietateak
+ payment_methods: Ordainketa-metodoak
+ payment_methods_tip: Erakunde honek ez du ordaintzeko metodorik
+ shipping_methods: Bidaltzeko metodoak
+ shipping_methods_tip: Erakunde honek bidalketa-metodoak ditu
+ enterprise_fees: Erakundearen Batzordeak
+ enterprise_fees_tip: Erakunde horrek ez du komisiorik
+ admin_index:
+ name: Izena
+ role: Rola
+ sells: Saldu
+ visible: Ikusgai?
+ owner: Jabea
+ producer: Ekoizlea
+ change_type_form:
+ producer_profile: Produkzio-profila
+ connect_ofn: OFN bidez konektatzea
+ always_free: BETI DOAN
+ producer_description_text: Gehitu zure produktuak Open Food Network-era, kontsumo-taldeei zure produktuak saltzeko aukera emanez.
+ producer_shop: Denda ekoizlea
+ sell_your_produce: Saldu zure ekoizpena
+ producer_shop_description_text: Saldu produktuak zuzenean bezeroei zure dendaren bidez.
+ producer_shop_description_text2: Ekoizle-denda bat zure produktuak saltzeko da. Beste ekoizle batzuen produktuak saldu nahi badituzu, aukeratu "Ekoizle-taldea"
+ producer_hub: Taldea
+ producer_hub_text: Saldu zure ekoizpena eta beste batzuena
+ producer_hub_description_text: Zure antolamendua tokiko kontsumo-sistema baten bizkarrezurra da. Gehitu zure produktuak edo beste erakunde batzuetakoak eta saldu Open Food Networkeko zure dendaren bidez.
+ profile: Profila bakarrik
+ get_listing: Zerrenda bat lortu
+ profile_description_text: Jendeak zu aurkitu eta zurekin harremanetan jarri ahal izango du Open Food Network-en. Mapan ikusi ahal izango da, eta zerrendetan bilatu ahal izango da.
+ hub_shop: Denda
+ hub_shop_text: Beste batzuen ekoizpena saltzea
+ hub_shop_description_text: Zure antolamendua tokiko kontsumo-sistema baten bizkarrezurra da. Gehitu beste erakunde batzuetako produktuak eta saldu Open Food Network-en duzun dendaren bidez.
+ choose_option: Mesedez, aukeratu aurreko aukeretako bat.
+ change_now: Aldatu
+ enterprise_user_index:
+ loading_enterprises: ERAKUNDEAK KARGATZEN
+ no_enterprises_found: Ez da erakunderik aurkitzen.
+ search_placeholder: Izenaren arabera bilatu
+ manage: Kudeatu
+ manage_link: Konfigurazioa
+ producer?: "Ekoizlea?"
+ package: "Profila"
+ status: "Egoera"
+ new_form:
+ owner: Jabea
+ owner_tip: Arduradun nagusia erakunde honetarako erabiliko nuke.
+ i_am_producer: Ekoizlea naiz
+ contact_name: Harremanetarako izena
+ edit:
+ editing: 'Konfigurazioa:'
+ back_link: Erakundeen zerrendara itzuli
+ new:
+ title: Antolaketa berria
+ back_link: Erakundeen zerrendara itzuli
+ welcome:
+ welcome_title: Ongi etorri Open Food Network-era!
+ welcome_text: Behar bezala sortu duzu
+ next_step: Hurrengo urratsa
+ choose_starting_point: 'Aukeratu zure profila:'
+ profile: 'Profila'
+ producer_profile: 'Profil ekoizlea'
+ invite_manager:
+ user_already_exists: "Erabiltzailea existitzen da"
+ error: "Zerbait gaizki atera da"
+ order_cycles:
+ loading_flash:
+ loading_order_cycles: Eskaera-zikloak kargatzen
+ loading: Kargatzen...
+ new:
+ create: "Sortu"
+ cancel: "Ezeztatu"
+ back_to_list: "Zerrendara itzuli"
+ create:
+ success: 'Eskaera-zikloa sortu da.'
+ update:
+ success: 'Eskaera-zikloa eguneratu da.'
+ clone:
+ success: "Zure eskaera-zikloa %{name} klonatu da."
+ notify_producers:
+ success: 'Ekoiztetxeei bidaliko zaizkien mezu elektronikoak ilaran jarri dira bidaltzeko.'
+ edit:
+ save: "Gorde"
+ save_and_next: "Salbatu eta jarraitu"
+ next: "Hurrengoa"
+ cancel: "Ezeztatu"
+ back_to_list: "Zerrendara itzuli"
+ save_and_back_to_list: "Salbatu eta zerrendara itzuli"
+ choose_products_from: "Aukeratu produktuak hemendik:"
+ re_notify_producers: Ekoizleei berriz jakinaraztea
+ notify_producers_tip: Horrek mezu bat bidaliko dio produktore bakoitzari bere eskaera-zerrendarekin.
+ date_time_warning_modal_content:
+ proceed: 'Dena dela'
+ cancel: 'Ezeztatu'
+ incoming:
+ incoming: "Sartu"
+ supplier: "Hornitzailea"
+ products: "Produktuak"
+ receival_details: "Harreraren xehetasunak"
+ fees: "Batzordeak"
+ save: "Gorde"
+ save_and_next: "Salbatu eta jarraitu"
+ next: "Hurrengoa"
+ cancel: "Ezeztatu"
+ back_to_list: "Zerrendara itzuli"
+ outgoing:
+ outgoing: "Irtena"
+ distributor: "Banatzailea"
+ products: "Produktuak"
+ tags: "Tags"
+ delivery_details: "Entregaren xehetasunak"
+ fees: "Batzordeak"
+ next: "Hurrengoa"
+ previous: "Aurrekoa"
+ save: "Gorde"
+ save_and_next: "Salbatu eta jarraitu"
+ cancel: "Ezeztatu"
+ back_to_list: "Zerrendara itzuli"
+ checkout_options:
+ back_end: "Administrazioan bakarrik"
+ cancel: "Ezeztatu"
+ checkout_options: "Aukerak balidatu"
+ distributor: "Banatzailea"
+ payment_methods: "Ordaintzeko metodoak"
+ save: "Gorde"
+ save_and_back_to_list: "Salbatu eta zerrendara itzuli"
+ select_all: "Hautatu dena"
+ shipping_methods: "Bidaltzeko metodoak"
+ wizard_progress:
+ edit: "1. Konfigurazio orokorra \""
+ incoming: "2. Sartzen diren produktuak "
+ outgoing: "3. Produktu irtenak "
+ checkout_options: "4. Balidatu aukerak "
+ exchange_form:
+ pickup_time_tip: Eskaera-ziklo honetako eskaerak kontsumitzailearentzat prest daudenean.
+ pickup_instructions_placeholder: "Biltzeko jarraibideak"
+ pickup_instructions_tip: Jarraibide horiek kontsumitzaileei erakusten zaizkie eskaera bat bete ondoren.
+ pickup_time_placeholder: "Prest (Data/Ordua) (e) rako"
+ receival_instructions_placeholder: "Harrera-jarraibideak"
+ add_fee: 'Gehitu komisioa'
+ remove: 'Ezabatu'
+ selected: 'hautatua'
+ add_exchange_form:
+ add_supplier: 'Gehitu hornitzailea'
+ add_distributor: 'Gehitu banatzailea'
+ advanced_settings:
+ automatic_notifications: Jakinarazpen automatikoak
+ automatic_notifications_tip: Ekoizleei automatikoki jakinaraztea eskaerak posta elektronikoz, eskaera-zikloak ixten dituztenean.
+ title: Konfigurazio aurreratua
+ choose_product_tip: Sartzen eta irteten diren produktuak %{inventory} inbentariora mugatu ditzakezu.
+ preferred_product_selection_from_coordinator_inventory_only_here: Koordinakundearen inbentarioa bakarrik
+ preferred_product_selection_from_coordinator_inventory_only_all: Eskuragarri dauden produktu guztiak
+ save_reload: Orria gorde eta kargatu
+ order_cycle_top_buttons:
+ advanced_settings: "Konfigurazio aurreratua"
+ coordinator_fees:
+ add: Komisioa gehitu koordinatzailearentzat
+ filters:
+ search_by_order_cycle_name: "Eskaera-zikloaren izenean bilatu..."
+ involving: "Tartean sartzen"
+ any_enterprise: "Edozein erakunde"
+ any_schedule: "Edozein programazio"
+ form:
+ general_settings: "Konfigurazio orokorra"
+ incoming: Sartu-irtena
+ supplier: Hornitzailea
+ products: Produktuak
+ receival_details: Harreraren xehetasunak
+ fees: Batzordeak
+ outgoing: Irtena
+ distributor: Banatzailea
+ tags: Etiketak
+ add_a_tag: Add a tag
+ delivery_details: Bilketaren/Entregaren xehetasunak
+ index:
+ schedule: Programazioa
+ schedules: Programazioa
+ new_schedule: Programazio berria
+ new_schedule_tooltip: Harpidetza-eskaera egiteko maiztasuna.
+ name_and_timing_form:
+ name: Izena
+ orders_open: Eskaera irekiak
+ coordinator: Koordinatzailea
+ orders_close: Eskaerak ixtea
+ row:
+ suppliers: hornitzaileak
+ distributors: banatzaileak
+ variants: barietateak
+ simple_form:
+ ready_for: Egiteko prest
+ ready_for_placeholder: Eguna/ordua
+ customer_instructions: Kontsumitzailearen jarraibideak
+ customer_instructions_placeholder: Jasotze- edo entregatze-oharrak
+ products: Produktuak
+ fees: Batzordeak
+ tags: Tag-ak
+ destroy_errors:
+ orders_present: Eskaera-ziklo hori bezero batek hautatu du eta ezin da ezabatu. Bezeroak sar ez daitezen, itxi.
+ schedule_present: Eskaera-ziklo hori programazio bati lotuta dago eta ezin da ezabatu. Lehenengo programazioa bereizi edo ezabatzen du.
+ bulk_update:
+ no_data: Hm, zerbait gaizki atera da. Ez da eskaera-zikloaren daturik aurkitu.
+ date_warning:
+ msg: Eskaera-ziklo hau %{n} harpidetza-eskaera irekiei lotuta dago. Data hori orain aldatzeak ez du eraginik izango lehendik egindako eskaeretan, baina saihestu egin behar da, ahal bada. Ziur zaude jarraitu nahi duzula?
+ cancel: Ezeztatu
+ proceed: Ekin
+ status:
+ undated: Datarik gabe
+ upcoming: Hurbila
+ open: irekia
+ closed: itxita
+ producer_properties:
+ index:
+ title: Ekoizpen-etxearen propietateak
+ proxy_orders:
+ cancel:
+ could_not_cancel_the_order: Ezin izan da agindua bertan behera utzi
+ resume:
+ could_not_resume_the_order: Ezin izan da eskaera berriz hasi
+ select2:
+ searching: Bila...
+ no_matches: Ez da kointzidentziarik aurkitu
+ shared:
+ user_guide_link:
+ user_guide: Erabiltzailearen eskuliburua
+ enterprises_hubs_tabs:
+ has_no_payment_methods: " %{enterprise} k ez du ordaintzeko modurik"
+ has_no_shipping_methods: " %{enterprise} k ez du bidaltzeko metodorik"
+ has_no_enterprise_fees: " %{enterprise} k ez du antolaketa-batzorderik"
+ flashes:
+ dismiss: Ezestea
+ side_menu:
+ enterprise:
+ primary_details: "Xehetasun nagusiak"
+ address: "Helbidea"
+ contact: "Kontaktua"
+ social: "Soziala"
+ about: "Honi buruz"
+ business_details: "Erakundearen xehetasunak"
+ images: "Irudiak"
+ properties: "Propietateak"
+ shipping_methods: "Bidaltzeko metodoak"
+ payment_methods: "Ordaintzeko metodoak"
+ enterprise_fees: "Erakundearen batzordeak"
+ enterprise_permissions: "Erakundearen baimenak"
+ inventory_settings: "Inbentarioaren konfigurazioa"
+ tag_rules: "Etiketen arauak"
+ shop_preferences: "Dendaren konfigurazioa"
+ users: "Erabiltzaileak"
+ vouchers: Bonuak
+ white_label: "Etiketa zuria"
+ connected_apps: "Aplikazio konnektatuak"
+ enterprise_group:
+ primary_details: "Xehetasun nagusiak"
+ users: "Erabiltzaileak"
+ about: "Honi buruz"
+ images: "Irudiak"
+ contact: "Kontaktua"
+ web: "Web baliabideak"
+ enterprise_issues:
+ create_new: Sortu berria
+ resend_email: Birbidali e-maila
+ has_no_payment_methods: " %{enterprise} k gaur egun ez du ordaintzeko modurik"
+ has_no_shipping_methods: " %{enterprise} k ez du gaur egun bidaltzeko metodorik"
+ email_confirmation: "Posta elektronikoaren baieztapena egiteke dago. Baieztapen-mezu elektroniko bat bidali dugu %{email} helbidera. "
+ not_visible: " %{enterprise} ez da ikusten eta ezin da mapan edo bilaketetan aurkitu"
+ reports:
+ hidden: EZKUTUAN
+ unitsize: NEURRI-UNITATEA
+ total: GUZTIRA
+ total_items: ARTIKULUAK GUZTIRA
+ total_by_customer: Bezeroko, guztira
+ total_by_supplier: Hornitzaile bakoitzeko, guztira
+ supplier_totals: Eskaera-zikloko hornitzaileen guztizkoak
+ supplier_totals_by_distributor: Hornitzaileen guztizkoak eskaera-zikloaren banatzaile bakoitzeko
+ totals_by_supplier: Banatzailearen guztizkoak, eskaera-zikloen hornitzailearen arabera
+ customer_totals: Eskaera-zikloaren kontsumitzaileen guztizkoak
+ all_products: Produktu guztiak
+ inventory: Inbentarioa (eskuragarri)
+ lettuce_share: LettuceShare
+ payment_methods: Ordainketa-metodoen txostena
+ delivery: Entrega-txostena
+ tax_types: Zerga motak
+ tax_rates: Zergen %
+ pack_by_customer: Kontsumitzailearen araberako pack
+ pack_by_supplier: Pack hornitzaile bakoitzeko
+ pack_by_product: Paketatu produktuaren arabera
+ display:
+ display_anyway: "Erakutsi, nolanahi ere"
+ download:
+ button: "Txostena deskargatu"
+ show:
+ report_link_label: Txostena deskargatu (eskuragarri badago)
+ revenues_by_hub:
+ description: Sarrerak taldeko
+ orders_and_distributors:
+ name: Eskaerak eta banatzaileak
+ description: Banatzailearen xehetasunak dituzten eskaerak
+ bulk_coop:
+ name: Bulk Co-Op
+ description: Bulk Co-Op. eskaeretarako txostenak
+ payments:
+ name: Ordainketa-txostenak
+ description: Ordainketa-txostenak
+ orders_and_fulfillment:
+ name: Eskaerei eta banaketei buruzko txostenak
+ customers:
+ name: Kontsumitzaileak
+ products_and_inventory:
+ name: Produktuak & Inbentarioa
+ users_and_enterprises:
+ name: Erabiltzaileak eta erakundeak
+ description: Erakundearen jabetza eta egoera
+ order_cycle_management:
+ name: Eskaera-zikloaren kudeaketa
+ sales_tax:
+ name: Salmenta-zerga
+ xero_invoices:
+ name: Xero fakturak
+ description: Xeron inportatzeko fakturak
+ enterprise_fee_summary:
+ name: "Erakundeko batzordeen laburpena"
+ description: "Bildutako erakundearen batzordeen laburpena"
+ suppliers:
+ name: Hornitzaileak
+ errors:
+ no_report_type: "Mesedez, zehaztu txosten mota bat"
+ report_not_found: "Txostena ez da aurkitu"
+ missing_ransack_params: "Mesedez, eman Ransacken bilaketa-parametroak eskaeran"
+ hidden_field: "< Ezkutatuta >"
+ summary_row:
+ total: "GUZTIRA"
+ table:
+ select_and_search: "Aukeratu iragazkiak eta egin klik %{option} zure datuetara sartzeko."
+ headings:
+ hub: "Taldea"
+ customer_code: "Kodea"
+ first_name: "Izena"
+ last_name: "Abizena"
+ supplier: "Hornitzailea"
+ product: "Produktua"
+ variant: "Aldaera"
+ quantity: "Kopurua"
+ is_temperature_controlled: "Tenperatura-kontrola?"
+ temp_controlled: "Tenperatura-kontrola?"
+ price: "Prezioa"
+ rendering_options:
+ generate_report: "Sortu txostena"
+ on_screen: "Pantailan"
+ spreadsheet: "Kalkulu-orria (Excel, OpenOffice...)"
+ display: Erakutsi
+ summary_row: Laburpen-lerroa
+ header_row: Goiburuko lerroa
+ raw_data: Prozesatu gabeko datuak
+ formatted_data: Formateatutako datuak
+ packing:
+ name: "Paketatze-txostenak"
+ oidc_settings:
+ index:
+ connect: "Konektatu zure kontua"
+ disconnect: "Deskonektatu"
+ view_account: "Zure kontua ikusteko, ikusi:"
+ subscriptions:
+ index:
+ title: "Harpidetzak"
+ new: "Harpidetza berria"
+ issue: "Gorabehera"
+ new:
+ title: "Harpidetza berria"
+ edit:
+ title: "Editatu harpidetza"
+ table:
+ edit_subscription: Editatu harpidetza
+ pause_subscription: Harpidetzaren etenaldia
+ unpause_subscription: Harpidetza berriz hastea
+ cancel_subscription: Harpidetza ezeztatu
+ filters:
+ query_placeholder: "Posta elektronikoz bilatu..."
+ setup_explanation:
+ title: "Harpidetzak"
+ just_a_few_more_steps: 'Hasi baino lehen, urrats gutxi batzuk gehiago:'
+ enable_subscriptions: "Gaitu harpidetzak gutxienez zure dendetako baterako"
+ enable_subscriptions_step_1_html: 1. Zoaz %{enterprises_link} orrira, aurkitu zure denda eta sakatu "Administratu"
+ enable_subscriptions_step_2: 2. "Dendaren lehentasunak" atalean, gaitu Harpidetzak aukera
+ set_up_shipping_and_payment_methods_html: Konfiguratu metodoak %{shipping_link} eta %{payment_link}
+ set_up_shipping_and_payment_methods_note_html: Kontuan izan eskudirutan ordaintzeko metodoak eta Stripe bakarrik erabil daitezkeela harpidetzekin
+ ensure_at_least_one_customer_html: Ziurtatu gutxienez %bat dagoela {customer_link}
+ create_at_least_one_schedule: Gutxienez programazio bat sortzea
+ create_at_least_one_schedule_step_1_html: 1. Joan %{order_cycles_link} orrira
+ create_at_least_one_schedule_step_2: 2. Sortu eskaera-ziklo bat oraindik egin ez baduzu
+ create_at_least_one_schedule_step_3: 3. Egin klik '+ Programazio berria' botoian eta bete formularioa
+ once_you_are_done_you_can_html: Amaitutakoan, %{reload_this_page_link}
+ reload_this_page: kargatu orri hau
+ form:
+ create: "Harpidetza sortu"
+ steps:
+ details: 1. Oinarrizko xehetasunak
+ address: 2. Zuzendaritza
+ products: 3. Gehitu produktuak
+ review: 4. Berrikusi eta gorde
+ subscription_line_items:
+ this_is_an_estimate: |
+ Erakutsitako prezioak estimazio bat baino ez dira, eta harpidetza aldatzen den unean kalkulatzen dira.
+ Prezioak edo komisioak aldatzen badituzu, eskaerak eguneratu egingo dira, baina harpidetzak aurreko baloreak erakusten jarraituko du.
+ not_in_open_and_upcoming_order_cycles_warning: "Ez dago produktu honetarako eskaera-ziklo irekirik edo hurbilekorik."
+ autocomplete:
+ name_or_sku: "SKU IZENA EDO KODEA"
+ quantity: "Kopurua"
+ add: "Gehitu"
+ details:
+ details: Xehetasunak
+ invalid_error: Ups! Mesedez, bete eremu guztiak...
+ allowed_payment_method_types_tip: Une honetan eskudirutan eta Stripe bidez ordaintzeko metodoak baino ezin dira erabili
+ credit_card: Kreditu-txartela
+ charges_not_allowed: Karguak ez daude baimenduta kontsumitzaile horrentzat
+ no_default_card: Kontsumitzaileak ez du txartelik kargatzeko
+ card_ok: Kontsumitzaileak txartel bat du kargatzeko
+ begins_at_placeholder: "Aukeratu data bat"
+ ends_at_placeholder: "Aukerakoa"
+ loading_flash:
+ loading: HARPIDETZAK KARGATZEN
+ review:
+ details: Xehetasunak
+ address: Helbidea
+ products: Produktuak
+ no_open_or_upcoming_order_cycle: "Ez dago hurrengo eskaera-ziklorik"
+ products_panel:
+ save: "GORDE"
+ saving: "GORDETZEN"
+ saved: "GORDETA"
+ product_already_in_order: Produktu hori jada gehitu zaio aginduari. Mesedez, editatu kantitatea zuzenean.
+ stock:
+ insufficient_stock: "Stock erabilgarri eskasa"
+ out_of_stock: "Agortuta"
+ orders:
+ number: Zenbakia
+ confirm_edit: Ziur agindu hau editatu nahi duzula? Egiten baduzu, zailagoa izan daiteke etorkizunean harpidetza aldaketak automatikoki sinkronizatzea.
+ confirm_cancel_msg: "Ziur harpidetza hau bertan behera utzi nahi duzula? Ekintza hori ezin da desegin. "
+ cancel_failure_msg: "Sentitzen dugu, ezerezteak huts egin du!"
+ confirm_pause_msg: "Ziur zaude harpidetza hau eten nahi duzula?"
+ pause_failure_msg: "Sentitzen dugu, pausatzeak huts egin du!"
+ confirm_unpause_msg: "Harpidetza honen programazioan eskaera-ziklo bat irekita baduzu, eskaera bat sortuko da kontsumitzaile honentzat. Ziur zaude harpidetza honen etenaldia deuseztatu nahi duzula? "
+ unpause_failure_msg: "Sentitzen dugu, ezin izan da berriro hasi!"
+ confirm_cancel_open_orders_msg: "Harpidetza honetarako agindu batzuk irekita daude gaur egun. Bezeroari eskaera egingo zaiola jakinarazi zaio. Eskaera horiek ezeztatu edo gorde nahi dituzu? "
+ resume_canceled_orders_msg: "Harpidetza honen eskaera batzuk une honetan berriz has daitezke. Eskaeren goitibeherako menutik berrabiarazi ditzakezu. "
+ yes_cancel_them: Ezeztatu
+ no_keep_them: Gorde itzazu.
+ yes_i_am_sure: Bai, ziur nago
+ number: "Zenbakia"
+ order_update_issues_msg: Agindu batzuk ezin izan ziren automatikoki eguneratu, eta litekeena da hori eskuz editatu direlako. Berrikusi ondoren zehazten diren arazoak, eta doikuntzak egin eskaera indibidualei, beharrezkoa bada.
+ no_results:
+ no_subscriptions: Oraindik ez dago harpidetzarik...
+ why_dont_you_add_one: Zergatik ez duzu bat gehitzen?:)
+ no_matching_subscriptions: Ez da aurkitu bat datozen harpidetzarik
+ schedules:
+ destroy:
+ associated_subscriptions_error: Ordutegi hori ezin da ezabatu harpidetza elkartuak dituelako
+ vouchers:
+ new:
+ legend: Bonu berria
+ back: Atzera
+ save: Gorde
+ voucher_code: Sustapen-kodea
+ voucher_amount: Kopurua
+ controllers:
+ enterprises:
+ stripe_connect_cancelled: "Striperako konexioa bertan behera geratu da"
+ stripe_connect_success: "Stripe kontua behar bezala konektatu da"
+ stripe_connect_fail: Sentitzen dugu, Stripe kontuaren konexioak huts egin du
+ stripe_connect_settings:
+ resource: Stripe Connect konfiguratzea
+ api:
+ invalid_api_key: "Zehaztutako API giltza ( %{key}) baliogabea da."
+ unauthorized: "Ez duzu baimenik ekintza hau egiteko."
+ invalid_resource: "Errekurtso baliogabea. Mesedez, zuzendu akatsak eta saiatu berriro. "
+ resource_not_found: "Bilatzen ari nintzen baliabidea ezin da aurkitu."
+ enterprise_logo:
+ destroy_attachment_does_not_exist: "Logotipoa ez da existitzen"
+ enterprise_promo_image:
+ destroy_attachment_does_not_exist: "Sustapen-irudia ez da existitzen"
+ enterprise_terms_and_conditions:
+ destroy_attachment_does_not_exist: "Terminoen eta baldintzen artxiboa ez da existitzen"
+ orders:
+ failed_to_update: "Errorea eskaera eguneratzean"
+ query_param:
+ error:
+ title: Okerreko kontsulta-parametroa
+ extra_fields: "Jasan gabeko eremuak: %{fields}"
+ checkout:
+ failed: "Erosketa amaitzeak huts egin zuen, mesedez, jarri gurekin harremanetan agindua prozesatzeko."
+ payment_cancelled_due_to_stock: "Ordainketa ezeztatuta: ezin izan zen ordainketa osatu stock-arazoak zirela eta."
+ order_not_loaded: "Ez da aurkitu ordainketa prozesatzeko baliozko eskaerarik"
+ your_details_without_number: Xehetasunak
+ payment_method_without_number: Ordaintzeko modua
+ order_summary_without_number: Eskaeraren laburpena
+ already_ordered:
+ cart: "gurditxoa"
+ message_html: "Eskaera bat egin duzu eskaera-ziklo honetarako. Egiaztatu %{cart}, eskatu zenituen artikuluak ikusteko. Halaber, artikuluak ezeztatu ahal izango duzu eskaera zikloa irekita dagoen bitartean. "
+ step1:
+ contact_information:
+ title: Harremanetarako informazioa
+ email:
+ label: Emaila
+ phone:
+ label: Telefono zenbakia
+ billing_address:
+ title: Kobratzeko helbidea
+ first_name:
+ label: Izena
+ last_name:
+ label: Abizena
+ address:
+ address1:
+ label: Helbidea (kalea + etxearen zenbakia)
+ address2:
+ label: Helbide gehigarriaren informazioa (aukerakoa)
+ city:
+ label: Hiria
+ state_id:
+ label: Egoera
+ zipcode:
+ label: Posta-kodea
+ country_id:
+ label: Herrialdea
+ shipping_info:
+ title: Bidaltzeko informazioa
+ submit: Hurrengoa - Ordaintzeko modua
+ cancel: Itzuli saskia editatzera
+ step2:
+ payment_method:
+ title: Ordaintzeko modua
+ form:
+ card_number:
+ label: Txartelaren zenbakia
+ placeholder: 4242 4242 4242 4242
+ card_verification_value:
+ label: LEK
+ card_month:
+ label: Hila
+ card_year:
+ label: Urtea
+ stripe:
+ use_saved_card: Gordetako txartela erabiltzea
+ use_new_card: Sartu zure txartelaren identifikatzaileak
+ save_card: Gorde txartela etorkizunean erabiltzeko
+ create_new_card: edo sartu txartel berriaren xehetasunak jarraian
+ explaination: Zure eskaera berrikusteko eta berresteko aukera duzu hurrengo urratsean, azken kostuak barne.
+ submit: Hurrengoa - Eskaeraren laburpena
+ cancel: Itzuli Zure informazioa atalera
+ step3:
+ delivery_details:
+ title: Entregaren xehetasunak
+ edit: Editatu
+ address: Entregatzeko helbidea
+ instructions: Jarraibideak
+ payment_method:
+ title: Ordaintzeko modua
+ edit: Editatu
+ instructions: Jarraibideak
+ order:
+ title: Eskaeraren xehetasunak
+ edit: Editatu
+ terms_and_conditions:
+ message_html: "Saltzailearen %{terms_and_conditions_link} onartzen dut."
+ link_text: "Terminoak eta baldintzak"
+ platform_terms_of_service:
+ message_html: "Plataformako %{tos_link} onartzen ditut."
+ all_terms_and_conditions:
+ message_html: "Saltzailearen %{terms_and_conditions_link} eta %{tos_link} plataforma onartzen ditut."
+ terms_and_conditions: "Terminoak eta baldintzak"
+ submit: Eskaera osatu
+ cancel: Itzuli Ordaintzeko modua atalera
+ errors:
+ saving_failed: "Errorea gordetzean, eguneratu nabarmendutako eremuak."
+ terms_not_accepted: Mesedez, onartu baldintzak
+ required: Espazioa ezin da hutsik egon
+ invalid_number: "Mesedez, sartu telefono zenbaki baliodun bat"
+ invalid_email: "Sartu baliozko mezu elektroniko bat"
+ select_a_shipping_method: Hautatu bidalketa-metodoa
+ select_a_payment_method: Hautatu ordainketa-metodoa
+ voucher_not_found: Ez da aurkitu
+ shops:
+ hubs:
+ show_closed_shops: "Denda itxiak erakutsi"
+ hide_closed_shops: "Denda itxiak ezkutatu"
+ show_on_map: "Ikusi denak mapan"
+ shared:
+ mailers:
+ powered_by:
+ open_food_network: "Open Food Network"
+ powered_html: "Zure erosketa-esperientziaren bultzatzailea %{open_food_network} da."
+ menu:
+ cart:
+ cart: "Gurditxoa"
+ cart_sidebar:
+ checkout: "Balidatu"
+ edit_cart: "Editatu orgatxoa"
+ items_in_cart_singular: " %{num} artikulu bere orgatxoan"
+ items_in_cart_plural: " %{zenbaki} artikulu bere orgatxoan"
+ close: "Itxi"
+ cart_empty: "Zure gurditxoa hutsik dago"
+ take_me_shopping: "Eraman nazazu erosketak egitera!"
+ signed_in:
+ profile: "Profila"
+ mobile_menu:
+ cart: "Gurditxoa"
+ register_call:
+ selling_on_ofn: "Interesa duzu Open Food Network-en sartzeko?"
+ register: "Erregistratu hemen"
+ footer:
+ footer_secure: "Segurua eta konfiantzazkoa."
+ footer_secure_text: "Open Food Network-ek SSL (2048 biteko RSA) zifratua erabiltzen du bere plataforma osoan, erosketei eta ordainketei buruzko informazioa pribatu mantentzeko. Gure zerbitzariek ez dituzte kreditu-txartelen xehetasunak gordetzen, eta ordainketak PCI betetzen duten zerbitzuengatik prozesatzen dira. "
+ footer_contact_headline: "Harremanetan egon"
+ footer_contact_email: "Bidal iezaguzu mezu elektroniko bat"
+ footer_nav_headline: "Nabigatu"
+ footer_join_headline: "Elkartu"
+ footer_join_body: "Sortu zerrenda bat, denda bat edo direktorio bat Open Food Network-en."
+ footer_join_cta: "Kontatu gehiago!"
+ footer_legal_call: "Irakurri gureak"
+ footer_legal_visit: "Aurkitu gaitzazu"
+ footer_legal_text_html: "Open Food Network plataforma librea eta kode irekikoa da. Gure edukiak %{content_license} lizentzia du eta gure %{code_license} kodea. "
+ footer_data_text_with_privacy_policy_html: "Ondo zaintzen ditugu zure datuak. Kontsultatu gure %{privacy_policy} eta %{cookies_policy} "
+ footer_data_text_without_privacy_policy_html: "Ondo zaintzen ditugu zure datuak. Kontsultatu gure %{cookies_policy} "
+ footer_data_privacy_policy: "pribatutasun-politika"
+ footer_data_cookies_policy: "cookie-politika"
+ shop:
+ messages:
+ customer_required:
+ login: "login"
+ contact: "harremanetan jarri"
+ require_customer_login: "Onartutako kontsumitzaileak bakarrik sar daitezke denda honetara."
+ require_login_2_html: "Denda honetan erosi nahi duzu? %{contact} %{enterprise} eta zure onarpena eskatzen du."
+ require_customer_html: "Hemen erosten hasi nahi baduzu, mesedez, %{contact} %{enterprise} sartzeari buruz galdetzeko."
+ select_oc:
+ select_oc_html: "Mesedez, zure eskaera noiz nahi duzun aukeratu behar duzu, zer produktu dauden eskuragarri ikusteko. "
+ products:
+ summary:
+ bulk: "Taldekatu"
+ card_could_not_be_updated: Txartela ezin izan da eguneratu
+ card_could_not_be_saved: txartela ezin izan da gorde
+ spree_gateway_error_flash_for_checkout: "Arazo bat izan zen zure ordainketa-informazioarekin: %{errorea}"
+ invoice_billing_address: "Fakturazio-helbidea:"
+ invoice_column_tax: "Ondasun eta zerbitzuen gaineko zerga"
+ invoice_column_price: "Prezioa"
+ invoice_column_item: "Artikulua"
+ invoice_column_qty: "Kopurua"
+ invoice_column_unit_price_with_taxes: "Unitateko prezioa (zergak barne)"
+ invoice_column_unit_price_without_taxes: "Unitateko prezioa (zergarik gabe)"
+ invoice_column_price_with_taxes: "Prezioa guztira (zergak barne)"
+ invoice_column_price_without_taxes: "Prezioa guztira (zergarik gabe)"
+ invoice_column_tax_rate: "Zergen %"
+ invoice_tax_total: "BEZ guztira:"
+ tax_invoice: "ZERGEN FAKTURA"
+ tax_total: "Zergak guztira ( %{rate}):"
+ invoice_shipping_category_delivery: "Entrega"
+ invoice_shipping_category_pickup: "Jaso"
+ total_excl_tax: "Guztira (zergarik gabe):"
+ total_incl_tax: "Guztira (zergak barne)"
+ abn: "IFZ:"
+ acn: "ACN:"
+ invoice_issued_on: "Jaulkitako faktura:"
+ order_number: "Eskaera-zenbakia:"
+ date_of_transaction: "Transakzio-data:"
+ menu_1_title: "Dendak"
+ menu_1_url: "/ shops"
+ menu_2_title: "Mapa"
+ menu_2_url: "/ map"
+ menu_3_title: "Ekoizleak"
+ menu_3_url: "/ ekoizleak"
+ menu_4_title: "Sareak"
+ menu_4_url: "/ groups"
+ menu_5_title: "Honi buruz"
+ menu_5_url: "http://katuma.org /"
+ menu_6_title: "Konektatu"
+ menu_7_title: "Ikasi"
+ logo: "Logoa (640x130)"
+ logo_mobile: "Mugikorrerako logoa (75x26)"
+ logo_mobile_svg: "Mugikorrerako logoa (SVG)"
+ home_hero: "Hero image"
+ home_show_stats: "Erakutsi estatistikak"
+ footer_logo: "Logoa (220x76)"
+ footer_facebook_url: "Facebookeko URLa"
+ footer_twitter_url: "Twitterreko URLa"
+ footer_instagram_url: "Instagrameko URLa"
+ footer_linkedin_url: "LinkedInen URLa"
+ footer_googleplus_url: "Google Pluseko URLa"
+ footer_pinterest_url: "Pinterest URLa"
+ footer_email: "Posta elektronikoa"
+ footer_links_md: "Loturak"
+ footer_about_url: "URL buruz"
+ user_guide_link: "Erabiltzailearen gidaren esteka"
+ name: Izena
+ first_name: Izena
+ last_name: Abizena
+ email: Posta elektronikoa
+ phone: Telefonoa
+ next: Hurrengoa
+ address: Helbidea
+ address_placeholder: adib. Carrer Torrent de l'Olla
+ address2: Helbidea (kont.)
+ city: Hiria
+ city_placeholder: adib. Bartzelona
+ latitude: Latitudea
+ latitude_placeholder: adib. -37.4713077
+ latitude_longitude_tip: Latitudea eta longitudea beharrezkoak dira mapan bere antolaketa erakusteko.
+ longitude: Luzera
+ longitude_placeholder: adib. 144.7851531
+ use_geocoder: Kalkulatu latitudea eta longitudea automatikoki helbidetik?
+ state: Egoera
+ postcode: Posta-kodea
+ postcode_placeholder: adib. 08025
+ suburb: Auzoa
+ country: Herrialdea
+ unauthorized: Baimenik gabe
+ terms_of_service: "Zerbitzu-baldintzak"
+ on_demand: Eskariaren arabera
+ not_allowed: Ez da onartzen
+ no_shipping: Bidaltzeko metodorik gabe
+ no_payment: Ordaintzeko metodorik gabe
+ no_shipping_or_payment: Bidalketarik eta ordainketa-metodorik gabe
+ unconfirmed: baieztatu gabe
+ days: egunak
+ authorization_failure: "Baimen-akatsa"
+ description: "Deskribapena"
+ label_shop: "Denda"
+ label_shops: "Dendak"
+ label_map: "Mapa"
+ label_producer: "Ekoizlea"
+ label_producers: "Ekoizleak"
+ label_groups: "Sareak"
+ label_about: "Honi buruz"
+ label_blog: "Bloga"
+ label_support: "Euskarria"
+ label_shopping: "Denda"
+ label_login: "Saioa hasi"
+ label_logout: "Saioa itxi"
+ label_signup: "Erregistratu"
+ label_administration: "Administrazioa"
+ label_admin: "Admin"
+ label_account: "Kontua"
+ label_more: "Erakutsi gehiago"
+ label_less: "Erakutsi gutxiago"
+ cart_items: "elementuak"
+ cart_headline: "Zure erosketa-orgatxoa"
+ total: "Guztira"
+ cart_updating: "Gurditxoa eguneratzen..."
+ cart_empty: "Gurditxo hutsa"
+ cart_edit: "Editatu orgatxoa"
+ item: "Artikulua"
+ qty: "Kopurua"
+ card_number: Txartelaren zenbakia
+ card_securitycode: "Segurtasun-kodea"
+ card_expiry_date: Iraungitze-data
+ card_masked_digit: "X"
+ card_expiry_abbreviation: "Esp."
+ new_credit_card: "Kreditu-txartel berria"
+ my_credit_cards: Nire kreditu-txartelak
+ add_new_credit_card: Kreditu-txartel berria gehitu
+ saved_cards: Gordetako txartelak
+ add_a_card: Gehitu txartel bat
+ add_card: Gehitu txartela
+ you_have_no_saved_cards: Oraindik ez duzu txartelik gorde.
+ saving_credit_card: Kreditu-txartela gordetzen...
+ card_has_been_removed: "Zure txartela ezabatu da (zenbakia: %{number})"
+ card_could_not_be_removed: Sentitzen dugu, txartela ezin izan da kendu
+ invalid_credit_card: "Kreditu-txartel baliogabea"
+ legal:
+ cookies_policy:
+ header: "Nola erabiltzen ditugu cookieak"
+ desc_part_1: "Cookieak testu-fitxategi oso txikiak dira, eta zure ordenagailuan gordetzen dira webgune batzuk bisitatzen dituzunean."
+ desc_part_2: "OFNn errespetuz jokatzen dugu zure pribatutasunarekin. Elikagaiak online salerosteko zerbitzua eskaintzeko beharrezkoak diren cookieak bakarrik erabiltzen ditugu. Ez dugu zure daturik saltzen. Baliteke etorkizunean zure daturen bat partekatzea proposatzea, ekosistemarako baliagarriak izan daitezkeen zerbitzu komun berriak sortzeko (adibidez, elikadura-sistema laburretarako zerbitzu logistikoak), baina oraindik ez gara puntu horretara iritsi, eta ez dugu egingo zure baimenik gabe: -) "
+ desc_part_3: "Cookieak erabiltzen ditugu, batez ere, 'saioa hasten baduzu' nor zaren gogoratzeko edo zure orgatxoan jartzen dituzun artikuluak gogoratzeko, saioa hasi ez baduzu ere. Webgunean nabigatzen jarraitzen baduzu\"Cookieak onartu\" klik egin gabe, suposatzen dugu baimena ematen diguzula webgunearen funtzionamendurako funtsezkoak diren cookieak gordetzeko. Hona hemen erabiltzen ditugun cookien zerrenda! "
+ essential_cookies: "Funtsezko cookieak"
+ essential_cookies_desc: "Cookie hauek behar-beharrezkoak dira gure webgunearen funtzionamendurako."
+ essential_cookies_note: "Cookie gehienek identifikatzaile bakarra dute, baina ez beste datu batzuk, eta, beraz, haien helbide elektronikoa eta pasahitza, adibidez, ez dira inoiz sartzen eta ez dira azaltzen."
+ cookie_domain: "Nork ezarria:"
+ cookie_session_desc: "Webgunea bisiten artean erabiltzaileei gogorarazteko erabiltzen da; adibidez, zure orgatxoko artikuluak gogoratzeko."
+ cookie_consent_desc: "Cookieak gordetzeko erabiltzailearen baimenaren egoera mantentzeko erabiltzen da"
+ cookie_remember_me_desc: "Erabiltzaileak webgunea gogorarazteko eskatu badu erabiltzen da. Cookie hau automatikoki ezabatzen da 12 egunen ondoren. Erabiltzaile gisa cookie hori ezabatzea nahi baduzu, deskonektatu besterik ez duzu egin behar. Cookiea zure ordenagailuan instalatzea nahi ez baduzu, ez duzu\"gogoratu\" laukitxoa markatu behar saioa hastean. "
+ cookie_openstreemap_desc: "Kode irekiko mapaketa (OpenStreetMap) gure lagun hornitzaileak erabiltzen du denbora jakin batean eskaera gehiegi jasotzen ez dituzula bermatzeko, bere zerbitzuen abusua saihesteko."
+ cookie_stripe_desc: "Stripe gure ordainketa-prozesadoreak bildutako datuak, iruzurrak detektatzeko https://stripe.com/cookies-policy/legal. Denda guztiek ez dute Stripe erabiltzen ordaintzeko metodo gisa, baina jardunbide egokia da iruzurrik ez egitea orrialde guztietan. Stripek, ziur aski, irudi bat sortzen du gure orrialdeetako zeinek elkarreragiten duten normalean bere APIarekin, eta, ondoren, ezohiko edozer markatzen du. Beraz, Stripe cookiea konfiguratzeak erabiltzaile bati ordaintzeko metodo bat hornitze hutsak baino funtzio zabalagoa du. Ezabatzeak zerbitzuaren segurtasunari eragin diezaioke. Striperi buruzko informazio gehiago jaso dezakezu eta pribatutasun-politika irakurri hemen: https://stripe.com/privacy. "
+ statistics_cookies: "Estatistiken cookieak"
+ statistics_cookies_desc: "Hurrengoak ez dira behar-beharrezkoak, baina erabiltzaile-esperientzia hobea ematen laguntzen dute, erabiltzailearen portaera aztertzeko, zer funtzio erabiltzen dituen identifikatzeko, erabiltzailearen esperientziaren arazoak ulertzeko, etab."
+ statistics_cookies_matomo_desc_html: "Plataformaren erabilera-datuak biltzeko eta aztertzeko, Matomo (ex Piwik) erabiltzen dugu, kode irekiko tresna analitiko bat, GDPR betetzen duena eta zure pribatutasuna babesten duena "
+ statistics_cookies_matomo_optout: "Matomo Analyticsetik kanpo utzi nahi al duzu zeure burua? Ez dugu datu pertsonalik biltzen eta Matomok gure zerbitzua hobetzen laguntzen digu, baina zure aukera errespetatzen dugu: -) "
+ cookie_matomo_basics_desc: "Jatorrizko cookie-ak estatistikak biltzeko."
+ cookie_matomo_heatmap_desc: "Matomo Heatmap eta cookieak grabatzeko saioa."
+ cookie_matomo_ignore_desc: "Erabiltzailea arakatua izatetik baztertzeko erabiltzen den cookiea."
+ disabling_cookies_header: "Cookien desaktibazioari buruzko ohartarazpena"
+ disabling_cookies_desc: "Erabiltzaile zaren aldetik, Open Food Networkeko edo beste edozein webgunetako cookieak baimendu, blokeatu edo ezabatu ditzakezu beti, nahi duzunean, zure nabigatzailearen konfigurazio-kontrolaren bidez. Nabigatzaile bakoitzak eragiketa bat du. Hona hemen estekak: "
+ disabling_cookies_firefox_link: "https://support.mozilla.org/es/kb/habilitar-y-deshabilitar-cookies-sitios-web-rastrear-preferencias"
+ disabling_cookies_chrome_link: "https://support.google.com/chrome/answer/95647"
+ disabling_cookies_ie_link: "https://support.microsoft.com/es-es/help/17442/windows-internet-explorer-delete-manage-cookies"
+ disabling_cookies_safari_link: "https://www.apple.com/legal/privacy/es/cookies /"
+ disabling_cookies_note: "Baina kontuan izan Open Food Networkek erabiltzen dituen funtsezko cookieak ezabatzen edo aldatzen baditu, webguneak ez duela funtzionatuko, ezingo duela orgatxoan ezer gehitu edo eskaerarik egin, adibidez."
+ cookies_banner:
+ cookies_usage: "Webgune honek cookieak erabiltzen ditu nabigazioa arina eta segurua izan dadin, eta nola erabiltzen duen ulertzen laguntzeko, eskaintzen ditugun funtzioak hobetzeko."
+ cookies_definition: "Cookieak testu-fitxategi oso txikiak dira, eta zure ordenagailuan gordetzen dira webgune batzuk bisitatzen dituzunean."
+ cookies_desc: "Elikagaiak online saltzeko/erosteko zerbitzua eskaintzeko beharrezkoak diren cookieak bakarrik erabiltzen ditugu. Ez dugu zure daturik saltzen. Cookieak erabiltzen ditugu, batez ere, gogoan izateko nor zaren zerbitzuan 'saioa hasten' baduzu, edo zure orgatxoan jarri zenituen artikuluak gogoratu ahal izateko, saioa hasi ez baduzu ere. Webgunean nabigatzen jarraitzen baduzu\"Cookieak onartu\" n klik egin gabe, onartzen dugu baimena ematen digula webgunearen funtzionamendurako funtsezkoak diren cookieak gordetzeko. "
+ cookies_policy_link_desc: "Informazio gehiago nahi izanez gero, kontsultatu gure"
+ cookies_policy_link: "cookie-politika"
+ cookies_accept_button: "Cookieak onartu"
+ home_shop: Erosi orain
+ brandstory_headline: "Kontsumitu balioekin."
+ brandstory_intro: "Batzuetan sistema konpontzeko modurik onena berria hastea da..."
+ brandstory_part1: "Gu behetik hasi ginen. Nekazariak eta ekoizleak prest beren istorioak harrotasunez eta benetakotasunez kontatzeko. Banatzaileak prest daude produktuak dituen jendea modu zuzen eta zintzoan konektatzeko. Erosleek uste asteroko erosketen erabaki hobeak serioski mundua alda dezakete. "
+ brandstory_part2: "Gero, egia bihurtzeko modu bat behar dugu. Janaria ekoizten, saltzen eta erosten duten guztiak ahalduntzeko modu bat. Istorio guztiak kontatzeko modu bat, logistika guztiak maneiatzeko modu bat. Transakzioa egunero transformazio bihurtzeko modu bat. "
+ brandstory_part3: "Orduan, joko-zelaia berdintzen duen merkatu bat eraiki genuen. Gardena da, eta benetako erlazioak sortzen ditu. Kode irekikoa da, beraz, denak dira jabeak."
+ brandstory_part4: "Edonon dabil. Dena aldatzen du."
+ brandstory_part5_strong: "Open Food Network deitzen diogu."
+ brandstory_part6: "Denok maite dugu janaria. Orain gure janari-sistema ere maita dezakegu. "
+ system_headline: "Erosketak - nola funtzionatzen duten."
+ system_step1: "1. Bilatu "
+ system_step1_text: "Bilatu bertako eta sasoiko janaria gure denda askotariko eta independenteetan. Udalerriaren arabera bilatzen du eta kontsumo-talde batean parte hartzen du. "
+ system_step2: "2. Erosi "
+ system_step2_text: "Eraldatu zure kontsumoa tokiko janariarekin eta hainbat ekoizleren eskuragarriarekin. Ezagutu zure janariaren atzeko istorioak eta janaria egiten duen jendea!"
+ system_step3: "3. Bilketa "
+ system_step3_text: "Bisitatu zure Kontsumo Taldea, produkzio-etxeekin eta zure bizilagunekin lotura zuzenagoa izateko, eta zuzenean eros diezaiekezu zenbait produkzio-etxeri edo erosketa-zentrali. Erosi zure janaria natura bezain era ezberdinean. "
+ cta_headline: "Mundua leku hobea egiten duten erosketak."
+ cta_label: "Prest nago"
+ stats_headline: "Denon artean ekoizpen, banaketa eta kontsumo sistema berri bat sortu genuen."
+ stats_producers: "ekoizleak"
+ stats_shops: "dendak"
+ stats_shoppers: "kontsumitzaileak"
+ stats_orders: "eskaerak"
+ checkout_title: Orga balidatzea
+ checkout_now: Balidatu orgatxoa orain
+ checkout_order_ready: Eskaera prest dago
+ checkout_hide: Ezkutatu
+ checkout_expand: Hedatu
+ checkout_headline: "Ondo dago, prest eskaera egiteko?"
+ checkout_as_guest: "Gonbidatu gisa eskaera egitea"
+ checkout_details: "Xehetasunak"
+ checkout_billing: "Kobrantzari buruzko informazioa"
+ checkout_default_bill_address: "Gorde fakturazio-helbide lehenetsi gisa"
+ checkout_shipping: Bidaltzeko informazioa
+ checkout_default_ship_address: "Gorde lehenetsitako bidalketa-helbide gisa"
+ checkout_method_free: Dohainik
+ checkout_address_same: Entregatzeko helbidea kobratzeko helbidearen berdina da?
+ checkout_ready_for: "Prest:"
+ checkout_instructions: "Iruzkin edo asmakizun berezirik?"
+ checkout_payment: Ordainketa
+ checkout_send: Egin eskaera orain
+ checkout_your_order: Zure eskaera
+ checkout_cart_total: Orgatxoa, guztira
+ checkout_shipping_price: Bidalketa
+ checkout_total_price: Guztira
+ checkout_back_to_cart: "Itzuli gurditxora"
+ cost_currency: "Moneta"
+ order_paid: ORDAINDUA
+ order_not_paid: ORDAINDU GABE
+ order_total: Eskaera, guztira
+ order_payment: "Honekin ordainduz:"
+ order_billing_address: Kobratzeko helbidea
+ order_delivery_on: 'Entregatu hemen:'
+ order_delivery_address: Entregatzeko helbidea
+ order_delivery_time: Entregatzeko denbora
+ order_special_instructions: "Bere oharrak:"
+ order_pickup_time: Biltzeko prest
+ order_pickup_instructions: Biltzeko jarraibideak
+ order_produce: Produktuak
+ order_amount_paid: Ordaindutako kopurua
+ order_total_price: Guztira
+ order_balance_due: Zor den saldoa
+ order_includes_tax: (zerga barne)
+ order_payment_paypal_successful: Bere ordainketa PayPal-en bidez arrakastaz prozesatu da.
+ order_hub_info: Taldearen informazioa
+ order_back_to_store: Dendara itzuli
+ order_back_to_cart: Gurditxora itzuli
+ order_back_to_website: Itzuli webgunera
+ checkout_summary_title: Kutxaren laburpena
+ bom_tip: "Erabili orri hau produktuaren kantitatea aldatzeko hainbat eskaeratan aldi berean. Produktuak eskaeretatik ken daitezke, beharrezkoa bada. "
+ unsaved_changes_warning: "Aldaketak ez dira gorde, galdu egingo dira jarraitzen baduzu."
+ unsaved_changes_error: "Ertz gorriak dituzten eremuek akatsak dituzte."
+ products: "Produktuak"
+ products_in: "%tan {oc}"
+ products_at: "%tan {distributor}"
+ products_elsewhere: "Beste leku batzuetan aurkitutako produktuak"
+ email_confirmed: "Eskerrik asko helbide elektronikoa berresteagatik."
+ email_confirmation_activate_account: "Zure kontu berria aktibatu aurretik, zure helbide elektronikoa berretsi behar dugu."
+ email_confirmation_greeting: "Kaixo, %{contact}!"
+ email_confirmation_profile_created: " %{name} rako profil bat sortu zen arrakastaz! Zure profila aktibatzeko, posta-helbide hau berretsi behar dugu. "
+ email_confirmation_click_link: "Mesedez, egin klik beheko estekan posta elektronikoa berresteko eta zure profila konfiguratzen jarraitzeko."
+ email_confirmation_link_label: "Berretsi mezu elektroniko hau"
+ email_confirmation_help_html: "Posta elektronikoa baieztatu ondoren, zure administrazio-kontuan sar zaitezke erakunde honetarako. Bisita ezazu %{link}, %{sitename} ren ezaugarriei buruzko informazio gehiago aurkitzeko, eta has zaitez zure profila edo online denda erabiltzen. "
+ email_confirmation_notice_unexpected: "Mezu hau jasotzen duzu %{sitename} (e) n erregistratu zarelako edo ziurrenik ezagutzen duzun norbaitek izena ematera gonbidatu zaituelako. Ez baduzu ulertzen zergatik ari zaren posta elektroniko hori jasotzen, idatzi %{contact} helbidera. "
+ email_social: "Konektatu gurekin:"
+ email_contact: "Bidali mezu elektroniko bat:"
+ email_signoff: "Agur bero bat."
+ email_signature: " %{sitename} -ko ekipoa"
+ email_confirm_customer_greeting: "Kaixo %{name},"
+ email_confirm_customer_intro_html: "Eskerrik asko %{distributor}erosteagatik! "
+ email_confirm_customer_number_html: "Eskaera berrestea # %{number}"
+ email_confirm_customer_details_html: "Hona hemen zure %{distributor}eskaeraren xehetasunak: "
+ email_confirm_customer_signoff: "Agur bero bat,"
+ email_confirm_shop_greeting: "Kaixo %{name},"
+ email_confirm_shop_order_html: "Ederki! Eskaera berri bat du %{distributor} tan! "
+ email_confirm_shop_number_html: "Eskaera berrestea # %{number}"
+ email_order_summary_item: "Artikulua"
+ email_order_summary_quantity: "Kopurua"
+ email_order_summary_sku: "SKU"
+ email_order_summary_price: "Prezioa"
+ email_order_summary_subtotal: "Subtotala:"
+ email_order_summary_total: "Guztira:"
+ email_order_summary_includes_tax: "(zergak barne):"
+ email_payment_paid: ORDAINDUA
+ email_payment_not_paid: ORDAINDU GABE
+ email_payment_description: Erosketaren ordainketaren deskribapena
+ email_payment_summary: Ordainketaren laburpena
+ email_payment_method: "Honekin ordainduz:"
+ email_so_placement_intro_html: "Eskaera berri bat du , %{distributor} duena "
+ email_so_placement_details_html: "Hona hemen zure eskariaren xehetasunak %{distributor} rako: "
+ email_so_placement_changes: "Zoritxarrez, eskatu zenituen produktu guztiak ez zeuden eskuragarri. Eskatu zenituen jatorrizko kopuruak jarraian ezabatuta agertzen dira. "
+ email_so_payment_success_intro_html: "Ordainketa automatiko bat prozesatu da %{distributor} tik eskatzeko. "
+ email_so_placement_explainer_html: "Agindu hau automatikoki sortu zen zuretzat."
+ email_so_edit_true_html: "Aldaketak egin ditzakezu eskaerak %{orders_close_at} mailan itxi arte. "
+ email_so_edit_false_html: "Eskaera honen xehetasunak edozein unetan ikus ditzakezu. "
+ email_so_contact_distributor_html: "Galderaren bat baduzu, %{distributor} harremanetan jar zaitezke %{email} ren bidez. "
+ email_so_contact_distributor_to_change_order_html: "Eskaera hau automatikoki sortu duzu. Aldaketak egin ditzakezu eskaerak %{orders_close_at} an itxi arte, < strong> %{distributor} harremanetan jarriz %{email} ren bidez. "
+ email_so_confirmation_intro_html: "Zure eskaera %{distributor} rekin, orain baieztatuta dago "
+ email_so_confirmation_explainer_html: "Eskaera hau automatikoki jarri zen zuretzat, eta orain amaitu da."
+ email_so_confirmation_details_html: "Hemen aurkituko duzu zure eskaerari buruz jakin behar duzun guztia %{distributor}: "
+ email_so_empty_intro_html: "Beste eskaera bat egiten saiatu ginen %{distributor} rekin, baina arazo batzuk izan genituen... "
+ email_so_empty_explainer_html: "Zoritxarrez, agindu zituen produktuetako bat ere ez zegoen eskuragarri, eta, beraz, ez zen eskaririk egin. Eskatu zenituen jatorrizko kopuruak jarraian ezabatuta agertzen dira. "
+ email_so_empty_details_html: "Hona hemen %{distributor} rako egin ez den eskaeraren xehetasunak: "
+ email_so_failed_payment_intro_html: "Ordainketa bat prozesatzen saiatu ginen, baina arazo batzuk izan genituen..."
+ email_so_failed_payment_explainer_html: "Zure harpidetza %{distributor} batekin ordaintzeak huts egin du zure kreditu-txartelarekin izandako arazo baten ondorioz. %{distributor} k ordainketa huts horren jakinarazpena jaso du. "
+ email_so_failed_payment_details_html: "Hona hemen ordainketa-pasabideak emandako akatsaren xehetasunak:"
+ email_shipping_delivery_details: Entregaren xehetasunak
+ email_shipping_delivery_time: "Entregatu hemen:"
+ email_shipping_delivery_address: "Entregatzeko helbidea:"
+ email_shipping_collection_details: Bilketaren xehetasunak
+ email_shipping_collection_time: "Biltzeko prest:"
+ email_shipping_collection_instructions: "Biltzeko jarraibideak:"
+ email_special_instructions: "Bere oharrak:"
+ email_signup_greeting: Kaixo!
+ email_signup_welcome: "Ongi etorri %{sitename}!"
+ email_signup_confirmed_email: "Eskerrik asko zure emaila berresteagatik."
+ email_signup_shop_html: "Orain saioa hasi dezakezu %{link}."
+ email_signup_text: "Eskerrik asko sarean sartzeagatik. Eroslea bazara, nekazari asko, kontsumo taldeak eta janari goxoa aurkeztea espero dugu! Ekoizle bat bazara edo elikagaien erakunde bateko kide bazara, hunkituta gaude sarea osatzen duzulako. "
+ email_signup_help_html: "Zure galdera eta feedback guztiak eskertzen dizkizugu; Feedback bidali botoia erabil dezakezu gunean edo mezu elektroniko bat idatzi %{email} helbidera "
+ invite_email:
+ greeting: "Kaixo!"
+ invited_to_manage: " %{enterprise} administratzera gonbidatu dute ( %{instance})."
+ confirm_your_email: "Mezu elektroniko bat jaso behar zenuen edo laster jasoko zenuen, baieztapen-esteka batekin. Ezin izango duzu %{enterprise} profilean sartu zure posta elektronikoa baieztatu arte. "
+ set_a_password: "Gero, pasahitz bat jartzeko eskatuko zaio, erakundea administratu aurretik."
+ mistakenly_sent: "Ez zaude ziur zergatik jaso duzun mezu elektroniko hau? Mesedez, jarri harremanetan %{owner_email} rekin, informazio gehiago izateko. "
+ producer_mail_greeting: "Estimatua"
+ producer_mail_text_before: "Jarraian, eskaera-zikloari buruzko eguneratze bat aurkituko duzu, honetarako prest:"
+ producer_mail_order_text: "Zure produktuen eskaeren laburpen bat erakusten da:"
+ producer_mail_delivery_instructions: "Stocka jasotzeko/entregatzeko jarraibideak:"
+ producer_mail_signoff: "Eskerrik asko eta laster arte"
+ producer_mail_order_customer_text: "Hemen bezeroen arabera taldekatutako eskaeren laburpena dago"
+ shopping_oc_closed: Eskaerak itxita daude
+ shopping_oc_closed_description: "Mesedez, itxaron hurrengo zikloa ireki arte (edo zuzenean kontaktatu, eskaera berantiar batzuk onar ditzakegun ikusteko)"
+ shopping_oc_last_closed: "Azken zikloa duela %{distance_of_time} itxi zen"
+ shopping_oc_next_open: "Hurrengo zikloan %{distance_of_time} irekiko da"
+ shopping_oc_select: "Hautatu"
+ shopping_tabs_home: "Hasiera"
+ shopping_tabs_shop: "Denda"
+ shopping_tabs_about: "Honi buruz"
+ shopping_tabs_producers: "Ekoizleak"
+ shopping_tabs_contact: "Kontaktua"
+ shopping_tabs_groups: "Sareak"
+ shopping_contact_address: "Helbidea"
+ shopping_contact_web: "Kontaktua"
+ shopping_contact_social: "Jarraitu"
+ shopping_groups_part_of: "honen parte da:"
+ shopping_producers_of_hub: " %{hub} -ko ekoizleak:"
+ enterprises_next_closing: "Eskaerak itxi egingo dira"
+ enterprises_currently_open: "Eskaerak irekita daude"
+ enterprises_ready_for: "Prest"
+ enterprises_choose: "Ziklo bat baino gehiago dago irekita. Aukeratu zeinetan egin nahi duzun eskaera: "
+ maps_open: "Irekia"
+ maps_closed: "Itxita"
+ map_title: "Mapa"
+ hubs_buy: "Erosi:"
+ hubs_shopping_here: "Hemen erosten"
+ hubs_orders_closed: "Eskaera itxiak"
+ hubs_profile_only: "Profila bakarrik"
+ hubs_delivery_options: "Entregatzeko aukerak"
+ hubs_pickup: "Jaso"
+ hubs_delivery: "Entrega"
+ hubs_producers: "Gure ekoiztetxeak"
+ hubs_filter_by: "Iragazi"
+ hubs_filter_type: "Mota"
+ hubs_filter_delivery: "Entrega"
+ hubs_filter_property: "Jabetza"
+ hubs_matches: "Esan nahi zenuen?"
+ hubs_intro: Erosi zure herrian
+ hubs_distance: Hurbilen dagoena
+ hubs_distance_filter: "Erakuts iezazkidazu inguruko dendak %{location}"
+ shop_changeable_orders_alert_html:
+ one: Zure eskaera ( %{shop}/%{order}) irekita dago berrikusteko. %{oc_close} arteko aldaketak egin ditzake.
+ few: 'Zuk %{count} eskaera dituzu %{shop} rekin, eta gaur egun irekita daude berrikusteko. %{oc_close} arteko aldaketak egin ditzake. '
+ many: 'Zuk %{count} eskaera dituzu %{shop} rekin, eta gaur egun irekita daude berrikusteko. %{oc_close} arteko aldaketak egin ditzake. '
+ other: 'Zuk %{count} eskaera dituzu %{shop} rekin, eta gaur egun irekita daude berrikusteko. %{oc_close} arteko aldaketak egin ditzake. '
+ orders_changeable_orders_alert_html: Eskaera hori baieztatu da, baina aldaketak egin ditzake %{oc_close}arte.
+ products_clear: Garbitu
+ products_showing: "Erakusten:"
+ products_results_for: "Emaitzak"
+ products_or: "edo"
+ products_and: "eta"
+ products_filters_in: "en"
+ products_with: 'honekin:'
+ products_search: "Bilatu..."
+ products_filter_by: "Fitratu"
+ products_filter_selected: "hautatua"
+ products_filter_heading: "Iragazkiak"
+ products_filter_clear: "Garbitu"
+ products_filter_done: "Egina"
+ products_loading: "Produktuak kargatzen..."
+ products_updating_cart: "Zure gurditxoa eguneratzen..."
+ products_cart_empty: "Gurditxo hutsa"
+ products_edit_cart: "Zure orgatxoa editatu"
+ products_from: Noiztik
+ products_change: "Ez dago aldaketarik gordetzeko."
+ products_update_error: "Akats hauengatik ezin izan da gorde:"
+ products_update_error_msg: "Ezin izan da gorde."
+ products_update_error_data: "Errorea baliozkoak ez diren datuak gordetzean:"
+ products_changes_saved: "Gordetako aldaketak."
+ products_no_results_html: "Sentitzen dugu, ez da emaitzarik aurkitu %{query} rako"
+ products_clear_search: "Bilaketa garbitu"
+ search_no_results_html: "Sentitzen dugu, ez dago emaitzarik %{query} -rako. Beste bilaketa bat egiten saiatu? "
+ components_profiles_popover: "Profilek ez dute dendarik Open Food Networken, baina beren denda fisikoa edo lineako denda izan dezakete beste leku batean"
+ components_profiles_show: "Erakutsi profilak"
+ components_filters_nofilters: "Iragazkirik gabe"
+ components_filters_clearfilters: "Iragazki guztiak garbitu"
+ groups_title: Sareak
+ groups_headline: Sareak/eskualdeak
+ groups_text: "Ekoizle bakoitza bakarra da. Erakunde bakoitzak badu zerbait desberdina eskaintzeko. Gure sareak balio agroekologikoak partekatzen dituzten ekoizleen, taldeen eta banatzaileen kolektiboak dira. Hori dela eta, erosketa-esperientzia errazagoa da. Sareak bila ditzakezu eta ziur egon zaitezke irizpide horiek dituzten proiektuak hautatu direla. "
+ groups_search: "Bilatu izena edo gako-hitza"
+ groups_no_groups: "Ez da sarerik aurkitu"
+ groups_about: "Guri buruz"
+ groups_producers: "Gure ekoiztetxeak"
+ groups_hubs: "Gure kontsumo-taldeak"
+ groups_contact_web: Kontaktua
+ groups_contact_social: Jarraitu
+ groups_contact_address: Helbidea
+ groups_contact_email: Bidali mezu elektroniko bat
+ groups_contact_website: Bisitatu gure webgunea
+ groups_contact_facebook: Jarrai gaitzazu Facebooken
+ groups_signup_title: Talde gisa erregistratzea
+ groups_signup_headline: Sareen erregistroa
+ groups_signup_intro: "Elkarlaneko merkataritza-plataforma harrigarria gara, kideek eta interesdunek merkatu berriak aurkitzeko modurik errazena. Ez dugu irabazi-asmorik, eskuragarriak eta sinpleak gara. "
+ groups_signup_email: Bidali mezu elektroniko bat
+ groups_signup_motivation1: Guk janari sistemak eraldatzen ditugu modu justuan.
+ groups_signup_motivation2: Horregatik ateratzen gara ohetik egunero. Irabazi-asmorik gabeko erakundea gara, iturburu-kode irekian oinarritua. Zuzen jokatzen dugu. Beti fida zaitezke gutaz.
+ groups_signup_motivation3: Badakigu ideia handiak dituela, eta lagundu egin nahi dugu. Gure ezagutza, sareak eta baliabideak partekatuko ditugu. Badakigu isolamenduak ez duela aldaketarik sortzen, eta zurekin elkartuko gara.
+ groups_signup_motivation4: Zauden lekuan elkartuko gara zurekin.
+ groups_signup_motivation5: Agian kontsumo-talde bat zara, ekoizlea, banatzailea edo beste erakunderen bat.
+ groups_signup_motivation6: Tokiko janariaren mugimenduan duten rola edozein dela ere, laguntzeko prest gaude. Open Food Network nola ikusiko litzatekeen edo munduan zer egiten ari den galdetuz gero, has dezagun elkarrizketa.
+ groups_signup_motivation7: Elikadura-mugimenduek zentzu handiagoa izan dezaten egiten dugu.
+ groups_signup_motivation8: Bere sareak aktibatu eta gaitu behar ditu. Elkarrizketarako eta ekintzarako plataforma bat eskaintzen dizugu. Benetako inplikazioa behar du. Eragile guztiak lortzen lagunduko diogu, interesdun guztiak, sektore guztiak.
+ groups_signup_motivation9: Baliabideak behar ditu. Gure esperientzia guztiak eskainiko dizkizugu eramateko. Lankidetza behar du. Hobeto konektatuko dugu pareen sare global batera.
+ groups_signup_pricing: Talde-kontua
+ groups_signup_studies: Azterketa-kasuak
+ groups_signup_contact: Eztabaidatzeko prest?
+ groups_signup_contact_text: "Konta ezazu OFNk zer egin dezakeen zuregatik:"
+ groups_signup_detail: "Hemen dago xehetasuna."
+ login_invalid: "Posta elektronikoa edo pasahitz baliogabea"
+ producers_about: Guri buruz
+ producers_buy: Erosi
+ producers_contact: Kontaktua
+ producers_contact_phone: Deitu
+ producers_contact_social: Jarraitu
+ producers_buy_at_html: " %{enterprise} produktuak erosi hemen:"
+ producers_filter: Iragazi
+ producers_filter_type: Mota
+ producers_filter_property: Jabetza
+ producers_title: Ekoizleak
+ producers_headline: Tokiko ekoizleak aurkitzen ditu
+ producers_signup_title: Ekoizle gisa erregistratzea
+ producers_signup_headline: Elikagai-ekoizleak, ahaldunduak.
+ producers_signup_motivation: Saldu zure elikagaiak eta kontatu zure istorioak merkatu berrietan. Aurreztu denbora eta dirua administrazio-kostuetan. Berrikuntza babesten dugu arriskurik gabe. Joko-zelaia berdindu dugu.
+ producers_signup_send: Batu orain
+ producers_signup_enterprise: Antolaketa-kontuak
+ producers_signup_studies: Gure ekoiztetxeen istorioak.
+ producers_signup_cta_headline: Batu orain!
+ producers_signup_cta_action: Batu orain
+ producers_signup_detail: Hemen dago xehetasuna.
+ producer: Ekoizlea
+ products_item: Artikulua
+ products_description: Deskribapena
+ products_variant: Aldaera
+ products_quantity: Kopurua
+ products_available: Prest?
+ products_producer: "Ekoizlea"
+ products_price: "Prezioa"
+ name_or_sku: "SKU IZENA EDO KODEA"
+ register_title: Erregistroa
+ sell_title: "Erregistroa"
+ sell_headline: "Eskuratu ezazu Open Food Network-en!"
+ sell_motivation: "Erakutsi zure janari ederrak."
+ sell_producers: "Ekoizleak"
+ sell_hubs: "Taldeak"
+ sell_groups: "Sareak"
+ sell_producers_detail: "Sortu zure profila OFNn minutu gutxiren buruan. Edozein unetan eguneratu dezakezu zure profila lineako denda batean eta zuzenean saldu zure produktuak kontsumitzaileei. "
+ sell_hubs_detail: "Sortu profil bat zure erakundearentzat OFNn. Edozein unetan eguneratu dezakezu zure profila hainbat ekoizleren denda batean. "
+ sell_groups_detail: "Sortu erakundeen direktorio pertsonalizatu bat (ekoizleak edo beste erakunde batzuk) zure eskualderako edo zure erakunderako."
+ sell_user_guide: "Aurkitu askoz gehiago erabiltzailearen gidan."
+ sell_listing_price: "OFNko zerrenda doan da. OFNn denda bat ireki eta administratzea doakoa da 500 $arte hileko salmentetan. Gehiago salduz gero, zure komunitatearen ekarpena salmenten %1 eta %3 artekoa izan daiteke. Prezioei buruzko xehetasun gehiago nahi izanez gero, bisitatu Software plataforma atala goiko menuan Buruz esteka erabiliz. "
+ sell_embed: "OFN denda bat ere txerta dezakegu zure webgune pertsonalizatuan, edo sare lokaleko webgune bat sor dezakegu zure eskualderako neurrira."
+ sell_ask_services: "Galde iezaguzu OFN zerbitzuei buruz"
+ shops_title: Dendak
+ shops_headline: Erosketak, eraldatuak.
+ shops_text: Elikagaiak zikloetan hazten dira, nekazariek zikloetan josten dute, eta guk ziklotan eskatzen dugu janaria. Eskaera ziklo bat itxita aurkitzen baduzu, bisita ezazu laster.
+ shops_signup_title: Kontsumo-talde gisa erregistratzea
+ shops_signup_headline: Kontsumo-taldeak, mugarik gabe.
+ shops_signup_motivation: Zure eredua edozein dela ere, babestu egiten dugu. Edozein modutan, zurekin gaude. Irabazi-asmorik gabeko erakundea gara, independentea eta kode irekikoa. Amets egin duzun software-bazkideak gara.
+ shops_signup_action: Batu orain
+ shops_signup_pricing: Antolaketa-kontuak
+ shops_signup_stories: Gure kontsumo-taldeen historiak.
+ shops_signup_help: Laguntzeko prest gaude.
+ shops_signup_help_text: Itzulera hobea behar duzu. Erosle eta logistikako bazkide berriak behar dituzu. Zure istorioa handizkako salmenten bidez kontatzea behar duzu, xehetasunez eta sukaldeko mahaian.
+ shops_signup_detail: Hemen dago xehetasuna.
+ orders: "Eskaerak"
+ orders_fees: "Komisioak..."
+ orders_edit_title: "Erosketa-orga"
+ orders_edit_headline: "Zure erosketa-orgatxoa"
+ orders_edit_time: "Eskaera prest dago"
+ orders_edit_continue: "Erosten jarraitu"
+ orders_edit_checkout: "Balidatu"
+ orders_form_empty_cart: "Hustu gurditxoa"
+ orders_form_update_cart: "Eguneratu"
+ orders_form_subtotal: "Produktuen guztizko partziala"
+ orders_form_total: "Guztira"
+ orders_oc_expired_headline: "Eskaerak itxita daude ziklo honetarako"
+ orders_oc_expired_text: "Sentitzen dugu, ziklo honetarako eskaerak duela %{time} itxi ziren! Jarri zuzenean harremanetan zure kontsumo-taldearekin, beranduko eskaerak onar ditzaketen ikusteko. "
+ orders_oc_expired_text_others_html: "Sentitzen dugu, ziklo honetarako eskaerak duela %{time} itxi ziren! Jarri zuzenean harremanetan zure kontsumo-taldearekin ,%{link} beranduko eskaerak onar ditzaketen ikusteko. "
+ orders_oc_expired_text_link: "edo kontsumo-talde honetan eskuragarri dauden beste eskaera-ziklo batzuk bisitatu"
+ orders_oc_expired_email: "Posta elektronikoa:"
+ orders_oc_expired_phone: "Telefonoa:"
+ orders_show_title: "Eskaera berrestea"
+ orders_show_time: "Eskaera prest hemen"
+ orders_show_order_number: "Eskaera # %{number}"
+ orders_show_cancelled: "Ezeztatuta"
+ orders_show_confirmed: "Baieztatuta"
+ orders_your_order_has_been_cancelled: "Zure eskaera bertan behera geratu da"
+ orders_could_not_cancel: "Sentitzen dugu, ezin izan da eskaera bertan behera utzi"
+ orders_cannot_remove_the_final_item: "Ezin da kendu eskaera baten azken artikulua, horren ordez, mesedez ezeztatu eskaera."
+ orders_bought_items_notice:
+ one: "Dagoeneko baieztatuta dago artikulu gehigarri bat eskaera-ziklo honetarako"
+ few: "Eskaera-ziklo honetarako berretsitako artikulu gehigarrien %{count}"
+ many: "Eskaera-ziklo honetarako berretsitako artikulu gehigarrien %{count}"
+ other: "Eskaera-ziklo honetarako berretsitako artikulu gehigarrien %{count}"
+ orders_bought_edit_button: "Berretsitako artikuluak editatu"
+ orders_bought_already_confirmed: "* dagoeneko baieztatuta"
+ orders_confirm_cancel: "Ziur eskaera hau bertan behera utzi nahi duzula?"
+ order_processed_successfully: "Zure eskaera arrakastaz auzipetu dute."
+ thank_you_for_your_order: "Eskerrik asko eskatzeagatik"
+ products_cart_distributor_choice: "Zure eskarirako banatzailea:"
+ products_cart_distributor_change: "Eskaera honetarako zure banatzailea %{name} ra aldatuko da produktu hau orgatxoari gehitzen badiozu."
+ products_cart_distributor_is: "Eskaera honetarako zure banatzailea %{name} da."
+ products_distributor_error: "Osatu zure eskaera %{link} tan, beste banatzaile batekin erosi aurretik."
+ products_oc: "Zure eskaerarako eskaera-zikloa:"
+ products_oc_change: "Eskaera honetarako zure eskaera-zikloa %{name} ra aldatuko da produktu hau orgatxora gehitzen baduzu."
+ products_oc_is: "Eskaera honetarako zure eskaera-zikloa %{name} da."
+ products_oc_error: "Osatu %{link} eskaera hau beste eskaera-ziklo batean erosi aurretik."
+ products_oc_current: "zure oraingo eskaera-zikloa"
+ products_max_quantity: Gehienezko kopurua
+ products_distributor: Banatzailea
+ products_distributor_info: Zure eskaerarako banatzaile bat hautatzen duzunean, zure helbidea eta biltzeko denbora hemen erakutsiko dira.
+ password: Pasahitza
+ remember_me: Gogoratzea
+ are_you_sure: "Ziur zaude?"
+ orders_open: "Eskaera irekiak"
+ closing: "Ixten"
+ going_back_to_home_page: "Hasierako orrira itzultzen ari gara"
+ creating: Sortzen
+ updating: Eguneratzen
+ failed_to_create_enterprise: "Errorea zure erakundea sortzean."
+ failed_to_create_enterprise_unknown: "Errorea zure erakundea sortzean.\nZiurtatu eremu guztiak bete dituzula."
+ failed_to_update_enterprise_unknown: "Errorea zure erakundea eguneratzean.\nZiurtatu eremu guztiak bete dituzula."
+ enterprise_confirm_delete_message: "Horrek ere erakunde horrek ematen duen %{product} ezabatuko du. Ziur zaude jarraitu nahi duzula? "
+ order_not_saved_yet: "Zure ordena oraindik ez da gorde. Eman segundo batzuk bukatzeko! "
+ filter_by: "Fitratu"
+ hide_filters: "Iragazkiak ezkutatu"
+ one_filter_applied: "1 iragazki aplikatua"
+ x_filters_applied: "aplikatutako iragazkiak"
+ submitting_order: "Zure agindua bidaltzen: itxaron"
+ confirm_hub_change: "Ziur zaude? Horrek zure kontsumo-taldea aldatuko du eta erosketa-orgako edozein artikulu ezabatuko du. "
+ confirm_oc_change: "Ziur zaude? Horrek hautatutako ordena-zikloa aldatuko du, eta erosketa-orgatxoan edozein artikulu ezabatuko du. "
+ location_placeholder: "Idatzi kokapen bat..."
+ error_required: "ezin da hutsik egon"
+ error_number: "zenbaki bat izan behar du"
+ error_email: "helbide elektroniko bat izan behar du"
+ error_not_found_in_database: " %{name} ez dago datu-basean"
+ error_not_primary_producer: " %{name} ez dago gaituta ekoizle gisa"
+ error_no_permission_for_enterprise: "\" %{name}\": ez duzu baimenik erakunde honetarako produktuak administratzeko"
+ item_handling_fees: "Artikuluak erabiltzeko komisioak (artikuluen guztizkoan sartuta)"
+ january: "Urtarrila"
+ february: "Otsaila"
+ march: "Martxoa"
+ april: "Apirila"
+ may: "Maiatza"
+ june: "Ekaina"
+ july: "Uztaila"
+ august: "Abuztua"
+ september: "Iraila"
+ october: "Urria"
+ november: "Azaroa"
+ december: "Abendua"
+ email_not_found: "Helbide elektronikoa ez da aurkitu"
+ email_unconfirmed: "Zure helbide elektronikoa berretsi behar duzu pasahitza berrezarri aurretik."
+ email_required: "Helbide elektroniko bat eman behar duzu"
+ logging_in: "Itxaron pixka bat, saio bat hasiko dizugu"
+ signup_email: "Zure posta elektronikoa"
+ choose_password: "Aukeratu pasahitz bat"
+ confirm_password: "Pasahitza berretsi"
+ action_signup: "Erregistratu orain"
+ forgot_password: "Ez duzu zure pasahitza gogoratzen?"
+ password_reset_sent: "Pasahitza berrezartzeko jarraibideak dituen mezu elektroniko bat bidaltzen dizugu!"
+ reset_password: "Pasahitza berrezarri"
+ update_and_recalculate_fees: "Komisioak eguneratzea eta birkalkulatzea"
+ registration:
+ steps:
+ introduction:
+ registration_greeting: "Kaixo!"
+ registration_intro: "Orain profil bat sor dezakezu zure ekoizlearentzat edo kontsumo-taldearentzat"
+ registration_checklist: "Zer behar dut?"
+ registration_time: "5-10 minutu"
+ registration_enterprise_address: "Erakundearen zuzendaritza"
+ registration_contact_details: "Kontaktu nagusiaren xehetasunak"
+ registration_logo: "Bere logotipoa"
+ registration_promo_image: "Profilerako etzandako formatuko irudia"
+ registration_about_us: "'Guri buruz' testua"
+ registration_outcome_headline: "Zertarako balio du?"
+ registration_outcome1_html: "Bere profilak pertsonei Open Food Network-en aurkitzen eta harremanetan jartzen laguntzen die. "
+ registration_outcome2: "Erabili espazio hau zure erakundearen historia kontatzeko, zure presentzia sozialarekiko eta lineako loturak bultzatzen laguntzeko."
+ registration_outcome3: "Open Food Network-en hasteko edo online denda bat irekitzeko lehen urratsa ere bada."
+ registration_action: "Has gaitezen!"
+ details:
+ title: "Xehetasunak"
+ headline: "Has gaitezen"
+ enterprise: "Lehenik, pixka bat jakin behar dugu zure antolaketari buruz:"
+ producer: "Lehenik, zure ekoizleari buruz jakin behar dugu:"
+ enterprise_name_field: "Erakundearen izena:"
+ producer_name_field: "Produkzio-etxearen izena:"
+ producer_name_field_placeholder: "adibidez, Charlieren etxalde ikusgarria."
+ producer_name_field_error: "Aukeratu izen bakar bat zure erakundearentzat."
+ address1_field: "1. linearen helbidea:"
+ address1_field_placeholder: "adib. Passeig Sant Joan"
+ address1_field_error: "Sartu helbide bat"
+ address2_field: "2. linearen helbidea:"
+ suburb_field: "Auzoa:"
+ suburb_field_placeholder: "adib. Alde Zaharra"
+ suburb_field_error: "Sartu auzo bat"
+ postcode_field: "Posta-kodea:"
+ postcode_field_placeholder: "adib. 08025"
+ postcode_field_error: "Posta-kode bat behar du"
+ state_field: "Eskualdea:"
+ state_field_error: "Eskatutako eskualdea"
+ country_field: "Herrialdea:"
+ country_field_error: "Hautatu herrialde bat, mesedez"
+ map_location: "Kokapena mapan"
+ locate_address: "Aurkitu helbidea mapan"
+ drag_pin: "Arrastatu eta askatu txintxeta kokapen egokian, beharrezkoa ez bada."
+ confirm_address: "Erakundeak mapan adierazitako posizioa zuzena dela baieztatzen dut."
+ drag_map_marker: "Ekoizle askok landa-eremuetan lan egiten dutenez, mapen zehaztasuna etengabe hobetzen ari da. Lagundu iezaiguzu hobeto ulertzen non zauden kokatuta, goiko maparekin elkarreraginean, markatzailea mugitzeko, dakizunaren arabera zehatzena den kokalekuan klik edo arrastaka eginez. "
+ contact:
+ title: "Kontaktua"
+ who_is_managing_enterprise: "Nork du %{enterprise} administratzeko ardura?"
+ contact_field: "Kontaktu nagusia"
+ contact_field_placeholder: "Harremanetarako izena"
+ contact_field_required: "Kontaktu nagusi bat sartu behar duzu."
+ phone_field: "Telefono-zenbakia"
+ whatsapp_phone_field: "WhatsApp telefono-zenbakia"
+ whatsapp_phone_tooltip: "Zenbaki hau zure profil publikoan erakutsiko da, WhatsAppeko esteka gisa ireki dadin."
+ phone_field_placeholder: "adib. 93 250 16 45"
+ type:
+ title: "Mota"
+ headline: " %{enterprise} gehitzeko azken urratsa!"
+ question: "Ekoizlea zara?"
+ yes_producer: "Ekoizlea banaiz"
+ no_producer: "Ez, ez naiz produktore bat"
+ producer_field_error: "Aukeratu bat, mesedez. Ekoizlea zara? "
+ yes_producer_help: "Ekoiztetxeek gauza goxoak egiten dituzte jateko eta/edo edateko. Ekoizlea zara, landatzen baduzu, hazten baduzu, prestatzen baduzu, labean sartzen baduzu, hartzitzen baduzu, jezten baduzu... "
+ no_producer_help: "Ekoizlea ez bazara, seguruenik ezagutuko duzu janaria saldu edo banatuko duen norbait. Kontsumo-talde edo bestelako erakunde bihur zintezke. "
+ create_profile: "Sortu profila"
+ about:
+ title: "Honi buruz"
+ headline: "Jarraitzen dugu!"
+ message: "Orain, xehetasunetan sakonduko dugu"
+ success: "Arrakasta! %{enterprise} Open Food Network-i erantsita"
+ registration_exit_message: "Laguntzaile honetatik edozein etapatan ateratzen bazara, zure profila sortzen jarrai dezakezu, administrazio-interfazera joanda."
+ enterprise_description: "Deskribapen laburra"
+ enterprise_description_placeholder: "Zure erakundea deskribatzen duen esaldi labur bat"
+ enterprise_long_desc: "Deskribapen luzea"
+ enterprise_long_desc_placeholder: "Zure erakundearen historia kontatzeko aukera duzu. Zerk egiten du desberdin? Deskribapena 600 karaktere edo 150 hitz baino gutxiagotan mantentzea iradokitzen dugu. "
+ enterprise_long_desc_length: " %{num} karaktere/komentu, 600 arte"
+ enterprise_abn: "IFZ"
+ enterprise_abn_placeholder: "adib. 99 123 456 789"
+ enterprise_acn: "ACN"
+ enterprise_acn_placeholder: "adibidez, 123 456 789"
+ enterprise_tax_required: "Zerbait hautatu behar duzu."
+ images:
+ title: "Irudiak"
+ headline: "Ia lortu dugu!"
+ description: "Igo argazki batzuk horrela profila askoz hobeto ikusiko da!:)"
+ uploading: "Igotzen..."
+ continue: "Jarraitu"
+ back: "Atzera"
+ logo:
+ select_logo: "1. urratsa. Aukeratu logotipo-irudi bat "
+ logo_tip: "Aholkua: Irudi karratuak hobeto funtzionatzen dute, gutxienez 300 × 300px lehentasunezkoak"
+ logo_label: "Aukeratu logo-irudi bat"
+ logo_drag: "Arrastatu eta askatu zure logoa hemen"
+ review_logo: "2. urratsa. Berrikusi zure logoa "
+ review_logo_tip: "Kontseilua: emaitza hobeak lortzeko, zure logoak espazio erabilgarria bete beharko luke"
+ logo_placeholder: "Logoa hemen agertuko da, igo denean berrikusteko"
+ promo:
+ select_promo_image: "3. urratsa. Aukeratu sustapen-irudi bat "
+ promo_image_tip: "Aholkua: pankarta bat bezala agertzen da, tamaina gogokoena 1200 × 260px da"
+ promo_image_label: "Aukeratu sustapen-irudi bat"
+ promo_image_drag: "Arrastatu eta askatu zure promozio-irudia hemen"
+ review_promo_image: "4. urratsa. Berrikusi zure promozio-pankarta "
+ review_promo_image_tip: "Kontseilua: emaitza hobeak lortzeko, zure sustapen-irudiak espazio erabilgarria bete beharko luke"
+ promo_image_placeholder: "Logoa hemen agertuko da, igo denean berrikusteko"
+ social:
+ title: "Soziala"
+ enterprise_final_step: "Azken urratsa!"
+ enterprise_social_text: "Nola aurki dezake jendeak %{enterprise} online?"
+ website: "Website"
+ website_placeholder: "eg. openfoque odnetwork.org.au"
+ facebook: "Facebook"
+ facebook_placeholder: "eg. www.facebook.com/NombreDePáginaAquí"
+ linkedin: "LinkedIn"
+ linkedin_placeholder: "eg. www.linkedin.com/SuNombreAquí"
+ twitter: "Twitter"
+ twitter_placeholder: "twitterreko erabiltzailea"
+ instagram: "Instagram"
+ instagram_placeholder: "instagrameko erabiltzailea"
+ limit_reached:
+ headline: "Ai ez!"
+ message: "Mugara iritsi da!"
+ text: "Hemen kudea ditzakezun erakundeen mugara iritsi zara"
+ action: "Itzuli hasierako orrira"
+ finished:
+ headline: "Bukatu da!"
+ thanks: "Eskerrik asko %{enterprise} xehetasunak betetzeagatik."
+ login: "Zure negozioa edozein etapatan aldatu edo eguneratu dezakezu Open Food Network-en saioa hasiz eta Admin-era joanez."
+ action: "Joan antolaketa-panelera"
+ back: "Atzera"
+ continue: "Jarraitu"
+ action_or: "O"
+ enterprise_limit: Erakundearen muga
+ shipping_method_destroy_error: "Bidalketa-metodo hori ezin da ezabatu, eskaera batean aipatzen baita: %{number}."
+ fees: "Batzordeak"
+ fee_name: "Batzordearen izena"
+ item_cost: "Artikuluaren kostua"
+ bulk: "Taldekatu"
+ shop_variant_quantity_min: "gutxienekoa"
+ shop_variant_quantity_max: "gehienez"
+ contact: "Kontaktua"
+ follow: "Jarraitu"
+ shop_for_products_html: " %{enterprise} produktuak erosi hemen: "
+ change_shop: "Dendaz aldatu:"
+ shop_at: "Erosi hemen:"
+ admin_fee: "Administrazio-batzordea"
+ sales_fee: "Salmenta-komisioa"
+ packing_fee: "Paketatze-komisioa"
+ transport_fee: "Garraio-batzordea"
+ fundraising_fee: "Funtsak birkokatzeko batzordea"
+ price_graph: "Prezioen grafikoa"
+ included_tax: "Zerga barne"
+ tax: "Zerga"
+ tax_amount_included: " %{amount} (barne)"
+ remove_tax: "Zerga ezabatu"
+ balance: "Saldoa"
+ transaction: "Transakzioa"
+ transaction_date: "Data"
+ payment_state: "Ordainketaren egoera"
+ shipping_state: "Bidalketaren egoera"
+ value: "Balioa"
+ balance_due: "Zor den saldoa"
+ credit: "Kreditua"
+ Paid: "Ordainduta"
+ Ready: "Prest"
+ not_visible: ez da ikusten
+ you_have_no_orders_yet: "Oraindik ez duzu eskaerarik"
+ show_only_complete_orders: "Erakutsi eskaera osoak bakarrik"
+ successfully_created: ' %{resource} arrakastaz sortu da!'
+ successfully_removed: ' %{resource} arrakastaz ezabatu da!'
+ successfully_updated: ' %{resource} ondo eguneratu da!'
+ running_balance: "Egungo saldoa"
+ outstanding_balance: "Aparteko saldoa"
+ admin_enterprise_relationships: "Erakundearen baimenak"
+ admin_enterprise_relationships_everything: "Markatu guztiak"
+ admin_enterprise_relationships_permits: "Uzten du"
+ admin_enterprise_relationships_seach_placeholder: "Bilatu"
+ admin_enterprise_relationships_button_create: "Sortu"
+ admin_enterprise_relationships_to: "gelditu"
+ admin_enterprise_groups: "Erakunde-sareak"
+ admin_enterprise_groups_name: "Izena"
+ admin_enterprise_groups_owner: "Jabea"
+ admin_enterprise_groups_on_front_page: "Orri nagusian?"
+ admin_enterprise_groups_enterprise: "Erakundeak"
+ admin_enterprise_groups_data_powertip: "Talde honen erabiltzaile arduradun nagusia."
+ admin_enterprise_groups_data_powertip_logo: "Hau da taldearen logoa"
+ admin_enterprise_groups_data_powertip_promo_image: "Irudi hau Taldearen profilaren goiburuan erakutsiko da"
+ admin_enterprise_groups_contact_phone_placeholder: "adib.: 98 7654 3210"
+ admin_enterprise_groups_contact_address1_placeholder: "adib. Carrer Torrent de l 'Olla"
+ admin_enterprise_groups_contact_city: "Auzoa"
+ admin_enterprise_groups_contact_city_placeholder: "adib. Bartzelona"
+ admin_enterprise_groups_contact_zipcode: "Posta-kodea"
+ admin_enterprise_groups_contact_zipcode_placeholder: "08025 adib."
+ admin_enterprise_groups_contact_state_id: "Probintzia"
+ admin_enterprise_groups_contact_country_id: "Herrialdea"
+ admin_enterprise_groups_web_twitter: "adib: the_prof"
+ admin_enterprise_groups_web_website_placeholder: "adib. www.truffles.com"
+ admin_order_cycles: "Administrazio-eskaeren zikloak"
+ open: "Irekia"
+ close: "Itxi"
+ create: "Sortu"
+ search: "Bilatu"
+ supplier: "Hornitzailea"
+ product_name: "produktuaren izena"
+ product_description: "Produktuaren deskribapena"
+ permalink: "Lotura iraunkorra"
+ shipping_categories: "Bidalketa-kategoriak"
+ units: "Neurketa-unitatea"
+ coordinator: "Koordinatzailea"
+ distributor: "Banatzailea"
+ enterprise_fees: "Erakundearen batzordeak"
+ process_my_order: "Nire eskaera prozesatu"
+ delivery_instructions: Entregatzeko jarraibideak
+ delivery_method: Entregatzeko metodoa
+ fee_type: "Batzorde mota"
+ tax_category: "Zergaren kategoria"
+ display: "Erakutsi"
+ tags: "Etiketak"
+ calculator: "Kalkulagailua"
+ calculator_values: "Balioen kalkulagailua"
+ calculator_settings_warning: "Kalkulagailu mota aldatzen ari bazara, lehenik eta behin gorde egin behar duzu kalkulagailuaren konfigurazioak editatu aurretik"
+ calculator_preferred_unit_error: "kg edo lb izan behar du"
+ calculator_preferred_value_error: "Sarrera baliogabea. Erabili zenbakiak bakarrik. Adibidez: 10, 5.5, -20 "
+ flat_percent_per_item: "Ehuneko finkoa (artikulu bakoitzeko)"
+ flat_rate_per_item: "Tarifa laua (artikulu bakoitzeko)"
+ flat_rate_per_order: "Tarifa laua (eskaera bakoitzeko)"
+ flexible_rate: "Tarifa malgua"
+ price_sack: "Zakuaren prezioa"
+ new_order_cycles: "Eskabide-ziklo berriak"
+ new_order_cycle: "Eskaera-ziklo berria"
+ new_order_cycle_tooltip: "Aldi jakin batean irekita dagoen denda"
+ select_a_coordinator_for_your_order_cycle: "Hautatu koordinatzaile bat zuen eskaera-ziklorako"
+ notify_producers: 'Ekoiztetxeei jakinarazi'
+ edit_order_cycle: "Editatu eskaera-zikloa"
+ roles: "Rolak"
+ update: "Eguneratu"
+ delete: Ezabatu
+ add_producer_property: "Erantsi produktorearen jabetza"
+ in_progress: "Prozesuan"
+ started_at: "Hasten naiz"
+ queued: "Ilaran"
+ scheduled_for: "Zertarako planifikatua"
+ customers: "Kontsumitzaileak"
+ please_select_hub: "Hautatu talde bat"
+ loading_customers: "Kontsumitzaileak kargatzen"
+ no_customers_found: "Ez da kontsumitzailerik aurkitu"
+ go: "Joan"
+ hub: "Kontsumo-taldea"
+ product: "Produktua"
+ price: "Prezioa"
+ review: "Berrikuspena"
+ save_changes: "Gorde aldaketak"
+ order_saved: "Eskaera gordeta"
+ no_products: Ez dago produkturik
+ spree_admin_overview_enterprises_header: "Nire erakundeak"
+ spree_admin_overview_enterprises_footer: "NIRE ERAKUNDEAK KUDEATZEA"
+ spree_admin_enterprises_hubs_name: "Izena"
+ spree_admin_enterprises_create_new: "SORTU BERRIA"
+ spree_admin_enterprises_shipping_methods: "Bidaltzeko metodoak"
+ spree_admin_enterprises_fees: "Erakundearen batzordeak"
+ spree_admin_enterprises_none_create_a_new_enterprise: "ERAKUNDE BERRIA SORTZEA"
+ spree_admin_enterprises_none_text: "Ez duzu erakunderik"
+ spree_admin_enterprises_producers_manage_products: "PRODUKTUAK KUDEATZEA"
+ spree_admin_enterprises_create_new_product: "PRODUKTU BERRI BAT SORTZEA"
+ spree_admin_supplier: Hornitzailea
+ unit_name: "Unitatearen izena"
+ change_package: "Aldatu profila"
+ spree_admin_single_enterprise_hint: "Iradokizuna: Jendeak aurkitu zaitzan, aktibatu zure ikuspena"
+ spree_admin_eg_pickup_from_school: "adib. 'Kooperatiban biltzea' "
+ spree_admin_eg_collect_your_order: "adib. 'Mesedez, jaso ezazu zure eskaera Inurritegi kaleko 3. zenbakian' "
+ spree_order_availability_error: "Banatzaileak edo eskaera-zikloak ezin ditu produktuak bere orgatxoan hornitu"
+ spree_order_populator_error: "Banatzaile edo eskaera-ziklo honek ezin ditu produktu guztiak zure orgatxoan hornitu. Mesedez, aukeratu beste bat. "
+ spree_order_cycle_error: "Aukeratu eskaera-ziklo bat eskaera honetarako."
+ spree_order_populator_availability_error: "Produktu hau ez dago eskuragarri aukeratutako banatzailean edo eskaera-zikloan."
+ spree_distributors_error: "Gutxienez talde bat hautatu behar da"
+ spree_user_enterprise_limit_error: "^ %{email} k ez du erakunde gehiago izateko baimenik (muga %{enterprise_limit} da)."
+ spree_variant_product_error: Gutxienez aldaera bat izan behar duzu
+ your_profil_live: "Zure online profila"
+ see: "Ikusi"
+ live: "Zuzenean"
+ manage: "Kudeatu"
+ resend: "Birbidali"
+ add_and_manage_products: "Produktuak gehitzea eta kudeatzea"
+ add_and_manage_order_cycles: "Eskaera-zikloak gehitzea eta kudeatzea"
+ manage_order_cycles: "Eskabide-zikloak kudeatzea"
+ manage_products: "Produktuak kudeatzea"
+ edit_profile_details: "Editatu profilaren xehetasunak"
+ edit_profile_details_etc: "Aldatu zure deskribapena, irudiak, etab."
+ order_cycle: "Eskaera-zikloa"
+ enterprise_relationships: "Erakundearen baimenak"
+ first_name_begins_with: "Izena hasten da"
+ last_name_begins_with: "Abizena hasten da"
+ shipping_method: "Bidaltzeko metodoa"
+ new_order: "Eskaera berria"
+ enterprise_tos_link: "Erakundearen Zerbitzuko terminoetarako esteka"
+ enterprise_tos_message: "Gure helburuak eta balioak partekatzen dituzten pertsonekin lan egin nahi dugu. Horregatik, erakunde berriei eskatzen diegu onar dezatela "
+ enterprise_tos_agree: "Bat nator zerbitzuaren baldintzekin"
+ tax_settings: "Zergen konfigurazioa"
+ products_require_tax_category: "Produktuek zerga kategoria behar dute"
+ admin_shared_address_1: "Helbidea"
+ admin_shared_address_2: "Helbidea (jarraipena)"
+ admin_share_city: "Hiria"
+ admin_share_zipcode: "Posta-kodea"
+ admin_share_country: "Herrialdea"
+ admin_share_state: "Egoera"
+ hub_sidebar_hubs: "Taldeak"
+ hub_sidebar_none_available: "Bat ere ez dago erabilgarri"
+ hub_sidebar_manage: "Kudeatu"
+ hub_sidebar_at_least: "Gutxienez talde bat hautatu behar da"
+ hub_sidebar_blue: "urdina"
+ hub_sidebar_red: "gorria"
+ order_cycles_closed_for_hub: "Hautatu duzun taldea aldi baterako itxita dago eskaeretarako. Mesedez, saia zaitez geroago."
+ report_customers_distributor: "Banatzailea"
+ report_customers_hub: "Taldea"
+ report_customers_supplier: "Hornitzailea"
+ report_customers_cycle: "Eskaera-zikloa"
+ report_customers_type: "Txosten mota"
+ report_customers_csv: "CSV gisa deskargatu"
+ report_customers: Kontsumitzailea
+ report_producers: "Ekoizleak"
+ report_type: "Txosten mota"
+ report_hubs: "Taldeak"
+ report_payment: "Ordaintzeko metodoak"
+ report_distributor: "Banatzailea"
+ report_payment_by: 'Tipoko ordainketak'
+ report_itemised_payment: 'Ordainketa xehatuak guztira'
+ report_payment_totals: 'Ordainketak guztira'
+ report_all: 'Dena.'
+ report_order_cycle: "Eskaera-zikloa"
+ report_hide_columns: Ezkutatzeko zutabeak
+ report_columns: Zutabeak
+ report_enterprises: "Erakundeak"
+ report_enterprise_fee: "Batzordeen izenak"
+ report_users: "Erabiltzaileak"
+ report_tax_rates: Zergen ehunekoak
+ report_tax_types: Zerga motak
+ report_filters: Txosten-iragazkiak
+ report_print: Txostena inprimatu
+ report_render_options: Errenderizazio-aukerak
+ report_header_ofn_uid: OFNko UIDa
+ report_header_order_cycle: Eskaera-zikloa
+ report_header_user: Erabiltzailea
+ report_header_email: Emaila
+ report_header_status: Egoera
+ report_header_comments: Iruzkinak
+ report_header_first_name: Izena
+ report_header_last_name: Abizena
+ report_header_suburb: Auzoa
+ report_header_phone: Telefonoa
+ report_header_address: Helbidea
+ report_header_billing_address: Fakturazio Zuzendaritza
+ report_header_relationship: Harremana
+ report_header_hub: Taldea
+ report_header_hub_address: Taldearen zuzendaritza
+ report_header_to_hub: Taldeari
+ report_header_hub_code: Talde-kodea
+ report_header_hub_id: Taldearen ID
+ report_header_hub_business_number: "Taldearen zenbakia"
+ report_header_hub_legal_name: "Taldearen izen soziala"
+ report_header_hub_contact_name: "Taldearen harremanetarako izena"
+ report_header_hub_email: "Taldearen posta elektroniko publikoa"
+ report_header_hub_owner_email: Taldeko arduradunaren posta elektronikoa
+ report_header_hub_address_line1: "Taldearen 1. helbidea"
+ report_header_hub_address_line2: "Taldearen 2. helbidea"
+ report_header_hub_address_zipcode: "Taldearen posta-kodea"
+ report_header_hub_address_state_name: "Taldearen eskualdea"
+ report_header_code: Kodea
+ report_header_paid: Ordainduta?
+ report_header_delivery: Entregatua?
+ report_header_shipping: Bidalketa
+ report_header_shipping_instructions: Bidaltzeko jarraibideak
+ report_header_ship_street: Bidalketa-kalea
+ report_header_ship_street_2: Bidalketa-kalea 2
+ report_header_ship_city: Bidalketa-hiria
+ report_header_ship_postcode: Bidalketaren posta-kodea
+ report_header_ship_state: Bidalketa-probintzia
+ report_header_billing_street: Fakturazio-kalea
+ report_header_billing_street_2: Fakturazio-kalea 2
+ report_header_billing_street_3: Fakturazio-kalea 3
+ report_header_billing_street_4: Fakturazio-kalea 4
+ report_header_billing_city: Fakturazio-hiria
+ report_header_billing_postcode: Fakturazioaren posta-kodea
+ report_header_billing_state: Fakturazio-probintzia
+ report_header_incoming_transport: Sartzen den garraioa
+ report_header_special_instructions: jarraibide bereziak
+ report_header_order_number: Eskaera-zenbakia
+ report_header_date: Data
+ report_header_confirmation_date: Baieztapen-data
+ report_header_tags: Tag-ak
+ report_header_items: Artikuluak
+ report_header_items_total: "Artikuluak guztira %{currency_symbol}"
+ report_header_taxable_items_total: "Zergak guztira dituzten artikuluak ( %{currency_symbol})"
+ report_header_sales_tax: "Salmenten gaineko zerga ( %{currency_symbol)"
+ report_header_delivery_charge: "Bidalketa-gastuak ( %{currency_symbol})"
+ report_header_tax: "Zerga"
+ report_header_tax_on_delivery: "Entregaren gaineko zergak ( %{currency_symbol})"
+ report_header_tax_on_fees: "Komisioen gaineko zerga ( %{currency_symbol})"
+ report_header_tax_category: "Zergen kategoria"
+ report_header_tax_rate_name: "Erregistratutako BEZa"
+ report_header_tax_rate: "Zergaren ehunekoa"
+ report_header_total_tax: "Zergak guztira ( %{currency_symbol})"
+ report_header_total_excl_tax: "Zergak, guztira, gaindi. ( %{currency_symbol})"
+ report_header_total_incl_tax: "Zergak guztira ( %{currency_symbol})"
+ report_header_total_orders: "Eskaera kopurua guztira"
+ report_header_enterprise: Antolaketa
+ report_header_enterprise_fee_name: Izena
+ report_header_enterprise_fee_type: Mota
+ report_header_enterprise_fee_owner: Jabea
+ report_header_customer: Kontsumitzailea
+ report_header_customer_first_name: Izena
+ report_header_customer_last_name: Abizena
+ report_header_customer_code: Kontsumitzailearen kodea
+ report_header_product: Produktua
+ report_header_product_properties: Produktuaren propietateak
+ report_header_quantity: Kopurua
+ report_header_max_quantity: Gehienezko kopurua
+ report_header_variant: Aldaera
+ report_header_variant_unit_name: Aldaeraren unitatearen izena
+ report_header_variant_value: Aldaeraren balioa
+ report_header_variant_unit: Aldaeraren unitatea
+ report_header_total_available: Guztira erabilgarri
+ report_header_unallocated: Esleitu gabe
+ report_header_max_quantity_excess: Gehienezko kopurua
+ report_header_taxons: Sailkapena
+ report_header_supplier: Hornitzailea
+ report_header_producer: Ekoizlea
+ report_header_producer_suburb: Auzo ekoizlea
+ report_header_producer_address: Ekoizpen-etxearen zuzendaritza
+ report_header_unit: Unitatea
+ report_header_group_buy_unit_quantity: Taldekatu unitateko kantitatearen arabera
+ report_header_cost: Kostua
+ report_header_shipping_cost: Bidalketaren kostua
+ report_header_curr_cost_per_unit: Uneko unitateko kostua
+ report_header_total_shipping_cost: Bidalketaren kostu osoa
+ report_header_payment_method: Ordaintzeko modua
+ report_header_sells: Saldu
+ report_header_visible: Ikusgai
+ report_header_price: Prezioa
+ report_header_unit_size: Neurketa-unitatea
+ report_header_distributor: Banatzailea
+ report_header_distributor_address: Banatzailearen helbidea
+ report_header_distributor_city: Banatzailearen hiria
+ report_header_distributor_postcode: Banatzailearen posta-kodea
+ report_header_delivery_address: Entregatzeko helbidea
+ report_header_delivery_postcode: Entregatzeko posta-kodea
+ report_header_bulk_unit_size: Ontziratu gabeko unitatearen tamaina
+ report_header_weight: Pisua
+ report_header_final_weight_volume: Amaiera (pisua/bolumena)
+ report_header_height: Altuera
+ report_header_width: Zabalera
+ report_header_depth: Sakonera
+ report_header_sum_total: Batura guztira
+ report_header_date_of_order: Eskaera-data
+ report_header_amount_owing: Zor den kopurua
+ report_header_amount_paid: Ordaindutako kopurua
+ report_header_units_required: Eskatutako unitateak
+ report_header_remainder: Oroigarria
+ report_header_order_date: Eskaera-data
+ report_header_order_id: Eskaeraren ID
+ report_header_item_name: Artikuluaren izena
+ report_header_temp_controlled_items: Tenperatura kontrolatuko gaiak?
+ report_header_customer_name: Kontsumitzailearen izena
+ report_header_customer_email: Kontsumitzailearen posta elektronikoa
+ report_header_customer_phone: Kontsumitzailearen telefonoa
+ report_header_customer_city: Kontsumitzaileen Hiria
+ report_header_payment_state: Ordainketaren egoera
+ report_header_payment_type: Ordainketa mota
+ report_header_item_price: "Artikulua ( %{currency})"
+ report_header_item_fees_price: "Artikulua + Komisioak ( %{currency})"
+ report_header_admin_handling_fees: "Administrazioa eta kudeaketa ( %{currency})"
+ report_header_ship_price: "Bidalketa ( %{currency})"
+ report_header_pay_fee_price: "Ordainketa-komisioa ( %{currency})"
+ report_header_total_price: "Guztira ( %{currency})"
+ report_header_product_total_price: "Produktu osoa ( %{currency})"
+ report_header_shipping_total_price: "Bidalketak guztira ( %{currency})"
+ report_header_outstanding_balance_price: "Ordaintzeko dagoen saldoa ( %{currency})"
+ report_header_eft_price: "Transferentzia ( %{currency})"
+ report_header_paypal_price: "PayPal ( %{currency})"
+ report_header_sku: SKU
+ report_header_amount: Kopurua
+ report_header_balance: Saldoa
+ report_header_total_cost: "Kostua guztira"
+ report_header_total_ordered: Eskaerak guztira
+ report_header_total_max: Max guztira
+ report_header_total_units: Unitateak guztira
+ report_header_sum_max_total: "Gehienezko batura. Guztira "
+ report_header_total_excl_vat: "Zergak, guztira, gaindi. ( %{currency_symbol})"
+ report_header_total_incl_vat: "Zergak guztira ( %{currency_symbol})"
+ report_header_temp_controlled: Tenperatura-kontrola?
+ report_header_shipment_state: "Bidalketa-probintzia"
+ report_header_shipping_method: "Bidaltzeko metodoa"
+ report_header_is_producer: Ekoizlea?
+ report_header_not_confirmed: Baieztatu gabe
+ report_header_gst_on_income: Diru-sarreren gaineko BEZa
+ report_header_gst_free_income: Diru-sarrerak, BEZik gabe
+ report_header_total_untaxable_produce: Produktuak guztira, zergarik gabe
+ report_header_total_taxable_produce: Zergak dituzten produktuak, guztira
+ report_header_total_untaxable_fees: Komisio ez-zergagarriak guztira (zergarik gabe)
+ report_header_total_taxable_fees: Zerga zergagarriak guztira (zergak barne)
+ report_header_delivery_shipping_cost: Bidalketa-gastuak (zergak barne)
+ report_header_transaction_fee: Transakzioagatiko komisioa (zergarik gabe)
+ report_header_total_untaxable_admin: Tributatu ezin diren administrazio-doikuntzak guztira (zergarik gabe)
+ report_header_total_taxable_admin: Administrazioko zerga-doikuntzak guztira (zergak barne)
+ report_header_voucher_label: Bonuaren etiketa
+ report_header_voucher_amount: "Bonuaren kopurua ( %{currency_symbol})"
+ invoice_date: "Fakturaren data"
+ due_date: "Mugaeguna"
+ account_code: "Kontu-kodea"
+ equals: "Berdinak"
+ contains: "Badu"
+ discount: "Deskontua"
+ filter_products: "Iragazi poduktoak"
+ delete_product_variant: "Azken barietatea ezin da ezabatu!"
+ progress: "Aurrerapena"
+ saving: "Gordetzen..."
+ success: "osatuta"
+ failure: "epaitza"
+ unsaved_changes_confirmation: "Gorde gabeko aldaketak galdu egingo dira. Berdin jarraitu? "
+ one_product_unsaved: "Produktu baten aldaketak oraindik ez dira gorde."
+ products_unsaved: "Produktuen %{n} aldaketak oraindik ez dira gorde."
+ is_already_manager: "Administratzailea zara!"
+ no_change_to_save: "Ez dago aldaketarik gordetzeko"
+ user_invited: " %{email} erakundea administratzera gonbidatu dute"
+ add_manager: "Gehitu lehendik dagoen erabiltzaile bat"
+ users: "Erabiltzaileak"
+ about: "Honi buruz"
+ images: "Irudiak"
+ web: "Web"
+ primary_details: "Xehetasun nagusiak"
+ social: "Soziala"
+ shipping: "Bidalketa"
+ shipping_methods: "Bidaltzeko metodoak"
+ payment_methods: "Ordaintzeko metodoak"
+ payment_method_fee: "Transakzio Batzordea"
+ payment_processing_failed: "Ezin izan da ordainketa prozesatu, mesedez egiaztatu sartu dituzun xehetasunak"
+ payment_method_not_supported: "Ordainketa-metodo hori ez da onartzen. Mesedez, aukeratu beste bat. "
+ payment_updated: "Ordainketa eguneratua"
+ cannot_perform_operation: "Ezin izan da ordainketa eguneratu"
+ action_required: "Eskatutako ekintza"
+ tag_rules: "Etiketen arauak"
+ enterprise_fee_whole_order: Eskaera osoa
+ validation_msg_relationship_already_established: "^ Harreman hori badago."
+ validation_msg_at_least_one_hub: "^ Gutxienez kontsumo-talde bat hautatu behar da"
+ validation_msg_tax_category_cant_be_blank: "^ Zergaren kategoria ezin da hutsik egon"
+ validation_msg_is_associated_with_an_exising_customer: "Lehendik dagoen kontsumitzaile batekin lotuta dago"
+ content_configuration_pricing_table: "(OSOA: prezioen taula)"
+ content_configuration_case_studies: "(TODO: Azterketa-kasuak)"
+ content_configuration_detail: "(DENA: Xehetasuna)"
+ enterprise_name_error: "dagoeneko erabiltzen ari da. Zure erakundea hori bada eta jabetza erreklamatu nahiko bazenu, edo erakunde horrekin negoziatu nahi baduzu, jar zaitez harremanetan profil horren egungo kudeatzailearekin %{email} helbidera. "
+ enterprise_owner_error: "^ %{email} k ez du erakunde gehiago izateko baimenik (muga %{enterprise_limit} da)."
+ enterprise_role_uniqueness_error: "^ Rol hau hor dago."
+ enterprise_terms_and_conditions_type_error: "PDF fitxategiak bakarrik onartzen dira"
+ inventory_item_visibility_error: Egia edo gezurra izan behar du
+ product_importer_file_error: "Errorea: ez da fitxategirik igo"
+ product_importer_spreadsheet_error: "Ezin izan da fitxategia prozesatu: fitxategi mota baliogabea"
+ product_importer_products_save_error: Ez da produktu arrakastatsurik gorde
+ product_import_file_not_found_notice: 'Artxiboa ez da aurkitu edo ezin izan da ireki'
+ product_import_no_data_in_spreadsheet_notice: 'Ez da daturik aurkitu kalkulu-orrian'
+ order_choosing_hub_notice: Zure taldea hautatu da.
+ order_cycle_selecting_notice: Eskaera-zikloa hautatu du.
+ adjustments_tax_rate_error: "^ Egiaztatu doikuntza honetarako zergak zuzenak direla."
+ active_distributors_not_ready_for_checkout_message_singular: >-
+ %{distributor_names} taldea eskaera-ziklo aktibo batean agertzen da, baina ez
+ du baliozko bidalketa- eta ordainketa-metodorik. Konfiguratu arte, bezeroek
+ ezingo dute talde honetan erosi.
+ active_distributors_not_ready_for_checkout_message_plural: >-
+ %{distributor_names} taldeek eskaera-ziklo aktiboak zerrendatzen dituzte, baina
+ ez dute baliozko bidalketa- eta ordainketa-metodorik. Konfiguratu arte, bezeroek
+ ezingo dute kontzentratzaile horietan erosi.
+ enterprise_fees_update_notice: Zure erakundeko batzordeak eguneratu egin dira.
+ enterprise_register_package_error: "Aukeratu pakete bat"
+ enterprise_register_error: "Ezin izan da erregistroa osatu %{enterprise} rako"
+ enterprise_register_success_notice: "Zorionak! %{enterprise} erregistroa osatu da! "
+ enterprise_bulk_update_success_notice: "Arrakastaz eguneratutako erakundeak"
+ enterprise_bulk_update_error: 'Errorea eguneratzean'
+ enterprise_shop_show_error: "Bilatzen duzun denda ez da existitzen edo OFNn ez dago aktibo, mesedez, bisitatu beste denda batzuk."
+ order_cycles_bulk_update_notice: 'Eskaera-zikloak eguneratu egin dira.'
+ order_cycles_no_permission_to_coordinate_error: "Zure erakundeek ez dute eskaera-ziklo bat koordinatzeko baimenik"
+ order_cycles_no_permission_to_create_error: "Ez duzu baimenik enpresa honek koordinatutako eskaera-ziklo bat sortzeko."
+ order_cycle_closed: "Hautatu duzun eskaera-zikloa itxi berri da. Saia zaitez berriro! "
+ back_to_orders_list: "Itzuli eskaeren zerrendara"
+ no_orders_found: "Ez da eskaririk aurkitu"
+ order_information: "eskaeraren informazioa"
+ new_payment: "Ordainketa berria"
+ create_or_update_invoice: "Faktura sortu edo eguneratu"
+ date_completed: "Amaiera-data"
+ amount: "Kopurua"
+ invoice_number: "Faktura-zenbakia"
+ invoice_file: "Fitxategia"
+ state_names:
+ ready: Prest
+ pending: Egiteke
+ shipped: Bidalita
+ business_name: Erakundearen izena
+ js:
+ saving: 'Gordetzen...'
+ changes_saved: 'Gordetako aldaketak.'
+ authorising: "Baimena ematen..."
+ save_changes_first: Gorde aldaketak lehenengo.
+ all_changes_saved: Gordetako aldaketa guztiak
+ unsaved_changes: Aldaketak gorde gabe dituzu
+ all_changes_saved_successfully: Aldaketa guztiak behar bezala gorde dira
+ oh_no: "- Hara! Ezin izan dira aldaketak gorde."
+ unauthorized: "Ez duzu orrialde honetara sartzeko baimenik."
+ error: Errorea
+ unavailable: Ez dago eskuragarri
+ profile: Profila
+ hub: Taldea
+ shop: Denda
+ choose: Aukeratu
+ resolve_errors: 'Errore hauek ebazten ditu:'
+ more_items: "+ %{count} Gehiago"
+ default_card_updated: Txartel lehenetsi eguneratua
+ default_card_voids_auth: Txartel lehenetsia aldatzeak dendetan txartel hori kargatzeko dauden baimenak ezabatuko ditu. Aurrez zehaztutako txartela eguneratu ondoren, dendak berriro baimendu ditzakezu. Aurretik zehaztutako txartela aldatu nahi duzu?
+ cart:
+ add_to_cart_failed: >
+ Arazo bat egon da orgatxoan produktu hori gehitzean. Baliteke libre egoteari
+ utzi izana edo denda itxi izana.
+ admin:
+ unit_price_tooltip: "Prezio unitarioak gardentasuna handitzen du, bezeroei produktuen eta bilgarriaren tamainen arteko prezioak erraz alderatzeko aukera ematen baitie. Kontuan izan erakusleihoan erakusten den azken prezio unitarioa diferentea izan daitekeela, zergak eta tarifak barne hartzen baititu. "
+ enterprise_limit_reached: "Konturako erakundeen muga estandarra lortu duzu. Idatzi %{contact_email} helbidera, handitu behar baduzu. "
+ modals:
+ got_it: "Ulertzen dut"
+ confirm: "Baieztatu"
+ close: "Itxi"
+ continue: "Jarraitu"
+ cancel: "Ezeztatu"
+ invite: "Gonbidatu"
+ invite_title: "Erregistratu gabeko erabiltzaile bat gonbidatu"
+ tag_rule_help:
+ title: Etiketen arauak
+ overview: Ikuspegi orokorra
+ overview_text: >
+ Etiketa-arauek kontsumitzaile jakin batzuek zer elementu ikus ditzaketen edo
+ ez deskribatzeko modu bat ematen dute. Gauzak bidaltzeko metodoak,
+ ordaintzeko metodoak, produktuak eta eskaera-zikloak izan daitezke.
+ by_default_rules: "'Besterik ezean...' Arauak "
+ by_default_rules_text: >
+ Aurrez zehaztutako arauek elementuak ezkutatzea ahalbidetzen dute, aurrez
+ zehaztutako moduan ikusgai egon ez daitezen. Jokabide hori baliogabetu
+ egin daiteke etiketa partikularrak dituzten kontsumitzaileentzat aurrez
+ zehaztu gabeko arauen bidez.
+ customer_tagged_rules: "\" etiketatutako bezeroen arauak...\""
+ customer_tagged_rules_text: >
+ Kontsumitzaile espezifikoaren etiketa batekin lotutako arauak sortzean, kontsumitzaileentzat
+ aurrez zehaztutako portaera (elementuak erakusteko edo ezkutatzeko)
+ deusezta dezakezu etiketa zehatzarekin.
+ terms_and_conditions_info:
+ title: "Terminoak eta baldintzak igotzen"
+ message_1: "Baldintzak eta baldintzak dira zure, saltzailearen eta eroslearen arteko kontratua. Fitxategi bat hemen kargatzen baduzu, erosleek beren baldintzak onartu behar dituzte erosketa osatzeko. Eroslearentzat, erosketarekin jarraitzeko markatu behar duzun eskaera egiteko unean egiaztapen-lauki gisa agertuko da. Biziki gomendatzen dizugu terminoak eta baldintzak legedi nazionalaren arabera kargatzea. "
+ message_2: "Erosleek behin bakarrik onartu beharko dituzte baldintzak eta baldintzak. Hala ere, bere baldintzak eta baldintzak aldatzen badira, erosleek berriro onartu beharko dituzte eskaera egin aurretik. "
+ terms_and_conditions_warning:
+ title: "Terminoak eta baldintzak igotzen"
+ message_1: "Erosle guztiek onartu beharko dituzte erosketa amaitutakoan. Artxiboa eguneratzen badu, erosle guztiek berriro onartu beharko dituzte erosketa amaitzean. "
+ message_2: "Harpidetzak dituzten erosleei, Terminoak eta baldintzak (edo horietan egindako aldaketak) bidali behar dizkie posta elektronikoz oraingoz, ez die ezer jakinaraziko termino eta baldintza berri horiei buruz."
+ business_address_info:
+ message: "Enpresaren legezko izena, legezko helbidea eta legezko telefono-zenbakia erabiltzen dira erregistratutako legezko erakunde bat fakturatzen duten enpresentzat, merkataritza-informazio publikoaz bestelako xehetasunekin. Datu horiek fakturetan BAKARRIK erabiliko dira. Xehetasun horiek hutsik badaude, zure izen publikoa, helbidea eta telefono-zenbakia fakturetan erabiliko dira. "
+ panels:
+ save: GORDE
+ saved: GORDETA
+ saving: GORDETZEN
+ enterprise_package:
+ hub_profile: Taldearen profila
+ hub_profile_cost: "KOSTUA: DOAKOA BETIKO"
+ hub_profile_text1: >
+ Jendeak aurki zaitzake eta zurekin harremanetan jarri Open Food Network-en.
+ Zure antolaketa mapan ikusiko da, eta hemen bilatu ahal izango da: zerrendak.
+ hub_profile_text2: >
+ Profil bat izatea eta Open Food Network-en bidez loturak egitea dohainik
+ izango da betiko.
+ hub_shop: Denda
+ hub_shop_text1: >
+ Zure antolamendua tokiko kontsumo-sistema baten bizkarrezurra da. Gehitu beste
+ erakunde batzuetako produktuak eta saldu Open Food Network-en duzun dendaren
+ bidez.
+ hub_shop_text2: >
+ Taldeek hainbat helburu izan ditzakete: elikagai-kooperatiba bat, kontsumo-talde bat,
+ tokiko supermerkatu bat...
+ hub_shop_text3: >
+ Zure produktuak ere saldu nahi badituzu, erakunde hori aldatu beharko duzu
+ ekoiztetxea izateko.
+ choose_package: Hautatu profil bat
+ choose_package_text1: >
+ Zure antolaketa ez da erabat aktibatuko ezkerreko aukeren profil bat
+ aukeratu arte.
+ choose_package_text2: >
+ Egin klik aukera batean profil bakoitzari buruzko informazio zehatzagoa ikusteko,
+ eta sakatu GORDE botoi gorria amaitzen duzunean.
+ profile_only: Profila bakarrik
+ profile_only_cost: "KOSTUA: DOAKOA BETIKO"
+ profile_only_text1: >
+ Profilak ikusgarri egiten zaitu eta pertsonek zurekin harremanetan jartzeko
+ aukera ematen du. Gardentasun handiena emateko eta zure historia azaltzeko
+ modu bat da.
+ profile_only_text2: >
+ Elikagaiak ekoizten kontzentratu nahi baduzu eta beste pertsona batzuei saltzeko
+ lana utzi nahi baduzu, ez duzu Open Food Network dendarik behar.
+ profile_only_text3: >
+ Gehitu zure produktuak Open Food Network-era, kontsumo-taldeei zure
+ produktuak saltzeko aukera emanez.
+ producer_shop: Denda ekoizlea
+ producer_shop_text1: >
+ Saldu zure produktuak kontsumitzaileei zuzenean Open Food Network dendarekin.
+ producer_shop_text2: >
+ Ekoizle-denda bat zure produktuarentzat da, eta beste ekoizle batzuen
+ produktuak saldu nahi badituzu, hautatu 'Ekoizle Taldea.
+ producer_hub: Ekoizle-taldea
+ producer_hub_text1: >
+ Zure antolamendua tokiko kontsumo-sistema baten bizkarrezurra da. Gehitu
+ zure produktuak edo beste erakunde batzuetakoak eta saldu Open Food
+ Networkeko zure dendaren bidez.
+ producer_hub_text2: >
+ Ekoizle-taldeek hainbat helburu izan ditzakete: elikagai-kooperatiba
+ bat, kontsumo-talde bat, tokiko supermerkatu bat...
+ producer_hub_text3: >
+ Open Food Network-en helburua da ahalik eta erakunde-eredu gehien babestea; zure
+ erakundea martxan jartzeko behar dituzun tresnak eman nahi dizkizugu.
+ get_listing: Zerrenda bat lortu
+ always_free: BETI DOAN
+ sell_produce_others: Beste batzuen ekoizpena saltzea
+ sell_own_produce: Saldu zure ekoizpena.
+ sell_both: Saldu zure ekoizpena eta beste batzuena
+ enterprise_producer:
+ producer: Ekoizlea
+ producer_text1: >
+ Ekoizleek jateko edo edateko gauza goxoak sor ditzakete. Ekoizlea zara
+ landatzen, hobetzen, hartzitzen, jezten edo moldatzen baduzu.
+ producer_text2: >
+ Ekoizleek beste ekintza batzuk ere egin ditzakete, hala nola beste erakunde
+ batzuetako produktuak gehitzea eta Open Food Network dendan saltzea.
+ non_producer: Ez-ekoizlea
+ non_producer_text1: >
+ Ez-ekoizleek ez dute beren kabuz elikagairik ekoizten, eta horrek esan
+ nahi du ezin dituztela beren produktuak sortu Open Food Network-en
+ bidez eskaintzeko.
+ non_producer_text2: >
+ Ekoizleak ez direnak, aldiz, ekoizpen-etxeak azken kontsumitzaileekin
+ lotzen espezializatzen dira, dela elikagaiak entregatuz, paketatuz,
+ salduz.
+ producer_desc: Ekoizleak
+ producer_example: adib. NEKAZARIAK, EKOIZLEAK
+ non_producer_desc: Gainerako erakunde guztiak
+ non_producer_example: adib. Kontsumo-taldeak, hurbileko dendak...
+ enterprise_status:
+ status_title: " %{name} konfiguratuta eta funtzionatzeko prest dago!"
+ severity: Larritasuna
+ description: Deskribapena
+ resolve: Ebatzi
+ exchange_products:
+ load_more_variants: "Aldaera gehiago kargatu"
+ load_all_variants: "aldaera guztiak kargatu"
+ select_all_variants: "Hautatu dena"
+ variants_loaded: " %{num_of_variants_loaded} {total_number_of_variants} kargatutako aldaeren"
+ loading_variants: "Aldaerak kargatzen"
+ tag_rules:
+ shipping_method_tagged_top: "Etiketatutako bidalketa-metodoak"
+ shipping_method_tagged_bottom: "dira:"
+ payment_method_tagged_top: "Etiketatutako ordainketa-metodoak"
+ payment_method_tagged_bottom: "dira:"
+ order_cycle_tagged_top: "Etiketatutako eskaera-zikloak"
+ order_cycle_tagged_bottom: "dira:"
+ inventory_tagged_top: "Inbentario-aldaera etiketatuak"
+ inventory_tagged_bottom: "dira:"
+ new_tag_rule_dialog:
+ select_rule_type: "Hautatu erregela mota bat:"
+ add_rule: "Erregela gehitu"
+ enterprise_fees:
+ inherit_from_product: "Produktutik heredatu"
+ orders:
+ index:
+ per_page: " %{results} orriko"
+ view_file: "Ikusi fitxategia"
+ compiling_invoices: "Fakturak sortzen"
+ bulk_invoice_created: "Sortutako faktura bateratua"
+ bulk_invoice_failed: "Errorea faktura bateratua sortzean"
+ please_wait: "Mesedez, itxaron PDFa prest egon arte leiho hau itxi aurretik."
+ order_state:
+ address: "helbidea"
+ adjustments: "doikuntzak"
+ awaiting_return: "Itzuleraren zain"
+ canceled: "ezeztatuta"
+ cart: "gurditxoa"
+ complete: "osatu"
+ confirm: "Baieztatu"
+ delivery: "Entrega"
+ paused: "pausatua"
+ payment: "ordainketa"
+ pending: "malda"
+ resumed: "laburtua"
+ returned: "itzulita"
+ confirmation: "baieztapena"
+ shipment_states:
+ backorder: "egiteke dagoen ordena"
+ partial: "partziala"
+ pending: "malda"
+ ready: "Prest"
+ shipped: "bidalia"
+ canceled: "ezeztatuta"
+ payment_states:
+ balance_due: "zor den saldoa"
+ completed: "osatuta"
+ checkout: "balidatu"
+ credit_owed: "zor den kreditua"
+ failed: "huts egin"
+ paid: "ordaindua"
+ pending: "malda"
+ requires_authorization: "Eskatutako baimena"
+ processing: "prozesatzen"
+ void: "malda"
+ invalid: "baliogabea"
+ quantity_unavailable: "Izakinak ez dira nahikoak. Gorde gabeko artikulua! "
+ quantity_unchanged: "Aurreko kopuruarekiko aldaketarik gabeko kopurua."
+ resend_user_email_confirmation:
+ resend: "Birbidali"
+ sending: "Birbidali..."
+ done: "Bidalketa egina"
+ failed: "Huts egindako birbidalketa"
+ order_cycles:
+ schedules:
+ adding_a_new_schedule: "Gehitu programazio berri bat"
+ updating_a_schedule: "Programazio bat eguneratzea"
+ create_schedule: "Programazioa sortu"
+ update_schedule: "Eguneratu programazioa"
+ delete_schedule: "Ezabatu programazioa"
+ schedule_name_placeholder: "Programazioaren izena"
+ created_schedule: "Sortutako programazioa"
+ updated_schedule: "Programazio eguneratua"
+ deleted_schedule: "Ezabatutako programazioa"
+ name_required_error: "Mesedez, sartu izen bat programazio honetarako"
+ no_order_cycles_error: "Hautatu gutxienez eskaera-ziklo bat (arrastatu eta askatu)"
+ available: "Eskuragarri"
+ selected: "Hautatua"
+ customers:
+ index:
+ add_customer: "Gehitu kontsumitzailea"
+ add_a_new_customer_for: "Kontsumitzaile berri bat gehitu %{shop_name} rako"
+ customer_placeholder: "customer@example.org"
+ valid_email_error: "Sartu baliozko mezu elektroniko bat"
+ subscriptions:
+ error_saving: "Errorea harpidetza gordetzean"
+ new:
+ please_select_a_shop: "Mesedez, aukeratu denda bat"
+ enterprises:
+ form:
+ images:
+ removed_logo_successfully: "Logotipoa arrakastaz ezabatu da"
+ immediate_logo_removal_warning: "Logotipoa konfirmatu eta berehala ezabatuko da."
+ removed_promo_image_successfully: "Sustapen-irudia arrakastaz ezabatu da"
+ immediate_promo_image_removal_warning: "Promozio-irudia ezabatu egingo da baieztatu eta berehala."
+ immediate_terms_and_conditions_removal_warning: "Terminoen eta baldintzen artxiboa konfirmatu eta berehala ezabatuko da."
+ removed_terms_and_conditions_successfully: "Terminoen eta baldintzen artxiboa behar bezala ezabatu da"
+ insufficient_stock: "Stock gutxiegi erabilgarria, %{on_hand} baino ez da geratzen"
+ out_of_stock:
+ reduced_stock_available: Stock murriztu erabilgarria
+ out_of_stock_text: >
+ Erosten ari zinen bitartean, zure orgatxoko produktu baten edo gehiagoren stock-mailak
+ murriztu egin dira. Hona zer aldatu den:
+ now_out_of_stock: stocketik kanpo dago orain.
+ only_n_remaining: " %{num} baino ez dira geratzen."
+ shopfront:
+ variant:
+ add_to_cart: "Gehitu"
+ in_cart: "orgatxoan"
+ quantity_in_cart: " %{quantity} orgatxoan"
+ bulk_buy_modal:
+ min_quantity: "Gutxieneko kopurua"
+ max_quantity: "Gehieneko kopurua"
+ price_breakdown: "Prezioaren banakapena"
+ unit_price_tooltip: "Hau da produktu honen aleko prezioa. Produktuen prezioa alderatzeko aukera ematen dizu, ontzien tamaina eta pisua edozein izanda ere. "
+ variants:
+ on_demand:
+ 'yes': "Eskariaren arabera"
+ variant_overrides:
+ on_demand:
+ use_producer_settings: "Produktorearen stockaren konfigurazioa erabiltzea."
+ 'yes': "Bai"
+ 'no': "Ez"
+ inventory_products: "Inbentarioko produktuak"
+ hidden_products: "Ezkutuko produktuak"
+ new_products: "Produktu berriak"
+ reset_stock_levels: Stock-mailak lehengoratzea lehenetsitako balioetan
+ changes_to: Aldaketak
+ one_override: Bata gainidatzi egin da
+ overrides: gainidatzi
+ remain_unsaved: Gorde gabe daude.
+ no_changes_to_save: 'Ez dago aldaketarik gordetzeko. '
+ no_authorisation: "Ezin izan da baimenik lortu aldaketa horiek gordetzeko, eta, beraz, ez dira gordeko."
+ some_trouble: "Arazo batzuk izan dira gordetzean: %{errors}"
+ changing_on_hand_stock: Stock-mailak aldatuz...
+ stock_reset: Reset Stock lehenetsitako balioetara
+ tag_rules:
+ show_hide_variants: 'Aldaerak erakutsi edo ezkutatu nire dendan'
+ show_hide_shipping: 'Erosterakoan bidalketa-metodoak erakutsi edo ezkutatu'
+ show_hide_payment: 'Erosterakoan ordaintzeko moduak erakutsi edo ezkutatu'
+ show_hide_order_cycles: 'Nire dendan eskaera-zikloak erakutsi edo ezkutatu'
+ visible: IKUSGAI
+ not_visible: EZ DA IKUSTEN
+ services:
+ unsaved_changes_message: Gorde gabeko aldaketak oraindik existitzen dira, gorde orain ala ez jakin?
+ save: GORDE
+ ignore: EZ IKUSIARENA EGIN
+ add_to_order_cycle: "Erantsi eskaera-zikloari"
+ manage_products: "Produktuak kudeatzea"
+ edit_profile: "Editatu profila"
+ add_products_to_inventory: "Gehitu produktuak inbentariora"
+ resources:
+ could_not_delete_customer: 'Ezin izan da kontsumitzailea ezabatu'
+ product_import:
+ confirmation: |
+ Horrek zeroko stock-maila ezarriko du erakunde horrentzako produktu guztietan,
+ eta ez dago igotako fitxategian.
+ order_cycles:
+ unsaved_changes: "Gorde gabeko aldaketak dituzu"
+ bulk_save_error: "Hara! Ezin izan dira aldaketak gorde. "
+ create_failure: "Errorea eskaera-zikloa sortzean"
+ update_success: 'Eskaera-zikloa eguneratu da.'
+ update_failure: "Errorea eskaera-zikloa eguneratzean"
+ no_distributors: Ez dago banatzailerik eskaera-ziklo honetan. Eskaera-ziklo hori ez da kontsumitzaileentzat ikusgai egongo bat gehitu arte. Eskaera-ziklo hau gordetzen jarraitu nahi duzu? '
+ enterprises:
+ producer: "Ekoizlea"
+ non_producer: "Ez ekoizlea"
+ customers:
+ select_shop: 'Aukeratu lehenik denda bat'
+ could_not_create: Barkatu! Ezin izan da sortu
+ subscriptions:
+ closes: itxi
+ closed: itxita
+ close_date_not_set: Ezarri gabeko itxiera-data
+ spree:
+ users:
+ order: "Eskaera"
+ registration:
+ welcome_to_ofn: "Ongi etorri Open Food Network-era!"
+ signup_or_login: "Erregistratuz hasten da (edo saioa hasiz)"
+ have_an_account: "Baduzu konturik?"
+ action_login: "Hasi saioa orain."
+ stripe_elements:
+ unknown_error_from_stripe: |
+ Arazo bat izan zen zure txartela gure ordainketa-pasabidean konfiguratzean. Eguneratu orria eta saiatu berriro; bigarren aldiz huts egiten baduzu, gurekin harremanetan jarri asistentzia lortzeko.
+ trix:
+ bold: "Lodia"
+ code: "Kodea"
+ italic: "Italica"
+ link: "Esteka"
+ numbers: "Zenbakiak"
+ redo: "Berregin"
+ strike: "Tatxatuta"
+ undo: "Desegin"
+ unlink: "Askatu"
+ url: "URL"
+ urlPlaceholder: "Mesedez, sartu URL bat txertatzeko"
+ producers:
+ signup:
+ start_free_profile: "Hasi doako profil batekin, eta zabaldu prest zaudenean!"
+ order_management:
+ reports:
+ bulk_coop:
+ filters:
+ bulk_coop_allocation: "Taldeko erosketa - Assignazioa"
+ bulk_coop_customer_payments: "Taldeko erosketa - Kontsumitzaileen ordainketak"
+ bulk_coop_packing_sheets: "Taldeko erosketa - Enbalaje-orriak"
+ bulk_coop_supplier_report: "Taldeko erosketa – Hornitzaile bakoitzeko guztizkoak"
+ enterprise_fee_summaries:
+ filters:
+ date_range: "Daten tartea"
+ report_format_csv: "CSV gisa deskargatu"
+ generate_report: "Sortu txostena"
+ report:
+ none: "Bat ere ez"
+ select_and_search: "Aukeratu iragazkiak eta egin klik TXOSTENA SORTU botoian zure datuetara sartzeko."
+ enterprise_fee_summary:
+ date_end_before_start_error: "hasi ondoren izan behar du"
+ parameter_not_allowed_error: "Ez duzu txosten honetarako hautatutako iragazki bat edo gehiago erabiltzeko baimenik."
+ fee_calculated_on_transfer_through_all: "Denak"
+ fee_calculated_on_transfer_through_entire_orders: "Eskaera osoak %{distributor} ren bidez"
+ tax_category_various: "Hainbat"
+ fee_type:
+ payment_method: "Ordainketa-transakzioa"
+ shipping_method: "Bidalketa"
+ fee_placements:
+ supplier: "Sartu"
+ distributor: "Irtena"
+ coordinator: "Koordinatzailea"
+ tax_category_name:
+ shipping_instance_rate: "Plataformako tarifa"
+ formats:
+ csv:
+ header:
+ fee_type: "Batzorde mota"
+ enterprise_name: "Erakundearen jabea"
+ fee_name: "Batzordearen izena"
+ customer_name: "Kontsumitzailea"
+ fee_placement: "Komisioak esleitzea"
+ fee_calculated_on_transfer_through_name: "Komisioak transferentzien bidez kalkulatzea"
+ tax_category_name: "Zergen kategoria"
+ total_amount: "€€SUM"
+ html:
+ header:
+ fee_type: "Batzorde mota"
+ enterprise_name: "Erakundearen jabea"
+ fee_name: "Batzordearen izena"
+ customer_name: "Kontsumitzailea"
+ fee_placement: "Komisioak esleitzea"
+ fee_calculated_on_transfer_through_name: "Komisioak transferentzien bidez kalkulatzea"
+ tax_category_name: "Zergen kategoria"
+ total_amount: "€€ SUM"
+ invalid_filter_parameters: "Txosten honetarako hautatu zenituen iragazkiak ez dira baliozkoak."
+ report:
+ none: "Bat ere ez"
+ order: "Eskaera"
+ order_details: "Eskaeraren xehetasunak"
+ customer_details: "Kontsumitzailearen xehetasunak"
+ adjustments: "Doikuntzak"
+ payments: "Ordainketak"
+ return_authorizations: "Itzultzeko baimenak"
+ credit_owed: "Zor den kreditua"
+ new_adjustment: "Doikuntza berria"
+ payment: "Ordainketa"
+ payment_method: "Ordaintzeko modua"
+ shipment: "Bidalketa"
+ shipment_inc_vat: "Bidalketa, VAT barne"
+ shipping_tax_rate: "Bidalketa-zergak"
+ category: "Kategoria"
+ import_date: "Inportazio-data"
+ delivery: "Entrega"
+ temperature_controlled: "Tenperaturaren kontrola"
+ new_product: "Produktu berria"
+ administration: "Administrazioa"
+ logged_in_as: "Honela konektatua:"
+ account: "Kontua"
+ logout: "Saioa itxi"
+ date_range: "Daten tartea"
+ status: "Egoera"
+ new: "Berria"
+ start: "Hasiera"
+ end: "Amaiera"
+ stop: "Gelditu"
+ first: "lehenengoa"
+ previous: "Aurrekoa"
+ last: "Azkena"
+ spree:
+ order_updated: "Eskaera eguneratua"
+ add_country: "Gehitu herrialdea"
+ add_state: "Gehitu egoera"
+ adjustment: "Doikuntza"
+ all: "Denak"
+ associated_adjustment_closed: "Doikuntza elkartu itxia"
+ back_to_adjustments_list: "Doikuntzetara itzuli"
+ back_to_users_list: "Erabiltzaileengana itzuli"
+ back_to_zones_list: "Itzuli eremuetara"
+ card_code: "Txartelaren kodea"
+ card_number: "Txartelaren zenbakia"
+ category: "Kategoria"
+ created_successfully: "Arrakastaz sortua"
+ credit: "Kreditua"
+ editing_tax_category: "Kategoria fiskala editatzen"
+ editing_tax_rate: "Zerga-tasa editatzen"
+ editing_zone: "Eremua editatzen"
+ editing_state: "Probintzia editatzen"
+ expiration: "Mugaeguna"
+ invalid_payment_provider: "Ordainketa-hornitzaile baliogabea"
+ items_cannot_be_shipped: "Artikuluak ezin dira bidali"
+ gateway_config_unavailable: "Erabilgarri ez dagoen pasabidearen konfigurazioa"
+ gateway_error: "Ordainketa kobraezina"
+ more: "Gehiago"
+ new_adjustment: "Doikuntza berria"
+ new_tax_category: "Zergen kategoria berria"
+ new_user: "Erabiltzaile berria"
+ no_pending_payments: "Ez duzu ordainketarik egiteke"
+ remove: "Ezabatu"
+ none: "Bat ere ez"
+ not_found: "Ez dut aurkitu"
+ notice_messages:
+ variant_deleted: "Aldaera ezabatua"
+ payment_method_not_supported: "Onartu gabeko ordainketa-metodoa"
+ resend_authorization_email: "Baimenaren mezu elektronikoa birbidali"
+ rma_credit: "RMA kreditua"
+ refund: "Dirua itzultzea"
+ server_error: "Zerbitzariaren errorea"
+ shipping_method_names:
+ UPS Ground: "UPS Ground"
+ pick_up: "Baserrian jaso"
+ start_date: "Hasiera-data"
+ successfully_removed: "Arrakastaz ezabatua"
+ updating: "Eguneratzen"
+ your_order_is_empty_add_product: "Zure eskaera hutsik dago, bilatu eta gehitu produktu bat goian"
+ add_product: "Gehitu produktua"
+ name_or_sku: "Izena edo SKU kodea (sartu gutxienez produktuaren izenaren lehen 4 karaktereak)"
+ resend: "Birbidali"
+ back_to_orders_list: "Itzuli eskaeren zerrendara"
+ back_to_payments_list: "Itzuli ordainketa-zerrendara"
+ back_to_states_list: "Itzuli eskualdeen zerrendara"
+ return_authorizations: "Itzultzeko baimenak"
+ cannot_create_returns: "Ezin da itzulketarik sortu, eskaera honek ez baitu bidalitako unitaterik."
+ select_stock: "Aukeratu stocka"
+ location: "Kokapena"
+ count_on_hand: "Erabilgarritasun-kontua"
+ quantity: "Kopurua"
+ on_demand: "Eskariaren arabera"
+ on_hand: "Eskuragarri"
+ package_from: "profila"
+ item_description: "Artikuluaren deskribapena"
+ price: "Prezioa"
+ total: "Guztira"
+ edit: "Editatu"
+ split: "Zatiketa"
+ delete: "Ezabatu"
+ cannot_set_shipping_method_without_address: "Ezin da bidalketa-metodoa ezarri kontsumitzailearen xehetasunak eman arte."
+ no_tracking_present: "Ez da jarraipenari buruzko xehetasunik eman."
+ tracking: "Jarraipena"
+ tracking_number: "Jarraipen-zenbakia"
+ order_total: "Eskaera, guztira"
+ customer_details: "Kontsumitzailearen xehetasunak"
+ customer_details_updated: "Kontsumitzailearen datuak eguneratuta"
+ customer_search: "Kontsumitzaileen bilaketa"
+ choose_a_customer: "Aukeratu kontsumitzaile bat"
+ account: "Kontua"
+ billing_address: "Fakturazio-helbidea"
+ shipping_address: "Bidalketa-helbidea"
+ first_name: "Izena"
+ last_name: "Abizena"
+ street_address: "Helbidea"
+ street_address_2: "Helbidea (jarraipena)"
+ city: "Hiria"
+ zip: "Posta-kodea"
+ country: "Herrialdea"
+ state: "Probintzia"
+ phone: "Telefonoa"
+ update: "Eguneratu"
+ use_billing_address: "Erabili fakturazio-helbidea"
+ adjustments: "Doikuntzak"
+ continue: "Jarraitu"
+ fill_in_customer_info: "Mesedez, bete kontsumitzailearen informazioa"
+ credit_card: "Kreditu-txartela"
+ new_payment: "Ordainketa berria"
+ capture: "Ordainduta"
+ capture_and_complete_order: "Eskaera harrapatu eta osatu"
+ void: "Egiteke"
+ login: "Saioa hasi"
+ password: "Pasahitza"
+ signature: "Sinadura"
+ solution: "Soluzioa"
+ landing_page: "Hasierako orria"
+ server: "Zerbitzaria"
+ test_mode: "Probatzeko modua"
+ logourl: "Logoaren URLa"
+ are_you_sure_delete: "Ziur zaude erregistro hau ezabatu nahi duzula?"
+ confirm_delete: "Ezeztapena baieztatu"
+ configurations: "Konfigurazioak"
+ general_settings: "Konfigurazio orokorra"
+ site_name: "Gunearen izena"
+ site_url: "Gunearen URLa"
+ default_seo_title: "Bigarren titulu lehenetsia"
+ default_meta_description: "Helmuga Deskribapen lehenetsia"
+ default_meta_keywords: "Aurrez zehaztutako gako-hitzak"
+ currency_decimal_mark: "Monetaren marka hamartarra"
+ currency_settings: "Moneta-doikuntzak"
+ currency_symbol_position: Diruaren sinboloa jarri kantitatearen aurretik edo ondoren?
+ currency_thousands_separator: "Monetaren milako-bereizlea"
+ hide_cents: "Xentimoak ezkutatu"
+ display_currency: "Erakutsi txanpona"
+ choose_currency: "Moneta aukeratu"
+ mail_method_settings: "Posta-metodoaren konfigurazioa"
+ general: "Orokorra"
+ enable_mail_delivery: "Posta-entrega gaitu"
+ send_mails_as: "Honelako mezuak bidali"
+ smtp_send_all_emails_as_from_following_address: "Bidali mezu guztiak helbide honetatik aurrera."
+ send_copy_of_all_mails_to: "Bidali mezu guztien kopia"
+ smtp_send_copy_to_this_addresses: "Bidali irteten diren mezu guztien kopia bat helbide honetara. Helbide anitzetarako, bereizi komekin. "
+ tax_categories: "Zerga-kategoriak"
+ listing_tax_categories: "Zerga-kategorien zerrenda"
+ back_to_tax_categories_list: "Itzuli zerga-kategorien zerrendara"
+ tax rate: "Zergen %"
+ new_tax_rate: "Zerga berria"
+ tax_category: "Zergen kategoria"
+ tax_rates: "Zergen %"
+ rate: "Zerga"
+ tax_rate_amount_explanation: "Zerga-tasak kopuru hamartarra dira kalkuluetan laguntzeko (hau da, zerga-tasa %5ekoa bada, sartu 0.05)"
+ included_in_price: "Prezioan sartuta"
+ show_rate_in_label: "Erakutsi zerga etiketan"
+ back_to_tax_rates_list: "Zergen zerrendara itzuli"
+ tax_settings: "Zergen konfigurazioa"
+ zones: "Eremuak"
+ new_zone: "Eremu berria"
+ default_tax: "Zerga lehenetsia"
+ default_tax_zone: "Zerga-eremu lehenetsia"
+ country_based: "Herrialdean oinarritua"
+ state_based: "Estatuan oinarritua"
+ countries: "Herrialdeak"
+ listing_countries: "Herrialdeen zerrenda"
+ iso_name: "ISO izena"
+ states_required: "Eskatutako egoerak"
+ editing_country: "Editatu herrialdea"
+ back_to_countries_list: "Itzuli herrialdeen zerrendara"
+ states: "Egoerak"
+ abbreviation: "Laburdura"
+ new_state: "Egoera berria"
+ payment_methods: "Ordaintzeko metodoak"
+ taxons: "Produktuaren kategoriak"
+ shipping_methods: "Bidaltzeko metodoak"
+ shipping_method: "Bidaltzeko metodoa"
+ shipment: "Bidalketa"
+ payment: "Ordainketa"
+ status: "Egoera"
+ shipping_categories: "Bidalketa-kategoriak"
+ new_shipping_category: "Bidalketa-kategoria berria"
+ back_to_shipping_categories: "Bidalketa-kategorietara itzuli"
+ editing_shipping_category: "Bidalketa-kategoriaren edizioa"
+ name: "Izena"
+ description: "Deskribapena"
+ type: "Mota"
+ default: "lehenetsita"
+ calculator: "Kalkulagailua"
+ zone: "Eremua"
+ display: "Erakutsi"
+ environment: "Giroa"
+ active: "Aktiboa"
+ nore: "Gehiago"
+ no_results: "Ez dago emaitzarik"
+ create: "Sortu"
+ loading: "Kargatzen"
+ flat_percent: "Ehuneko laua"
+ per_kg: "Kg bakoitzeko"
+ amount: "Kopurua"
+ currency: "Moneta"
+ first_item: "Lehen artikuluaren kostua"
+ additional_item: "Artikulu gehigarriaren kostua"
+ max_items: "Max Artikuluak"
+ minimal_amount: "Gutxieneko kopurua"
+ normal_amount: "Kopuru normala"
+ discount_amount: "Deskontuaren zenbatekoa"
+ no_images_found: "Ez da irudirik aurkitu"
+ new_image: "Irudi berria"
+ filename: "Fitxategiaren izena"
+ alt_text: "Ordezko testua"
+ thumbnail: "Miniatura"
+ back_to_images_list: "Itzuli irudi-zerrendara"
+ email: Emaila
+ account_updated: "Kontu eguneratua!"
+ email_updated: "Kontua eguneratu egingo da posta elektroniko berria baieztatzen denean."
+ my_account: "Nire kontua"
+ date: "Data"
+ time: "Ordua"
+ inventory_error_flash_for_insufficient_quantity: "Zure orgatxoko artikulu bat ez dago eskuragarri."
+ inventory: Inbentarioa
+ zipcode: Posta-kodea
+ weight: Pisua (kilogramoko edo lb-ko)
+ error_user_destroy_with_orders: "Eskaerak beteta dituzten erabiltzaileak ezin dira ezabatu"
+ cannot_create_payment_without_payment_methods: "Ezin da ordainketa bat sortu agindu baterako ordainketa-bide zehatzik gabe"
+ please_define_payment_methods: "mesedez, definitu ordainketa-metodoak"
+ options: "Aukerak"
+ has_no_shipped_units: "ez du bidalitako unitaterik"
+ successfully_created: ' %{resource} arrakastaz sortu da!'
+ successfully_updated: ' %{resource} ondo eguneratu da!'
+ payment_method: "Ordaintzeko modua"
+ payment_processing_failed: "Ezin izan da ordainketa prozesatu, mesedez egiaztatu sartu dituzun xehetasunak"
+ not_available: "Ez dago eskuragarri"
+ sku: "SKU"
+ there_are_no_items_for_this_order: "Ez dago artikulurik eskaera honetarako."
+ order_populator:
+ out_of_stock: ' %{item} agortuta dago.'
+ actions:
+ update: "Eguneratu"
+ cancel: "Ezeztatu"
+ shared:
+ error_messages:
+ errors_prohibited_this_record_from_being_saved:
+ one: "Akats batek eragotzi zuen erregistro hau gordetzea:"
+ few: " %{count} akatsek eragotzi zuten erregistro hori gordetzea:"
+ many: " %{count} akatsek eragotzi zuten erregistro hori gordetzea:"
+ other: " %{count} akatsek eragotzi zuten erregistro hori gordetzea:"
+ there_were_problems_with_the_following_fields: "Arazoak izan ziren honako eremu hauekin"
+ payments_list:
+ date_time: "Eguna eta ordua"
+ amount: "Kopurua"
+ payment_method: "Ordaintzeko modua"
+ payment_state: "Ordainketaren egoera"
+ errors:
+ messages:
+ included_price_validation: "ezin da hautatu aldez aurretik zehaztutako eremu fiskal bat ezarri ezean"
+ blank: "ezin da hutsik egon"
+ layouts:
+ admin:
+ login_nav:
+ header:
+ store: Denda
+ validation:
+ must_be_int: "zenbaki oso bat izan behar du"
+ admin:
+ images:
+ edit:
+ title: Aldatu produktuaren argazkia
+ close: Atzera
+ upload: Igo argazkia
+ mail_methods:
+ send_testmail: "Bidali probako posta elektronikoa"
+ testmail:
+ delivery_success: "Probako mezu elektronikoa bidali da."
+ error: "Errorea gertatu da probako posta elektronikoa bidaltzen saiatzean."
+ unit_price_tooltip: "Prezio unitarioak gardentasuna handitzen du, bezeroei produktuen eta bilgarriaren tamainen arteko prezioak erraz alderatzeko aukera ematen baitie. Kontuan izan erakusleihoan erakusten den azken prezio unitarioa diferentea izan daitekeela, zergak eta tarifak barne hartzen baititu. "
+ subscriptions:
+ number: "Zenbakia"
+ tab:
+ dashboard: "Hasierako panela"
+ orders: "Eskaerak"
+ bulk_order_management: "Eskaerak blokean kudeatzea"
+ subscriptions: "Harpidetzak"
+ products: "Produktuak"
+ products_v3: "Produktuak"
+ option_types: "Aukera motak"
+ properties: "Propietateak"
+ variant_overrides: "Inbentarioa"
+ reports: "Txostenak"
+ configuration: "Konfigurazioa"
+ users: "Erabiltzaileak"
+ roles: "Rolak"
+ order_cycles: "Eskaera-zikloak"
+ enterprises: "Erakundeak"
+ enterprise_relationships: "Baimenak"
+ customers: "Kontsumitzaileak"
+ groups: "Sareak"
+ overview: "Ikuspegi orokorra"
+ product_import: "Inportatu"
+ enterprise_roles: "Rolak"
+ payment_methods: "Ordaintzeko metodoak"
+ product_properties:
+ index:
+ inherits_properties_checkbox_hint: "Heredatu jabetzak %{supplier} tik? (goian deuseztatzen ez bada)"
+ add_product_properties: "Gehitu produktuaren propietateak"
+ properties:
+ index:
+ properties: "Propietateak"
+ new_property: "Jabetza berria"
+ name: "Izena"
+ presentation: "aurkezpena"
+ new:
+ new_property: "Jabetza berria"
+ edit:
+ editing_property: "Editatu jabetza"
+ back_to_properties_list: "itzuli propietateen zerrendara"
+ form:
+ name: "Izena"
+ presentation: "aurkezpena"
+ return_authorizations:
+ index:
+ new_return_authorization: "Itzultzeko baimen berria"
+ return_authorizations: "Itzultzeko baimenak"
+ back_to_orders_list: "Itzuli eskaeren zerrendara"
+ rma_number: "RMA zenbakia"
+ status: "Egoera"
+ amount: "Kopurua"
+ cannot_create_returns: "Ezin da itzulketarik sortu, eskaera honek ez baitu bidalitako unitaterik."
+ continue: "Jarraitu"
+ new:
+ new_return_authorization: "Itzultzeko baimen berria"
+ continue: "Jarraitu"
+ edit:
+ receive: "jaso"
+ are_you_sure: "Ziur zaude?"
+ return_authorization: "Itzuli baimenera"
+ form:
+ product: "Produktua"
+ quantity_shipped: "bidalitako kopurua"
+ quantity_returned: "Itzulitako kopurua"
+ return_quantity: "itzuli beharreko kopurua"
+ amount: "Kopurua"
+ rma_value: "RMA balioa"
+ reason: "arrazoia"
+ stock_location: "inbentarioa aurkitzea"
+ states:
+ authorized: "baimendua"
+ received: "jasoa"
+ canceled: "ezeztatuta"
+ line_items:
+ index:
+ results_found: " %{number} Aurkitutako emaitzak."
+ viewing: "Ikusiz %{start} -tik %{end} -ra."
+ orders:
+ add_product:
+ cannot_add_item_to_canceled_order: "Ezin zaio artikulua gehitu ezeztatutako eskaerari"
+ include_out_of_stock_variants: "Inbentario erabilgarririk gabeko aldaerak sartu."
+ index:
+ listing_orders: "Zerrendako eskaerak"
+ new_order: "Eskaera berria"
+ capture: "Ordainduta"
+ ship: "Bidalketa"
+ edit: "Editatu"
+ order_not_updated: "Eskaera ezin izan da eguneratu"
+ note: "Oharra"
+ first: "lehenengoa"
+ last: "Azkena"
+ previous: "Aurrekoa"
+ next: "Hurrengoa"
+ loading: "Kargatzen"
+ no_orders_found: "Ez da eskaririk aurkitu"
+ results_found: " %{number} Aurkitutako emaitzak."
+ viewing: "Ikusiz %{start} -tik %{end} -ra."
+ print_invoices: "Fakturak inprimatu"
+ cancel_orders: "Eskaerak ezeztatu"
+ resend_confirmation: "Berrespena birbidali"
+ send_invoice: "Fakturak bidali"
+ selected:
+ zero: "Ez dago hautatutako eskaerarik"
+ one: "Aukeratutako eskaera 1"
+ sortable_header:
+ payment_state: "Ordainketaren egoera"
+ shipment_state: "Bidalketa-probintzia"
+ completed_at: "Hemen osatua:"
+ number: "Zenbakia"
+ state: "Egoera"
+ email: "Kontsumitzailearen e-maila"
+ invoice:
+ issued_on: "Jaulkitakoa"
+ tax_invoice: "ZERGEN FAKTURA"
+ code: "Kodea"
+ from: "Nondik"
+ to: "Fakturatu"
+ shipping: "bidalketa"
+ order_number: "Eskaera-zenbakia"
+ invoice_number: "Faktura-zenbakia"
+ payments_list:
+ date_time: "Eguna eta ordua"
+ payment_method: "Ordaintzeko modua"
+ payment_state: "Ordainketaren egoera"
+ amount: "Kopurua"
+ note:
+ note_label: "Oharra:"
+ no_note_present: "Ez zen oharrik eman."
+ form:
+ distribution_fields:
+ title: "Banaketa"
+ distributor: "Banatzailea:"
+ order_cycle: "Eskaera-zikloa:"
+ line_item_adjustments: "Artikuluen doikuntzak"
+ order_adjustments: "Eskaera-doikuntzak"
+ order_total: "Eskaera, guztira"
+ overview:
+ enterprises_header:
+ ofn_with_tip: Antolakundeak ekoizleak eta/edo taldeak dira, eta Open Food Network delakoaren barruko antolakuntzako oinarrizko unitatea dira.
+ enterprise_row:
+ has_no_enterprise_fees: "ez du antolakuntza-batzorderik"
+ has_no_payment_methods: "ez du ordaintzeko metodorik"
+ has_no_shipping_methods: "ez du bidaltzeko metodorik"
+ products:
+ active_products:
+ zero: "Ez duzu produktu aktiborik"
+ one: "Produktu aktiboa du."
+ few: " %{count} produktu aktibo ditu"
+ many: " %{count} produktu aktibo ditu"
+ other: " %{count} produktu aktibo ditu"
+ order_cycles:
+ order_cycles: "Eskaera-zikloak"
+ order_cycles_tip: "Eskaera-zikloek zehazten dute noiz eta non dauden eskuragarri produktuak kontsumitzaileentzat."
+ you_have_active:
+ zero: "Ez duzu eskaera-ziklo aktiborik."
+ one: "Eskaera-ziklo aktibo bat duzu."
+ few: " %{count} eskaera-ziklo aktibo dituzu."
+ many: " %{count} eskaera-ziklo aktibo dituzu."
+ other: " %{count} eskaera-ziklo aktibo dituzu."
+ manage_order_cycles: "ESKAERA-ZIKLOAK KUDEATZEA"
+ version:
+ view_all_releases: Argitalpen guztiak ikusi
+ shipping_methods:
+ index:
+ shipping_methods: "Bidaltzeko metodoak"
+ new_shipping_method: "Bidaltzeko metodo berria"
+ name: "Izena"
+ products_distributor: "Banatzailea"
+ zone: "Eremua"
+ calculator: "Kalkulagailua"
+ display: "Erakutsi"
+ both: "Bai eskaera egitean, bai administrazioan"
+ back_end: "Administrazioan bakarrik"
+ no_shipping_methods_found: "Ez da bidalketa-metodorik aurkitu"
+ new:
+ new_shipping_method: "Bidaltzeko metodo berria"
+ back_to_shipping_methods_list: "Bidalketa-metodoen zerrendara itzuli"
+ edit:
+ editing_shipping_method: "Bidaltzeko metodoa editatzea"
+ new: "Berria"
+ back_to_shipping_methods_list: "Bidalketa-metodoen zerrendara itzuli"
+ form:
+ categories: "Kategoriak"
+ tax_category: "Zergen kategoria"
+ zones: "Eremuak"
+ both: "Bai eskaera egitean, bai administrazioan"
+ back_end: "Administrazioan bakarrik"
+ deactivation_warning: "Bidalketa-metodo bat desaktibatzeak bidalketa-metodoa zure zerrendatik desagertzea eragin dezake. Alternatiba gisa, orrialdea bidaltzeko metodoa ezkuta dezakezu\"Eskaerak egin\" aukerarekin konfiguratuz\"Administrazioan bakarrik\" "
+ payment_methods:
+ index:
+ payment_methods: "Ordaintzeko metodoak"
+ new_payment_method: "Ordainketa-metodo berria"
+ name: "Izena"
+ products_distributor: "Banatzailea"
+ provider: "Hornitzailea"
+ environment: "Giroa"
+ display: "Erakutsi"
+ active: "Aktiboa"
+ both: "Biak"
+ back_end: "Administrazioan bakarrik"
+ active_yes: "Bai"
+ active_no: "Ez"
+ no_payment_methods_found: "Ez da ordainketa-metodorik aurkitu."
+ new:
+ new_payment_method: "Ordainketa-metodo berria"
+ back_to_payment_methods_list: "Itzuli ordainketa-metodoen zerrendara"
+ edit:
+ new: "Berria"
+ editing_payment_method: "Ordainketa-metodoa editatzea"
+ back_to_payment_methods_list: "Itzuli ordainketa-metodoen zerrendara"
+ stripe_connect:
+ enterprise_select_placeholder: Aukeratu...
+ loading_account_information_msg: Striperen kontuko informazioa kargatzen, itxaron une batez...
+ stripe_disabled_msg: Sistemaren administratzaileak Stripe bidezko ordainketak desgaitu ditu.
+ request_failed_msg: Sentitzen dugu. Zerbait gaizki atera zen Striperekin kontuaren xehetasunak egiaztatzen saiatzean...
+ account_missing_msg: Ez dago Stripe konturik erakunde honetarako.
+ connect_one: Connect One
+ access_revoked_msg: Stripe kontu honetara sartzeko aukera baliogabetu egin da, mesedez, konektatu berriro zure kontua.
+ status: Egoera
+ connected: Konektatuta
+ account_id: Account ID
+ business_name: Erakundearen izena
+ charges_enabled: Gaitutako karguak
+ form:
+ name: "Izena"
+ description: "Deskribapena"
+ environment: "Giroa"
+ display: "Erakutsi"
+ active: "Aktiboa"
+ active_yes: "Bai"
+ active_no: "Ez"
+ both: "Bai eskaera egitean, bai administrazioan"
+ back_end: "Administrazioan bakarrik"
+ tags: "Tags"
+ deactivation_warning: "Ordainketa-metodo bat desaktibatzeak ordainketa-metodoa bere zerrendatik desagertzea eragin dezake. Bestela, ordainketa-metodo bat ezkuta dezakezu ordainketa-orritik, 'Erakutsi' aukera konfiguratuz 'Administratzaileak bakarrik ikus dezake' gisa. "
+ providers:
+ provider: "Hornitzailea"
+ check: "Eskudirua/transferentzia/etab. (automatikoki baliozkotzea eskatzen ez duten ordainketak)"
+ pin: "Pin Payments"
+ paypalexpress: "PayPal Express"
+ stripeconnect: "Stripe"
+ stripesca: "Stripe SCA"
+ payments:
+ source_forms:
+ stripe:
+ error_saving_payment: Errorea ordainketa gordetzean
+ submitting_payment: Ordainketa bidaltzen...
+ paypal:
+ no_payment_via_admin_backend: PayPal-en ordainketak ezin dira markatu administrazioak ordaindutakotzat
+ products:
+ new:
+ title: "Produktu berria"
+ new_product: "Produktu berria"
+ supplier: "Hornitzailea"
+ product_name: "produktuaren izena"
+ units: "Neurketa-unitatea"
+ value: "Balioa"
+ unit_name: "Unitatearen izena"
+ price: "Prezioa"
+ unit_price: "Unitateko prezioa"
+ unit_price_legend: "Artikuluaren prezioaren arabera kalkulatua"
+ on_hand: "Eskuragarri"
+ on_demand: "Eskariaren arabera"
+ product_description: "Produktuaren deskribapena"
+ image: "Irudia"
+ unit_name_placeholder: 'adibidez, mahukak'
+ index:
+ header:
+ title: Hainbat produktu editatzea
+ indicators:
+ title: PRODUKTUAK KARGATZEN
+ no_products: "Oraindik ez dago produkturik. Gehitu batzuk lehenago "
+ no_results: "Ez da emaitzarik aurkitu"
+ products_head:
+ name: Izena
+ unit: Unitatea
+ display_as: Erakutsi nola
+ category: Kategoria
+ tax_category: Zerga kategoria
+ inherits_properties?: Jabetzak heredatzen ditu?
+ av_on: "Av. en"
+ import_date: "Inportazio-data"
+ products_variant:
+ variant_has_n_overrides: "Aldaera horrek %{n} override (s) ditu"
+ new_variant: "Aldaera berria"
+ product_name: produktuaren izena
+ primary_taxon_form:
+ product_category: produktuaren kategoria
+ search_for_categories: "Bilatu kategorien arabera"
+ group_buy_form:
+ group_buy: "Taldekatuta?"
+ bulk_unit_size: Ontziratu gabeko unitatearen tamaina
+ display_as:
+ display_as: Erakutsi nola
+ reports:
+ table:
+ select_and_search: "Aukeratu iragazkiak eta egin klik %{option} zure datuetara sartzeko."
+ customer_names_message:
+ customer_names_tip: "Kontsumitzaileen izenak ezkutuan badaude hornitu dituen eskaeretarako, banatzailearekin harremanetan jar zaitezke eta galdetu ea dendako lehentasunak eguneratu ditzaketen hornitzaileek kontsumitzaileen izenak ikus ditzaten."
+ users:
+ index:
+ listing_users: "Erabiltzaileen zerrenda"
+ new_user: "Erabiltzaile berria"
+ user: "Erabiltzailea"
+ enterprise_limit: "Erakundearen muga"
+ search: "Bilatu"
+ email: "Emaila"
+ edit:
+ editing_user: "Erabiltzaileak editatzen"
+ back_to_users_list: "Erabiltzaileen zerrendara itzuli"
+ general_settings: "Konfigurazio orokorra"
+ form:
+ disabled: "Desgaituta?"
+ email: "Emaila"
+ enterprise_limit: "Erakundearen muga"
+ confirm_password: "Pasahitza berretsi"
+ password: "Pasahitza"
+ locale: "Hizkuntza"
+ email_confirmation:
+ confirmation_pending: "Posta elektroniko bidezko baieztapena egiteke dago. Baieztapen-mezu elektroniko bat bidali dugu %{address} helbidera. "
+ variants:
+ index:
+ sku: "SKU"
+ price: "Prezioa"
+ options: "Aukerak"
+ no_results: "Ez dago emaitzarik"
+ option_types: "Aukera motak"
+ option_values: "aukera-balioak"
+ and: "eta"
+ new_variant: "Aldaera berria"
+ show_active: "erakutsi aktibo"
+ show_deleted: "Erakutsi ezabatuak"
+ new:
+ new_variant: "Aldaera berria"
+ form:
+ sku: "SKU"
+ unit_price: "Unitateko prezioa"
+ display_as: "Erakutsi nola"
+ display_name: "Erakusteko izena"
+ display_as_placeholder: 'adibidez, 2 kg'
+ display_name_placeholder: 'adibidez, tomateak'
+ unit_scale: "Unitateen eskala"
+ unit: Unitatea
+ price: Prezioa
+ unit_value: Unitateko balioa
+ variant_category: Kategoria
+ autocomplete:
+ out_of_stock: "Agortuta"
+ producer_name: "Ekoizlea"
+ unit: "Unitatea"
+ shared:
+ configuration_menu:
+ terms_of_service: "Zerbitzu-baldintzak"
+ sortable_header:
+ name: "Izena"
+ number: "Zenbakia"
+ completed_at: "Hemen osatua:"
+ state: "Probintzia"
+ payment_state: "Ordainketaren egoera"
+ shipment_state: "Bidalketa-probintzia"
+ email: "Emaila"
+ total: "Guztira"
+ billing_address_name: "Izena"
+ taxons:
+ back_to_list: "Itzuli produktu-kategoriaren zerrendara"
+ index:
+ title: "Produktuaren kategoriak"
+ new_taxon: 'Produktuaren kategoria berria'
+ new:
+ title: "Produktuaren kategoria berria"
+ edit:
+ title: "Produktuaren kategoria editatu"
+ form:
+ name: Izena
+ description: Deskribapena
+ general_settings:
+ edit:
+ legal_settings: "Legezko konfigurazioak"
+ cookies_consent_banner_toggle: "Erakutsi cookieak baimentzeko bannerra"
+ privacy_policy_url: "Pribatutasun-politikarekiko lotura"
+ enterprises_require_tos: "Erakundeek zerbitzuaren baldintzak onartu behar dituzte"
+ shoppers_require_tos: "Erosleek zerbitzu-baldintzak onartu behar dituzte"
+ cookies_policy_matomo_section: "Erakutsi Matomo atala cookien politika orrian"
+ footer_tos_url: "Terminoen eta zerbitzuen URLa"
+ checkout:
+ payment:
+ stripe:
+ choose_one: Aukeratu bat
+ enter_new_card: Sartu xehetasunak txartel berri baterako
+ used_saved_card: "Gordetako txartel bat erabili:"
+ or_enter_new_card: "Edo sartu txartel berri baten xehetasunak:"
+ remember_this_card: Txartel hau gogoratu?
+ stripe_sca:
+ choose_one: Aukeratu bat
+ enter_new_card: Sartu xehetasunak txartel berri baterako
+ used_saved_card: "Gordetako txartel bat erabili:"
+ or_enter_new_card: "Edo sartu txartel berri baten xehetasunak:"
+ remember_this_card: Txartel hau gogoratu?
+ date_picker:
+ flatpickr_date_format: "d-m-Y"
+ flatpickr_datetime_format: "d-m-Y H: i"
+ today: "Gaur"
+ now: "Orain"
+ close: "Itxi"
+ orders:
+ error_flash_for_unavailable_items: "Zure orgatxoko artikulu bat orain ez dago eskuragarri. Mesedez, eguneratu hautatutako kopuruak "
+ edit:
+ login_to_view_order: "Mesedez, hasi saioa zure eskaera ikusteko."
+ bought:
+ item: "Eskaera eskaera-ziklo honetan"
+ line_item:
+ insufficient_stock: "Stock gutxiegi erabilgarria, %{on_hand} baino ez da geratzen"
+ out_of_stock: "Agortuta"
+ unavailable_item: "gaur egun ez dago eskuragarri"
+ shipment_states:
+ backorder: Egiteke dagoen ordena
+ partial: partziala
+ pending: maldan
+ ready: Prest
+ shipped: bidalita
+ canceled: bertan behera
+ payment_states:
+ balance_due: zor den saldoa
+ completed: osatuta
+ checkout: balioztatu
+ credit_owed: zor den kreditua
+ failed: Huts egin du
+ paid: ordaindua
+ pending: maldan
+ processing: prozesatzen
+ requires_authorization: "Eskatutako baimena"
+ void: maldan
+ invalid: baliogabea
+ authorise: baimendu
+ order_mailer:
+ cancel_email:
+ customer_greeting: "Kaixo %{name}"
+ instructions_html: " %{distributor} duen zure eskaera BERTAN BEHERA UTZI DA. Mesedez gorde baliogabetzeari buruzko informazio hau, etorkizunean beharrezkoa bada ere. "
+ dont_cancel: "Iritziz aldatu baduzu edo eskaera hau bertan behera utzi nahi ez baduzu, mesedez, jarri harremanetan %{email} rekin"
+ order_summary_canceled_html: "Eskaeraren laburpena [BERTAN BEHERA] %{number}"
+ details: "Hona hemen zure eskaeraren xehetasunak:"
+ unpaid_order: "Zure eskaera ordaindu gabe zegoenez, ez da inolako itzulketarik egin."
+ paid_order: "Zure eskaera ordainduta zegoen, eta %{distributor} k zenbateko osoa itzuli du."
+ credit_order: "Zure eskaera ordaindua zegoen zure kontuan ordaindu zenuenagatik."
+ subject: "Eskaera bertan behera uztea"
+ cancel_email_for_shop:
+ greeting: "Kaixo %{name}"
+ subject: "Eskaera bertan behera uztea"
+ intro: "Kontsumitzaile batek bere eskaera bertan behera utzi du # %{number}."
+ view_cancelled_order: "Ikusi eskaera ezeztatuta"
+ confirm_email:
+ subject: "Eskaera berrestea"
+ invoice_email:
+ hi: "Kaixo %{name}"
+ invoice_attached_text: 'Duela gutxi egindako eskaerarako faktura bat erantsi du:'
+ user_mailer:
+ reset_password_instructions:
+ request_sent_text: |
+ Zure pasahitza aldatzeko eskatu da.
+ Zuk eskatu ez baduzu, ez jakin mezu elektroniko hau.
+ link_text: >
+ Ekintza hau eskatu baduzu, egin klik esteka honetan:
+ issue_text: |
+ Esteka ez badabil, probatu kopiatu eta zure nabigatzailean itsatsi.
+ Arazoek jarraitzen badute, jar zaitez gurekin harremanetan.
+ subject: "Pasahitza berrezartzeko jarraibideak"
+ confirmation_instructions:
+ subject: "Mesedez, berretsi zure OFN kontua"
+ payment_mailer:
+ authorize_payment:
+ subject: "Baimena eman OFNn %{distributor} ri ordaintzeko"
+ instructions: " %{amount} tik %{distributor} ra ordaintzeko autentifikazio gehigarria behar da. Bisitatu URL hau ordainketa baimentzeko: "
+ authorization_required:
+ subject: "Ordainketa batek bezeroaren baimena behar du"
+ message: " %{order_number} eskaera ordaintzeko, bezeroaren baimen gehigarria behar da. Bezeroa posta elektronikoz jakinarazi da, eta ordainketa egiteke agertuko da baimena eman arte. "
+ shipment_mailer:
+ shipped_email:
+ dear_customer: "Kontsumitzaile estimatua,"
+ instructions: " %{distributor} eskaera bidali da"
+ shipment_summary: "Bidalketaren laburpena"
+ subject: "Bidalketaren jakinarazpena"
+ thanks: "Eskerrik asko negozioak egiteagatik."
+ track_information: "Jarraipen-informazioa: %{tracking}"
+ track_link: "Jarraipen-lotura: %{url}"
+ picked_up_subject: "Bilketaren jakinarazpena"
+ test_mailer:
+ test_email:
+ greeting: "Zorionak!"
+ message: "Posta elektroniko hau jaso baduzu, zure posta elektronikoaren konfigurazioa zuzena da."
+ subject: "Froga-posta"
+ order_state:
+ address: helbidea
+ adjustments: doikuntzak
+ awaiting_return: Itzuleraren zain
+ canceled: bertan behera
+ cart: orgatxoa
+ confirmation: "baieztapena"
+ complete: osatu
+ confirm: Baieztatu
+ delivery: Entregatzea
+ paused: pausatua
+ payment: ordainketa
+ pending: maldan
+ resumed: laburtua
+ returned: itzulita
+ subscription_state:
+ active: aktiboa
+ pending: maldan
+ ended: amaitua
+ paused: pausatua
+ canceled: bertan behera
+ paypal:
+ already_refunded: "Ordainketa hori itzuli egin da, eta ezin da horri buruzko ekintza gehiagorik egin."
+ no_payment_via_admin_backend: "Ezin duzu PayPal kontuak kargatu administrazio panel bidez une honetan."
+ transaction: "PayPal transakzioa"
+ payer_id: "Ordaintzailearen Id."
+ transaction_id: "Transakzio-id."
+ token: "Token"
+ refund: "Dirua itzultzea"
+ refund_amount: "Kopurua"
+ original_amount: "Jatorrizko zenbatekoa: %{amount}"
+ refund_successful: "PayPal itzulketa arrakastatsua"
+ refund_unsuccessful: "PayPal kobraezinaren itzulketa"
+ actions:
+ refund: "Dirua itzultzea"
+ flash:
+ cancel: "Ez duzu PayPal erabili nahi? Ez dago arazorik. "
+ connection_failed: "Ezin izan da PayPalekin konektatu."
+ generic_error: "PayPalek huts egin du. %{reasons}"
+ users:
+ api_keys:
+ regenerate_key: "Giltza birsortu"
+ webhook_endpoints:
+ description: Sistemaren gertaerek webhook-ak eragin diezazkiekete kanpoko sistemei.
+ event_types:
+ order_cycle_opened: Eskaera-ziklo irekia
+ developer_settings:
+ title: Garapenaren konfigurazioa
+ form:
+ account_settings: Kontuaren konfigurazioa
+ show:
+ tabs:
+ developer_settings: Garapenaren konfigurazioa
+ orders: Eskaerak
+ cards: Kreditu-txartelak
+ transactions: Transakzioak
+ settings: Kontuaren konfigurazioa
+ unconfirmed_email: "Baieztatzeko dagoen posta elektronikoa: %{unconfirmed_email}. Zure helbide elektronikoa eguneratu egingo da posta elektroniko berria baieztatzen denean. "
+ orders:
+ open_orders: Eskaera irekiak
+ past_orders: Aurreko eskaerak
+ transactions:
+ transaction_history: Transakzioen historia
+ authorisation_required: Eskatutako baimena
+ authorise: Baimendu
+ open_orders:
+ order: Eskaera
+ shop: Denda
+ changes_allowed_until: Aldaketak egin daitezke harik eta
+ items: Artikuluak
+ total: Guztira
+ edit: Editatu
+ cancel: Ezeztatu
+ closed: Itxita
+ until: Noiz arte
+ past_orders:
+ order: Eskaera
+ shop: Denda
+ total: Guztira
+ paid?: Ordainduta?
+ status: Egoera
+ completed: osatuta
+ cancelled: Ezeztatuta
+ saved_cards:
+ default?: Besterik ezean?
+ delete?: Ezabatu?
+ cards:
+ authorised_shops: Baimendutako dendak
+ authorised_shops_agreement: Hau da zure kreditu-txartelean izan dezakezun edozein harpidetza (hau da, eskaera errepikatuak) kargatu dezakezuen denden zerrenda. Zure txartelaren datuak seguru mantenduko dira eta ez dira dendetako jabeekin partekatuko. Kobratzen zaionean jakinaraziko zaio beti. Denda bateko laukitxoa markatzean, onartu egiten duzu denda horri baimena ematea zure txartela jaulki zuen finantza-erakundeari jarraibideak bidaltzeko, denda horrekin edozein harpidetza sinatuz gero ordainketak jasotzeko.
+ saved_cards_popover: Hori da gorde nahi dituzun txartelen zerrenda, gero erabiltzeko. "Aurrez zehaztutako balioa" automatikoki hautatuko da eskaera bat egiten denean, eta eskaera egiteko baimena duen edozein dendak kobratu ahal izango du (ikusi eskuinean).
+ authorised_shops:
+ shop_name: "Dendaren izena"
+ allow_charges?: "Txartel lehenetsiari karguak baimentzea?"
+ localized_number:
+ invalid_format: formatu baliogabea du. Mesedez, sartu zenbaki bat.
+ api:
+ invalid_api_key: "Zehaztutako API giltza ( %{key}) baliogabea da."
+ unauthorized: "Ez duzu baimenik ekintza hau egiteko."
+ invalid_resource: "Errekurtso baliogabea. Mesedez, zuzendu akatsak eta saiatu berriro. "
+ resource_not_found: "Bilatzen ari nintzen baliabidea ezin da aurkitu."
+ access: "APIrako sarbidea"
+ key: "Giltza"
+ clear_key: "balio hutsa"
+ regenerate_key: "Giltza birsortu"
+ no_key: "baliorik gabe"
+ generate_key: "Sortu API giltza"
+ key_generated: "Sortutako giltza"
+ key_cleared: "ezabatutako balioa"
+ shipment:
+ cannot_ready: "Ezin da bidalketa osatu"
+ unit: unitatea
+ per_unit: Unitateko
+ datetime:
+ distance_in_words:
+ half_a_minute: minutu erdi
+ components:
+ multiple_checked_select:
+ filter_placeholder: "Iragazteko aukerak"
+ search_input:
+ placeholder: Bilatu
+ selector_with_filter:
+ search_placeholder: Bilatu
+ pagination:
+ next: Hurrengoa
+ previous: Aurrekoa
+ invisible_captcha:
+ sentence_for_humans: "Mesedez, utzi hutsik"
+ timestamp_error_message: "Mesedez, saia zaitez berriro 5 segundoren ondoren."
diff --git a/config/locales/fil_PH.yml b/config/locales/fil_PH.yml
index f19602ecf6..869e9f56ef 100644
--- a/config/locales/fil_PH.yml
+++ b/config/locales/fil_PH.yml
@@ -2228,20 +2228,9 @@ fil_PH:
spree_admin_enterprises_fees: "bayad para sa enterprise"
spree_admin_enterprises_none_create_a_new_enterprise: "GUMAWA NG BAGONG ENTERPRISE"
spree_admin_enterprises_none_text: "wala ka pang mga enterprise"
- spree_admin_enterprises_tabs_hubs: "MGA HUB"
spree_admin_enterprises_producers_manage_products: "PAMAHALAAN ANG MGA PRODUKTO"
spree_admin_enterprises_create_new_product: "LUMIKHA NG BAGONG PRODUKTO"
- spree_admin_single_enterprise_alert_mail_confirmation: "kumpirmahin ang email address para sa/kay"
- spree_admin_single_enterprise_alert_mail_sent: "naipadala na ang email sa"
- spree_admin_overview_action_required: "kailangan ng aksyon"
- spree_admin_overview_check_your_inbox: "tignan ang iyong inbox para sa karagdagang panuto. maraming salamat!"
- spree_admin_unit_value: halaga kada yunit
- spree_admin_unit_description: paglalarawan sa bawat yunit
- spree_admin_variant_unit: Variant unit
- spree_admin_variant_unit_scale: sukat ng Variant unit
spree_admin_supplier: Supplier
- spree_admin_product_category: kategorya ng produkto
- spree_admin_variant_unit_name: pangalan ng variant unit
unit_name: "pangalan ng yunit"
change_package: "palitan ang package"
spree_admin_single_enterprise_hint: "payo: para mahanap ka ng ibang tao, i-turn on ang visibility sa ilalim ng"
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index d739f4c623..4487bf161e 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -786,9 +786,15 @@ fr:
title: "Catalogue produit DFC"
catalog_url: "%{count} produits à importer de : %{catalog_url}"
enterprise: "Import vers l'entreprise : %{enterprise_name}"
+ select_all: "Sélectionner / désélectionner tout"
update: Mettre à jour
new: Nouveau
+ selected:
+ zero: "0 sélectionné"
+ one: "1 sélectionné"
+ other: "%{count} sélectionné"
import: Importer
+ invalid_url: L'URL de ce catalogue n'est pas valide.
import:
title: "Import du catalogue produit DFC"
imported_products: "Produits importés :"
@@ -2960,20 +2966,10 @@ fr:
spree_admin_enterprises_fees: "Marges et commissions"
spree_admin_enterprises_none_create_a_new_enterprise: "CRÉER UNE NOUVELLE ENTREPRISE"
spree_admin_enterprises_none_text: "Vous n'avez pas encore d'entreprise"
- spree_admin_enterprises_tabs_hubs: "BOUTIQUES"
+ spree_admin_enterprises_showing: "Montrer %{count} de %{total}"
spree_admin_enterprises_producers_manage_products: "GÉRER LES PRODUITS"
spree_admin_enterprises_create_new_product: "CRÉER UN NOUVEAU PRODUIT"
- spree_admin_single_enterprise_alert_mail_confirmation: "Veuillez confirmer l'adresse mail pour"
- spree_admin_single_enterprise_alert_mail_sent: "Email envoyé à "
- spree_admin_overview_action_required: "Action requise"
- spree_admin_overview_check_your_inbox: "Veuillez vérifier votre boîte mail pour les prochaines étapes. Merci !"
- spree_admin_unit_value: Nb Unités
- spree_admin_unit_description: 'Description complémentaire (ex: "(vrac)")'
- spree_admin_variant_unit: Unité
- spree_admin_variant_unit_scale: Echelle unitaire (en g ou L)
spree_admin_supplier: Fournisseur
- spree_admin_product_category: Catégorie Produit
- spree_admin_variant_unit_name: Nom de la pièce (si vendu à la pièce)
unit_name: "Unité"
change_package: "Changer de type d'entreprise"
spree_admin_single_enterprise_hint: "Astuce: Pour permettre aux gens de vous trouver, activez votre visibilité "
@@ -4134,7 +4130,7 @@ fr:
max_items: "Produits max."
minimal_amount: "Montant minimal"
normal_amount: "Montant classique"
- discount_amount: "Réduction"
+ discount_amount: "Montant réduit"
no_images_found: "Aucune image pour l'instant"
new_image: "Nouvelle image"
filename: "Nom du fichier"
@@ -4694,6 +4690,7 @@ fr:
invoice_attached_text: 'Veuillez trouver ci-joint la facture pour votre récente commande auprès de '
user_mailer:
reset_password_instructions:
+ dear_customer: "Cher acheteur, chère acheteuse,"
request_sent_text: |
Votre demande de nouveau mot de passe a bien été prise en compte.
Si vous n'avez pas demandé de nouveau mot de passe, veuillez ignorer cet e-mail.
diff --git a/config/locales/fr_BE.yml b/config/locales/fr_BE.yml
index 958bb77b19..3afb5b8f59 100644
--- a/config/locales/fr_BE.yml
+++ b/config/locales/fr_BE.yml
@@ -2670,20 +2670,9 @@ fr_BE:
spree_admin_enterprises_fees: "Marges et commissions"
spree_admin_enterprises_none_create_a_new_enterprise: "CRÉER UNE NOUVELLE ENTREPRISE"
spree_admin_enterprises_none_text: "Vous n'avez pas encore d'entreprise"
- spree_admin_enterprises_tabs_hubs: "COMPTOIRS"
spree_admin_enterprises_producers_manage_products: "GÉRER LES PRODUITS"
spree_admin_enterprises_create_new_product: "CRÉER UN NOUVEAU PRODUIT"
- spree_admin_single_enterprise_alert_mail_confirmation: "Veuillez confirmer l'adresse mail pour"
- spree_admin_single_enterprise_alert_mail_sent: "Email envoyé à "
- spree_admin_overview_action_required: "Action requise"
- spree_admin_overview_check_your_inbox: "Veuillez vérifier votre boîte mail pour les prochaines étapes. Merci!"
- spree_admin_unit_value: Nb Unités
- spree_admin_unit_description: 'Description complémentaire (ex: "(vrac)")'
- spree_admin_variant_unit: Unité
- spree_admin_variant_unit_scale: Echelle unitaire (en g ou L)
spree_admin_supplier: Fournisseur
- spree_admin_product_category: Catégorie Produit
- spree_admin_variant_unit_name: Nom de la pièce (si vendu à la pièce)
unit_name: "Nom de l'unité"
change_package: "Changer de type de compte"
spree_admin_single_enterprise_hint: "Astuce: Pour permettre aux gens de vous trouver, activez votre visibilité "
diff --git a/config/locales/fr_CA.yml b/config/locales/fr_CA.yml
index 23c7b082bf..2b1488a9e8 100644
--- a/config/locales/fr_CA.yml
+++ b/config/locales/fr_CA.yml
@@ -787,9 +787,15 @@ fr_CA:
title: "Catalogue produit DFC"
catalog_url: "%{count}produits à importer de : %{catalog_url}"
enterprise: "Import vers l'entreprise : %{enterprise_name}"
+ select_all: "Sélectionner / désélectionner tout"
update: Mettre à jour
new: Nouveau
+ selected:
+ zero: "0 sélectionné"
+ one: "1 sélectionné"
+ other: "%{count} sélectionné"
import: Importer
+ invalid_url: L'URL de ce catalogue n'est pas valide.
import:
title: "Import du catalogue produit DFC"
imported_products: "Produits importés :"
@@ -2961,20 +2967,10 @@ fr_CA:
spree_admin_enterprises_fees: "Marges et commissions"
spree_admin_enterprises_none_create_a_new_enterprise: "CRÉER UNE NOUVELLE ENTREPRISE"
spree_admin_enterprises_none_text: "Vous n'avez pas encore d'entreprise"
- spree_admin_enterprises_tabs_hubs: "HUBS"
+ spree_admin_enterprises_showing: "Montrer %{count} de %{total}"
spree_admin_enterprises_producers_manage_products: "GÉRER LES PRODUITS"
spree_admin_enterprises_create_new_product: "CRÉER UN NOUVEAU PRODUIT"
- spree_admin_single_enterprise_alert_mail_confirmation: "Veuillez confirmer l'adresse mail pour"
- spree_admin_single_enterprise_alert_mail_sent: "Email envoyé à "
- spree_admin_overview_action_required: "Action requise"
- spree_admin_overview_check_your_inbox: "Veuillez vérifier votre boîte mail pour les prochaines étapes. Merci!"
- spree_admin_unit_value: Nb Unités
- spree_admin_unit_description: 'Description complémentaire (ex: "(vrac)")'
- spree_admin_variant_unit: Unité
- spree_admin_variant_unit_scale: Echelle unitaire (en g ou L)
spree_admin_supplier: Fournisseur
- spree_admin_product_category: Catégorie Produit
- spree_admin_variant_unit_name: Nom de la pièce (si vendu à la pièce)
unit_name: "Unité"
change_package: "Changer de type de compte"
spree_admin_single_enterprise_hint: "Astuce: Pour permettre aux gens de vous trouver, activez votre visibilité "
@@ -4703,6 +4699,7 @@ fr_CA:
invoice_attached_text: 'Veuillez trouver ci-joint la facture pour votre récente commande auprès de '
user_mailer:
reset_password_instructions:
+ dear_customer: "Cher Acheteur,"
request_sent_text: |
Votre demande de nouveau mot de passe a bien été prise en compte.
Si vous n'avez pas demandé de nouveau mot de passe, veuillez ignorer cet e-mail.
diff --git a/config/locales/fr_CH.yml b/config/locales/fr_CH.yml
index 527e51c887..73c4172e4c 100644
--- a/config/locales/fr_CH.yml
+++ b/config/locales/fr_CH.yml
@@ -2551,20 +2551,9 @@ fr_CH:
spree_admin_enterprises_fees: "Marges et commissions"
spree_admin_enterprises_none_create_a_new_enterprise: "CRÉER UNE NOUVELLE ENTREPRISE"
spree_admin_enterprises_none_text: "Vous n'avez pas encore d'entreprise"
- spree_admin_enterprises_tabs_hubs: "BOUTIQUES"
spree_admin_enterprises_producers_manage_products: "GÉRER LES PRODUITS"
spree_admin_enterprises_create_new_product: "CRÉER UN NOUVEAU PRODUIT"
- spree_admin_single_enterprise_alert_mail_confirmation: "Veuillez confirmer l'adresse mail pour"
- spree_admin_single_enterprise_alert_mail_sent: "Email envoyé à "
- spree_admin_overview_action_required: "Action requise"
- spree_admin_overview_check_your_inbox: "Veuillez vérifier votre boîte mail pour les prochaines étapes. Merci !"
- spree_admin_unit_value: Nb Unités
- spree_admin_unit_description: 'Description complémentaire (ex: "(vrac)")'
- spree_admin_variant_unit: Unité
- spree_admin_variant_unit_scale: Echelle unitaire (en g ou L)
spree_admin_supplier: Fournisseur
- spree_admin_product_category: Catégorie Produit
- spree_admin_variant_unit_name: Nom de la pièce (si vendu à la pièce)
unit_name: "Unité"
change_package: "Changer de type de profil"
spree_admin_single_enterprise_hint: "Astuce: Pour permettre aux gens de vous trouver, activez votre visibilité "
@@ -3399,7 +3388,7 @@ fr_CH:
fee_placement: "Capture des frais"
fee_calculated_on_transfer_through_name: "Calc. des frais sur les transferts via"
tax_category_name: "TVA applicable"
- total_amount: "€ total"
+ total_amount: "CHF total"
html:
header:
fee_type: "Type de marge"
@@ -3409,7 +3398,7 @@ fr_CH:
fee_placement: "Saisie de la marge"
fee_calculated_on_transfer_through_name: "Calc. des frais sur les transferts via"
tax_category_name: "TVA applicable"
- total_amount: "€ total"
+ total_amount: "CHF total"
invalid_filter_parameters: "Les filtres sélectionnés pour ce rapport sont invalides."
report:
none: "Aucun"
diff --git a/config/locales/fr_CM.yml b/config/locales/fr_CM.yml
index 9cda72a44d..be77169c8e 100644
--- a/config/locales/fr_CM.yml
+++ b/config/locales/fr_CM.yml
@@ -2454,20 +2454,9 @@ fr_CM:
spree_admin_enterprises_fees: "Marges et commissions"
spree_admin_enterprises_none_create_a_new_enterprise: "CRÉER UNE NOUVELLE ENTREPRISE"
spree_admin_enterprises_none_text: "Vous n'avez pas encore d'entreprise"
- spree_admin_enterprises_tabs_hubs: "BOUTIQUES"
spree_admin_enterprises_producers_manage_products: "GÉRER LES PRODUITS"
spree_admin_enterprises_create_new_product: "CRÉER UN NOUVEAU PRODUIT"
- spree_admin_single_enterprise_alert_mail_confirmation: "Veuillez confirmer l'adresse mail pour"
- spree_admin_single_enterprise_alert_mail_sent: "Email envoyé à "
- spree_admin_overview_action_required: "Action requise"
- spree_admin_overview_check_your_inbox: "Veuillez vérifier votre boîte mail pour les prochaines étapes. Merci !"
- spree_admin_unit_value: Nb Unités
- spree_admin_unit_description: 'Description complémentaire (ex: "(vrac)")'
- spree_admin_variant_unit: Unité
- spree_admin_variant_unit_scale: Echelle unitaire (en g ou L)
spree_admin_supplier: Fournisseur
- spree_admin_product_category: Catégorie Produit
- spree_admin_variant_unit_name: Nom de la pièce (si vendu à la pièce)
unit_name: "Unité"
change_package: "Changer de type de profil"
spree_admin_single_enterprise_hint: "Astuce: Pour permettre aux gens de vous trouver, activez votre visibilité "
diff --git a/config/locales/hi.yml b/config/locales/hi.yml
index e24ef28fb0..70d29367df 100644
--- a/config/locales/hi.yml
+++ b/config/locales/hi.yml
@@ -696,6 +696,8 @@ hi:
index:
update: अपडेट करें
new: नया
+ selected:
+ other: "%{count} चुना गया"
import: इम्पोर्ट करें
enterprise_fees:
index:
@@ -2753,20 +2755,9 @@ hi:
spree_admin_enterprises_fees: "एंटरप्राइज फीस"
spree_admin_enterprises_none_create_a_new_enterprise: "एक नया एंटरप्राइज़ बनाएं"
spree_admin_enterprises_none_text: "आपके पास अभी तक कोई एंटरप्राइजिस़ नहीं है"
- spree_admin_enterprises_tabs_hubs: "हब्स"
spree_admin_enterprises_producers_manage_products: "उत्पादों का प्रबंधन"
spree_admin_enterprises_create_new_product: "एक नया उत्पाद बनाएं"
- spree_admin_single_enterprise_alert_mail_confirmation: "कृपया ईमेल पते की पुष्टि करें"
- spree_admin_single_enterprise_alert_mail_sent: "हमने को एक ईमेल भेजा है"
- spree_admin_overview_action_required: "कार्रवाई आवश्यक है"
- spree_admin_overview_check_your_inbox: "कृपया आगे के निर्देशों के लिए अपना इनबॉक्स देखें। धन्यवाद!"
- spree_admin_unit_value: यूनिट वैल्यू
- spree_admin_unit_description: यूनिट विवरण
- spree_admin_variant_unit: वैरिएंट यूनिट
- spree_admin_variant_unit_scale: वैरिएंट यूनिट स्केल
spree_admin_supplier: आपूर्तिकर्ता
- spree_admin_product_category: उत्पाद की श्रेणी
- spree_admin_variant_unit_name: वैरिएंट यूनिट का नाम
unit_name: "यूनिट का नाम"
change_package: "पैकेज बदलें"
spree_admin_single_enterprise_hint: "संकेत: लोगों को आपको ढूंढने की अनुमति देने के लिए, नीचे से अपनी दृश्यता चालू करें"
diff --git a/config/locales/hu.yml b/config/locales/hu.yml
index f4ca99ab0e..4155a23892 100644
--- a/config/locales/hu.yml
+++ b/config/locales/hu.yml
@@ -38,11 +38,11 @@ hu:
shipment_state: Szállítási státusz
completed_at: 'Elkészült:'
number: Szám
- state: Ország
+ state: Megye
email: Ügyfél e-mail
spree/payment:
amount: Összeg
- state: Ország
+ state: Megye
source: Forrás
spree/product:
name: "Termék Név"
@@ -71,7 +71,7 @@ hu:
preferred_amount: "Mennyiség:"
preferred_first_item: "Első tétel:"
preferred_additional_item: "További tételek kalkulált költsége:"
- preferred_max_items: "Maximális tételek:"
+ preferred_max_items: "Számítás a max tételekre:"
preferred_minimal_amount: "Minimális összeg:"
preferred_normal_amount: "Normál összeg:"
preferred_discount_amount: "Kedvezmény összege:"
@@ -145,6 +145,8 @@ hu:
message_html: "A művelet nem végrehajtható. Lehet, hogy olyan műveletet szeretnél végrehajtani, amihez nincs jogosultságod.
"
general_error:
message: "Sajnáljuk! Hiba történt.\n\nEz lehet egy átmeneti probléma. Kérjük, próbáld újra, vagy frissítsd az oldalt.\nMinden felmerülő hibát rögzítünk és valószínűleg már dolgozunk rajta.\nHa a probléma továbbra is fennáll, vagy sürgős, kérjük, értesíts minket róla. "
+ unauthorized:
+ message: "Nincs jogosultságod a művelet végrehajtására."
network_error:
message: "Hálózati hiba: Kérjük próbáld meg később."
stripe:
@@ -275,6 +277,7 @@ hu:
send_instructions: "Néhány percen belül emailt fogsz kapni a fiók megerősítéséhez szükséges utasításokkal."
oidc:
failure: "Nem tudtál bejelentkezni: %{error}"
+ record_not_unique: "%{uid}már egy másik fiókhoz csatlakoztatva"
home_page_alert_html: "Kezdőlap figyelmeztető HTML"
hub_signup_case_studies_html: "Átvételi Pont regisztrációs esettanulmányok HTML"
hub_signup_detail_html: "Átvételi Pont regisztrációs részletek HTML"
@@ -308,6 +311,7 @@ hu:
sku: "SKU"
subtotal: "Részösszeg"
tax_rate: "Adókulcs"
+ with_tax_incl: "%{amount}adóval együtt"
validators:
date_time_string_validator:
not_string_error: "karakterláncnak kell lennie"
@@ -444,7 +448,7 @@ hu:
distributors: Elosztók
distribution: Forgalmazás
order_cycles: Rendelési ciklusok
- bulk_order_management: Tömeges megrendelés kezelése
+ bulk_order_management: Rugalmas mennyiségű termékek kezelése
enterprises: Vállalkozások
enterprise_groups: Csoportok
reports: Jelentések
@@ -609,7 +613,7 @@ hu:
shipping_method: Szállítási Mód
shop: Átvételi pont
sku: SKU
- status_state: Ország
+ status_state: Ország.
tags: Címkék
variant: Változat
weight: Súly
@@ -642,9 +646,9 @@ hu:
has_n_rules: "%{num} szabálya van"
unsaved_confirm_leave: "Ezen az oldalon nem mentett módosítások vannak. Folytatod mentés nélkül?"
available_units: "Rendelkezésre álló egységek"
- terms_of_service_have_been_updated_html: "Az Open Food Network Általános Szerződési Feltételek frissítésre kerültek: %{tos_link}"
- terms_of_service: Olvasd el az Általános Szerződési Feltételeket
- accept_terms_of_service: Az Általános Szerződési Feltételek elfogadása
+ terms_of_service_have_been_updated_html: "Az Open Food Network Adatkezelési tájékoztatója és az Általános Szerződési Feltételek frissítésre kerültek%{tos_link}"
+ terms_of_service: Olvasd el a GDPR-t és az ÁSZF-et
+ accept_terms_of_service: Az Adatvédelmi Tájékoztató és Általános Szerződési Feltételek elfogadása
shopfront_settings:
embedded_shopfront_settings: "Beágyazott kirakatbeállítások"
enable_embedded_shopfronts: "Beágyazott kirakatok engedélyezése"
@@ -653,14 +657,14 @@ hu:
create:
select_file: "Kérjük, először válassz egy fájlt."
show:
- title: "Általános Szerződési Feltételek fájlok"
- no_files: "Még nem töltöttek fel Általános Szerződési Feltételeket."
+ title: "GDPR-ÁSZF fájlok"
+ no_files: "Még nem töltöttek fel GDPR-ÁSZF fájlt."
current_terms_html: "Az aktuális %{tos_link} megtekintése. Feltöltés ideje: %{datetime}."
- terms_of_service: "Általános Szerződési Feltételek"
+ terms_of_service: "Adatvédelmi Tájékoztató és Általános Szerződési feltételek"
delete: "Fájl törlése"
- confirm_delete: "Biztosan törli a jelenlegi Általános Szerződési Feltételek fájlt?"
+ confirm_delete: "Biztosan törli a jelenlegi GDPR-ÁSZF fájlt?"
attachment: "Csatolmány"
- create_terms_of_service: "Általános Szerződési Feltételek fájl létrehozása"
+ create_terms_of_service: "GDPR-ÁSZF fájl létrehozása"
number_localization:
number_localization_settings: "Számhonosítási beállítások"
enable_localized_number: "Használd a nemzetközi ezer/tizedes elválasztó logikát"
@@ -676,7 +680,7 @@ hu:
settings: "Beállítások"
stripe_connect_enabled: Engedélyezi az átvételi pontok számára a fizetés elfogadását a Stripe Connect használatával?
no_api_key_msg: Ehhez a vállalkozáshoz nem tartozik Stripe-fiók.
- configuration_explanation_html: A Stripe Connect integráció konfigurálására vonatkozó részletes utasításokért, kérjük, olvasd el ezt az útmutatót.
+ configuration_explanation_html: A Stripe Connect integráció konfigurálására vonatkozó részletes utasításokért, kérjük olvasd el ezt az útmutatót.
status: Státusz
ok: Rendben
instance_secret_key: Példány titkos kulcsa
@@ -686,7 +690,7 @@ hu:
charges_enabled: Díjak engedélyezve
charges_enabled_warning: "Figyelmeztetés: A terhelések nem engedélyezettek az Ön fiókjában"
auth_fail_error: A megadott API-kulcs érvénytelen
- empty_api_key_error_html: Nincs megadva Stripe API kulcs. Az API-kulcs beállításához, kérjük, kövesse ezeket az utasításokat
+ empty_api_key_error_html: Nincs megadva Stripe API kulcs. Az API-kulcs beállításához, kérjük, kövesd ezeket az utasításokat
matomo_settings:
edit:
title: "Matomo beállítások"
@@ -724,7 +728,7 @@ hu:
search_by_email: "Keresés email/kód alapján..."
guest_label: "Vendég kijelentkezés"
credit_owed: "Hiteltartozás"
- balance_due: "Fizetendő összeg"
+ balance_due: "Fennálló tartozás"
destroy:
has_associated_subscriptions: "A törlés sikertelen. A felhasználónak aktív előjegyzései vannak. Törölje őket előbb."
column_preferences:
@@ -745,8 +749,15 @@ hu:
map: Térkép
dfc_product_imports:
index:
+ catalog_url: "%{count}számú termék importálásra került innen: %{catalog_url}"
+ enterprise: "Importáld ide: %{enterprise_name}"
+ select_all: "Kijelölés/Kijelölés törlése mindnél"
update: Frissítés
new: Új
+ selected:
+ zero: "0 kiválasztva"
+ one: "1 kiválasztva"
+ other: "%{count}kiválasztva"
import: Importálás
import:
imported_products: "Importált termékek:"
@@ -807,7 +818,7 @@ hu:
editing_product: "Termék szerkesztése"
tabs:
product_details: "Termék leírás"
- group_buy_options: "Csoportos vásárlási lehetőségek"
+ group_buy_options: "Rugalmas vásárlási mennyiség"
images: "Képek"
variants: "Változatok"
product_properties: "Termék tulajdonságai"
@@ -868,7 +879,7 @@ hu:
reset: Változások elvetése
save: Változások mentése
product_variant_row:
- new_variant: Új variáns
+ new_variant: Új változat
bulk_update:
success: Változtatások mentve
delete_product:
@@ -956,7 +967,7 @@ hu:
overwrite_empty: Ha üres, írja felül
default_stock: Állítsd be a készletet
default_tax_cat: Adókategória beállítása
- default_shipping_cat: Szállítási mód beállítása
+ default_shipping_cat: Szállítási kategória beállítása
default_available_date: Állítsd be az elérhetőségi dátumot
validation_overview: Az importálás ellenőrzésének áttekintése
entries_found: Bejegyzések találhatók az importált fájlban
@@ -1002,7 +1013,7 @@ hu:
price: Ár
on_hand: Készlet
on_demand: Igény szerint
- shipping_category: Szállítási mód
+ shipping_category: Szállítási Kategória
tax_category: Adókategória
variant_overrides:
loading_flash:
@@ -1046,7 +1057,7 @@ hu:
product_unit: "Termék: Egység"
weight_volume: "Pontos súly (gr)"
ask: "Kérdés?"
- page_title: "Tömeges megrendelés kezelése"
+ page_title: "Rugalmas mennyiségű termékek kezelése"
actions_delete: "Kiválasztottak törlése"
loading: "Megrendelések betöltése"
no_results: "Nem található megrendelés."
@@ -1090,7 +1101,7 @@ hu:
acn_placeholder: pl. 123 456 789
display_invoice_logo: Logó megjelenítése a vevői összesítőkön
invoice_text: Adj testreszabott szöveget a vevői összesítők végéhez
- terms_and_conditions: "Általános Szerződési Feltételek"
+ terms_and_conditions: "GDPR és ÁSZF"
remove_terms_and_conditions: "Fájl eltávolítása"
uploaded_on: "feltöltve"
reset_form: "Űrlap visszaállítása"
@@ -1177,9 +1188,10 @@ hu:
none: Egyik sem
own: Saját
sells: Értékesít
- sells_tip: "Egyik sem - a vállalkozás nem értékesít közvetlenül a vevőknek.
Saját - Vállalkozás saját termékeket ad el az ügyfeleknek.
Mindegyik - A vállalkozás saját vagy más vállalkozás termékeit is értékesítheti.
"
+ sells_tip: "Egyik sem - a vállalkozás nem értékesít közvetlenül
Saját - a vállalkozás saját termékeket ad el az ügyfeleknek.
Mindegyik - A vállalkozás saját vagy más vállalkozás termékeit is értékesítheti.
"
+ external_billing_id: Külső számlázási azonosító
visible_in_search: Látható a keresésben?
- visible_in_search_tip: "Az árusítóhelyek lehetnek 1. nyilvánosak, amik megjelennek az OFN térképen és listákban, vagy 2. rejtve a térképen és listákban, de más árusítóhelyek által elérhető módon, vagy 3. teljesen rejtve."
+ visible_in_search_tip: "Az termelői és átvételi pont profilok lehetnek 1. nyilvánosak, amik megjelennek az OFN térképen és listákban, vagy 2. rejtve a térképen és listákban, de más átvételi pontok által elérhető módon, vagy 3. teljesen rejtve."
visible: Nyilvános
not_visible: Rejtve
hidden: Minden hivatkozás rejtve
@@ -1188,19 +1200,19 @@ hu:
legend: "Tulajdonságok"
permalink:
permalink: Permalink (szóközök nélkül)
- permalink_tip: "Ezt az állandó linket használják az átadási pont URL-jének létrehozására: %{link}árusítóhely-neve/shop"
+ permalink_tip: "Ez a permalink a webáruházad url-jének létrehozására szolgál: : %{link}árusítóhely-neve/shop"
link_to_front: Az online kirakat kezdőlapjának URL-je
link_to_front_tip: Közvetlen link az online kirakatodhoz az Open Food Hálózatában.
ofn_uid: OFN Azonosító
ofn_uid_tip: A vállalkozás azonosítására használt egyedi azonosító az Open Food Hálózatában.
shipping_methods:
- legend: "Szállítási Módok"
+ legend: "Áruátadási Módok"
name: "Név"
applies: "Aktív?"
- manage: "Szállítási módok kezelése"
- create_button: "Új szállítási mód létrehozása"
+ manage: "Áruátadási módok kezelése"
+ create_button: "Új Szállítási Mód létrehozása"
create_one_button: "Hozz létre egyet most"
- no_method_yet: "Még nincs szállítási módod beállítva."
+ no_method_yet: "Még nincs áruátadási mód beállítva."
shop_preferences:
legend: "Átvételi ponti beállítások"
shopfront_requires_login: "Nyilvánosan látható kirakat?"
@@ -1329,6 +1341,7 @@ hu:
disable: "Megosztás leállítása"
loading: "Betöltés"
need_to_be_manager: "Csak a megfelelő jogosultsággal rendelkező felhasználók csatlakoztathatnak alkalmazásokat."
+ link_label_html: "Tudj meg többet erről a kutatási projektről"
discover_regen:
title: "Discover Regenerative"
tagline: "Engedélyezd a Discover Regenerative számára a vállalkozási adatok közzétételét."
@@ -1352,7 +1365,7 @@ hu:
properties: Tulajdonságok
payment_methods: Fizetési módok
payment_methods_tip: Ennek a vállalkozásnak nincs fizetési módja
- shipping_methods: Szállítási módok
+ shipping_methods: Áruátadási módok
shipping_methods_tip: Ennek a vállalkozásnak vannak szállítási módjai
enterprise_fees: Vállalkozási díjak
enterprise_fees_tip: Ennek a vállalkozásnak nincsenek díjai
@@ -1399,10 +1412,10 @@ hu:
contact_name: Kapcsolattartó neve
edit:
editing: 'Beállítások:'
- back_link: Vissza a válllalkozások listájához
+ back_link: Vissza a vállalkozások listájához
new:
title: Új Vállalkozás
- back_link: Vissza a válllalkozások listájához
+ back_link: Vissza a vállalkozások listájához
welcome:
welcome_title: Üdvözlünk az Open Food hálózatban!
welcome_text: Sikeresen létrehoztad a
@@ -1460,7 +1473,7 @@ hu:
distributor: "Elosztó"
products: "Termékek"
tags: "Címkék"
- delivery_details: "Szállítás részletei"
+ delivery_details: "Átvétel részletei"
fees: "Díjak"
next: "Következő"
previous: "Előző"
@@ -1474,19 +1487,19 @@ hu:
checkout_options: "Fizetési lehetőségek"
distributor: "Elosztó"
no_payment_methods: Ebben a rendelési ciklusban minden elosztónak szüksége van legalább egy fizetési módra.
- no_shipping_methods: Ebben a rendelési ciklusban minden elosztónak legalább egy szállítási módra van szüksége.
+ no_shipping_methods: Ebben a rendelési ciklusban minden elosztónak legalább egy szállítási mód beállítása szükséges.
payment_methods: "fizetési módok"
save: "Mentés"
save_and_back_to_list: "Mentés és Vissza a listához"
select_all: "Mindet kiválaszt"
- shipping_methods: "Szállítási módok"
+ shipping_methods: "Áruátadási módok"
wizard_progress:
edit: "1. Általános beállítások"
incoming: "2. Bejövő termékek"
outgoing: "3. Kimenő termékek"
checkout_options: "4. Fizetési lehetőségek"
exchange_form:
- pickup_time_tip: Megrendelésnél ettől kezdve készen állnak a vásárló számára
+ pickup_time_tip: Amikortól a megrendelés készen áll a vásárló számára
pickup_instructions_placeholder: "Felvételi utasítások"
pickup_instructions_tip: Ezek az utasítások a rendelés befejezése után jelennek meg az ügyfelek számára
pickup_time_placeholder: "Készen áll (pl. dátum/idő)"
@@ -1549,7 +1562,7 @@ hu:
fees: Díjak
tags: Címkék
destroy_errors:
- orders_present: Ezt a rendelési ciklust egy vásárló választotta ki, és nem törölhető. Hogy az ügyfelek ne férhessenek hozzá", inkább zárd be.
+ orders_present: Ezt a rendelési ciklust egy vásárló választotta ki, és nem törölhető. Hogy az ügyfelek ne férhessenek hozzá, inkább zárd be.
schedule_present: Ez a rendelési ciklus ütemezéshez van kötve, és nem törölhető. Először szüntesse meg vagy törölje az ütemezést.
bulk_update:
no_data: Hm, valami elromlott. Nem található rendelési ciklus adat.
@@ -1593,7 +1606,7 @@ hu:
business_details: "Vállalkozás adatai"
images: "Képek"
properties: "Tulajdonságok"
- shipping_methods: "Szállítási módok"
+ shipping_methods: "áruátadási módok"
payment_methods: "fizetési módok"
enterprise_fees: "Vállalkozási díjak"
enterprise_permissions: "Vállalkozási engedélyek"
@@ -1760,14 +1773,14 @@ hu:
just_a_few_more_steps: 'Még néhány lépés, mielőtt elkezdhetné:'''
enable_subscriptions: "Engedélyezd a feliratkozásokat legalább egy oldalon"
enable_subscriptions_step_1_html: 1. Nyisd meg a %{enterprises_link} oldalt, keresd meg az oldalad, és kattints a "Kezelés" gombra
- enable_subscriptions_step_2: 2. Az "Oldalbeállítások" alatt", engedélyezd az Előfizetések opciót
+ enable_subscriptions_step_2: 2. Az "Oldalbeállítások" alatt, engedélyezd az Előfizetések opciót
set_up_shipping_and_payment_methods_html: Állíts be %{shipping_link} és %{payment_link} metódust
set_up_shipping_and_payment_methods_note_html: Ne feledd, hogy előfizetésekhez csak készpénzes és Stripe fizetési módok
használhatók
ensure_at_least_one_customer_html: Győződj meg arról, hogy legalább egy %{customer_link} létezik
create_at_least_one_schedule: Hozz létre legalább egy ütemezést
create_at_least_one_schedule_step_1_html: '1. Nyisd meg a következőt: %{order_cycles_link}'
create_at_least_one_schedule_step_2: 2. Hozz létre egy rendelési ciklust, ha még nem tetted meg
- create_at_least_one_schedule_step_3: 3. Kattints a "+ Új ütemterv" gombra.", és töltsd ki az űrlapot
+ create_at_least_one_schedule_step_3: 3. Kattints a "+ Új ütemterv" gombra, és töltsd ki az űrlapot
once_you_are_done_you_can_html: Ha végeztél, %{reload_this_page_link}
reload_this_page: töltsd be újra ezt az oldalt
form:
@@ -1826,7 +1839,7 @@ hu:
no_keep_them: Tartsd meg
yes_i_am_sure: Igen, biztos vagyok benne
number: "Szám"
- order_update_issues_msg: Egyes rendeléseket nem sikerült automatikusan frissíteni,"ez valószínűleg azért van, mert manuálisan szerkesztették. Kérjük, tekintse át az alább felsorolt problémákat, és szükség esetén végezzen módosításokat az egyes rendeléseken.
+ order_update_issues_msg: Egyes rendeléseket nem sikerült automatikusan frissíteni, ez valószínűleg azért van, mert manuálisan szerkesztették. Kérjük, tekintse át az alább felsorolt problémákat, és szükség esetén végezzen módosításokat az egyes rendeléseken.
no_results:
no_subscriptions: Még nincs előfizetés...
why_dont_you_add_one: Miért nem adsz hozzá egyet? :)
@@ -1870,7 +1883,7 @@ hu:
enterprise_promo_image:
destroy_attachment_does_not_exist: "A promóciós kép nem létezik"
enterprise_terms_and_conditions:
- destroy_attachment_does_not_exist: "Az Általános Szerződési Feltételek fájl nem létezik"
+ destroy_attachment_does_not_exist: "Az ÁSZF-GDPR fájl nem létezik"
orders:
failed_to_update: "Nem sikerült frissíteni a rendelést"
query_param:
@@ -1886,7 +1899,7 @@ hu:
order_summary_without_number: Megrendelés-összesítő
already_ordered:
cart: "kosár"
- message_html: "Már van rendelése ehhez a rendelési ciklushoz. Tekintse meg a %{kosarat}, hogy megtekinthesse a korábban megrendelt tételeket. A tételeket törölheti is, amíg a rendelési ciklus nyitva van."
+ message_html: "Már van rendelése ehhez a rendelési ciklushoz. Tekintsd meg a %{kosarat}, hogy ellenőrizd a korábban megrendelt tételeket. Amíg a rendelési ciklus nyitva van törölhetsz is termékeket. "
step1:
contact_information:
title: Kapcsolat
@@ -1908,13 +1921,13 @@ hu:
city:
label: Város
state_id:
- label: Ország
+ label: Megye
zipcode:
label: Irányítószám
country_id:
label: Ország
shipping_info:
- title: Szállítási információ
+ title: Átvételi lehetőségek
submit: Következő - Fizetési mód
cancel: Vissza a kosár szerkesztéséhez
step2:
@@ -1935,7 +1948,7 @@ hu:
use_new_card: Adja meg kártyaazonosítóit
save_card: Mentse el a kártyát későbbi használatra
create_new_card: vagy adja meg alább az új kártyaadatokat
- explaination: A következő lépésben megtekintheted és megerősítheted megrendelésedet, amely tartalmazza a várható költségeket. Amennyiben "valtozoar" jelölésű terméket rendeltél, a végösszeg a pontos súly függvényében változhat.
+ explaination: A következő lépésben megtekintheted és megerősítheted megrendelésedet, amely tartalmazza a várható költségeket. Amennyiben "Változósúly" jelölésű terméket rendeltél, a végösszeg a pontos súly függvényében változhat.
submit: Következő - Megrendelés összegzése
cancel: Vissza az adataidhoz
voucher:
@@ -1948,7 +1961,7 @@ hu:
warning_forfeit_remaining_amount: "Megjegyzés: ha a rendelés végösszege kevesebb, mint a kupon értéke, előfordulhat, hogy a fennmaradó összeget nem tudod elkölteni."
step3:
delivery_details:
- title: Szállítás részletei
+ title: Készen áll
edit: Szerkesztés
address: Szállítási cím
instructions: Megjegyzések
@@ -1960,22 +1973,22 @@ hu:
title: A megrendelés részletei
edit: Szerkesztés
terms_and_conditions:
- message_html: "Elfogadom az eladó %{terms_and_conditions_link} feltételeit."
+ message_html: "Elfogadom az Átvételi Pont %{terms_and_conditions_link}-t."
link_text: "Felhasználási feltételek"
platform_terms_of_service:
- message_html: "Elfogadom a %{tos_link} platformot."
+ message_html: "Elfogadom az Open Food platform %{tos_link}-t."
all_terms_and_conditions:
- message_html: "Elfogadom az eladó %{terms_and_conditions_link} és a platform %{tos_link} feltételeit."
+ message_html: "Elfogadom az Átvételi Pont %{terms_and_conditions_link} és a platform %{tos_link}-t."
terms_and_conditions: "Felhasználási feltételek"
submit: Rendelés elküldése
cancel: Vissza a Fizetési módhoz
errors:
saving_failed: "A mentés nem sikerült, kérjük, frissítsd a kiemelt mezőket."
- terms_not_accepted: Kérjük, fogadja el az Általános Szerződési Feltételeket
+ terms_not_accepted: 'Kérjük, fogadd el az Adatvédelmi Tájékoztatót és az Általános Szerződési Feltételeket '
required: A mező nem lehet üres
invalid_number: "Adj meg egy érvényes telefonszámot"
invalid_email: "Kérjük valós e-mail címet adj meg"
- select_a_shipping_method: Válassz szállítási módot!
+ select_a_shipping_method: Válassz áruátvételi módot!
select_a_payment_method: Válassz fizetési módot
no_shipping_methods_available: Átvételi és szállítási lehetőségek hiánya miatt a fizetés nem lehetséges. Kérjük, lépjen kapcsolatba az üzlet tulajdonosával.
voucher_not_found: Nem található
@@ -2007,7 +2020,7 @@ hu:
cart: "Kosár"
register_call:
selling_on_ofn: "Érdekel az Open Food Hálózat?"
- register: "Itt regisztrálj fogyasztóként"
+ register: "Itt regisztrálj!"
footer:
footer_secure: "Biztonságos és felelős adatkezelés."
footer_secure_text: "Az Open Food Network mindenhol SSL-titkosítást (2048 bites RSA) használ, hogy vásárlási és fizetési adataidat bizalmasan kezelje. Szervereink nem tárolják hitelkártya adataidat, és a fizetéseket PCI-kompatibilis szolgáltatások dolgozzák fel."
@@ -2020,19 +2033,19 @@ hu:
footer_legal_call: "Olvasd el a mi"
footer_legal_visit: "Elérhetőségünk"
footer_legal_text_html: "Az Open Food Network egy ingyenes és nyílt forráskódú szoftverplatform. Tartalmunk licence a %{content_license}, kódunk pedig %{code_license}."
- footer_data_text_with_privacy_policy_html: "Gondosan vigyázunk adataira. Tekintse meg %{privacy_policy} és %{cookies_policy}"
+ footer_data_text_with_privacy_policy_html: "Gondosan vigyázunk adataidra. Tekintsd meg %{privacy_policy} és %{cookies_policy}"
footer_data_text_without_privacy_policy_html: "Gondosan vigyázunk adataidra. Tekintsd meg %{cookies_policy}-unkat"
- footer_data_privacy_policy: "Adatvédelmi irányelvek"
+ footer_data_privacy_policy: "Adatvédelmi nyilatkozatunkat"
footer_data_cookies_policy: "sütikre vonatkozó szabályzatunkat"
shop:
messages:
customer_required:
- login: "Belépés"
- contact: "kapcsolatba lépni"
+ login: "belépés"
+ contact: "Kapcsolat"
require_customer_login: "Csak regisztrált és jóváhagyott vásárlók férhetnek hozzá az Átvételi Pont kínálatához."
require_login_link_html: "Ha már regisztrált felhasználó vagy, a folytatáshoz be kell lépned: %{login}"
require_login_2_html: "Ezen az átvételi ponton szeretnél vásárolni? %{enterprise}-el itt tudsz %{contact}, és érdeklődni a csatlakozásról."
- require_customer_html: "Ha itt szeretne vásárolni, kérjük, %{contact} %{enterprise} érdeklődjön a csatlakozásról."
+ require_customer_html: "Ha szeretnél a(z) %{enterprise} átvételi ponton vásárolni, kérjük, írj a %{contact} fülön található email címre. Írd meg a levélben a regisztrált email-címed, és hogy melyik telephelyen szeretnél vásárolni."
select_oc:
select_oc_html: "Kérjük, válaszd ki, hogy mikorra szeretnéd megrendelni, hogy megtudd, milyen termékek állnak rendelkezésre."
products:
@@ -2114,7 +2127,7 @@ hu:
longitude: Hosszúság
longitude_placeholder: például 144.7851531
use_geocoder: Automatikusan kiszámítja a szélességi és hosszúsági fokokat a címből?
- state: Ország
+ state: Ország-
postcode: Irányítószám
postcode_placeholder: például 3070
suburb: Település
@@ -2140,7 +2153,7 @@ hu:
label_blog: "Blog"
label_support: "Támogatás"
label_shopping: "Bevásárlás"
- label_login: "Belépés"
+ label_login: "Belépés*"
label_logout: "Kijelentkezés"
label_signup: "Regisztráció"
label_administration: "Adminisztráció"
@@ -2178,7 +2191,7 @@ hu:
desc_part_1: "A sütik nagyon kisméretű szöveges fájlok, amelyek bizonyos webhelyek meglátogatásakor a számítógépén tárolódnak."
desc_part_2: "Az OFN-nél teljes mértékben tiszteletben tartjuk a magánéletedet. Csak azokat a sütiket használjuk, amelyek az élelmiszerek online értékesítéséhez és vásárlásához szükségesek. Az adataidat nem adjuk el senkinek. Előfordulhat, hogy a jövőben azt javasoljuk, hogy oszd meg adataid új közös szolgáltatások létrehozása érdekében, amelyek hasznosak lehetnek az ökoszisztéma számára (például logisztikai szolgáltatások a rövid élelmiszer-rendszerekhez), de még nem tartunk ott, és nem fogjuk megtenni a felhatalmazásod nélkül. "
desc_part_3: "A sütiket elsősorban arra használjuk, hogy emlékezzünk arra, hogy ki vagy, ha bejelentkezel a szolgáltatásba, vagy hogy emlékezzünk a kosaradba tett tételekre akkor is, ha nem vagy bejelentkezve. Ha továbbra is a weboldalon navigálsz anélkül, hogy a „Sütik elfogadása” gombra kattintanál, akkor feltételezzük, hogy beleegyezésedet adod a weboldal működéséhez elengedhetetlenül szükséges sütik tárolásához."
- essential_cookies: "Lényeges cookie-k"
+ essential_cookies: "Lényeges sütik"
essential_cookies_desc: "Az alábbi cookie-k feltétlenül szükségesek weboldalunk működéséhez."
essential_cookies_note: "A legtöbb süti csak egyedi azonosítót tartalmaz, más adatot azonban nem, így például az e-mail címed és jelszavad soha nem szerepel bennük, és soha nem kerül nyilvánosságra."
cookie_domain: "Által meghatározott:"
@@ -2187,13 +2200,13 @@ hu:
cookie_remember_me_desc: "Akkor használatos, ha a felhasználóként arra kérted a webhelyet, hogy emlékezzen rád. Ez a süti 12 nap elteltével automatikusan törlődik. Ha felhasználóként szeretnéd törölni a sütit, csak ki kell jelentkezned. Ha nem szeretnéd, hogy a süti telepítve legyen a számítógépedre, ne jelöld be az „emlékezz rám” jelölőnégyzetet bejelentkezéskor."
cookie_openstreemap_desc: "Ezt a sütit barátságos, nyílt forráskódú térképszolgáltatónk (OpenStreetMap) használja annak biztosítására, hogy egy adott időszakon belül ne kapjon túl sok kérést, és megakadályozza a szolgáltatásaikkal való visszaélést."
cookie_stripe_desc: "A Stripe fizetési szolgáltató által a csalások felderítése céljából gyűjtött adatok https://stripe.com/cookies-policy/legal. Nem minden átvételi pont vagy termelő használja a Stripe-ot fizetési módszerként, de a csalás megelőzése érdekében jó gyakorlat, hogy minden oldalon alkalmazzuk. A Stripe valószínűleg képet alkot arról, hogy mely oldalaink lépnek általában kapcsolatba az API-jukkal, majd minden szokatlant megjelöl. A Stripe cookie beállításának tehát szélesebb funkciója van, mint egyszerűen a fizetési mód biztosítása a felhasználó számára. Eltávolítása befolyásolhatja magának a szolgáltatásnak a biztonságát. A Stripe-ról többet megtudhatsz, és elolvashatod adatvédelmi irányelveit a https://stripe.com/privacy oldalon."
- statistics_cookies: "Statisztikai cookie-k"
- statistics_cookies_desc: "Az alábbiak nem feltétlenül szükségesek, de segítik a legjobb felhasználói élmény biztosítását azáltal, hogy lehetővé teszik számunkra, hogy elemezzük a felhasználói viselkedést, azonosítsuk, mely funkciókat használja a legtöbbet, vagy nem használja, megértsük a felhasználói élményekkel kapcsolatos problémákat stb."
- statistics_cookies_matomo_desc_html: "platformhasználati adatok gyűjtéséhez és elemzéséhez a Matomo (ex Piwik) egy nyílt forráskódú elemző eszközt használunk, amely megfelel a GDPR-nak és védi a magánéletét."
- statistics_cookies_matomo_optout: "Leiratkozik a Matomo Analytics szolgáltatásról? Személyes adatot nem gyűjtünk, a Matomo segít a szolgáltatásunk fejlesztésében, de tiszteletben tartjuk az Ön választását :-)"
- cookie_matomo_basics_desc: "Matomo első féltől származó cookie-k statisztikák gyűjtéséhez."
- cookie_matomo_heatmap_desc: "Matomo Heatmap & Session Recording cookie."
- cookie_matomo_ignore_desc: "A cookie-k segítségével kizárják a felhasználót a nyomon követésből."
+ statistics_cookies: "Statisztikai sütik"
+ statistics_cookies_desc: "Az alábbiak nem feltétlenül szükségesek, de segítik a legjobb felhasználói élmény biztosítását azáltal, hogy lehetővé teszik számunkra, hogy elemezzük a felhasználói viselkedést, azonosítsuk, mely funkciókat használod a legtöbbet, vagy épp egyáltalán nem használod, segíti hogy megértsük a felhasználói élményekkel kapcsolatos problémákat stb."
+ statistics_cookies_matomo_desc_html: "Platformhasználati adatok gyűjtéséhez és elemzéséhez a Matomo nyílt forráskódú elemző szoftvert használjuk, amely megfelel az európai adatvédelmi jogszabályoknak és védi a felhasználók magánéletét."
+ statistics_cookies_matomo_optout: "Leiratkoznál a Matomo Analytics szolgáltatásról? Személyes adatot nem gyűjtünk, a Matomo segít az oldal fejlesztésében, de tiszteletben tartjuk a választásodat."
+ cookie_matomo_basics_desc: "Matomo első féltől származó sütik statisztikák gyűjtéséhez."
+ cookie_matomo_heatmap_desc: "Matomo Heatmap & Session Recording süti."
+ cookie_matomo_ignore_desc: "A sütik segítségével kizárják a felhasználót a nyomon követésből."
disabling_cookies_header: "Figyelmeztetés a cookie-k letiltására"
disabling_cookies_desc: "Felhasználóként bármikor engedélyezheted, blokkolhatod vagy törölheted az Open Food Network vagy bármely más webhely sütijeit a böngésző beállításaiban. Minden böngészőnek más a működése. Itt vannak a linkek:"
disabling_cookies_firefox_link: "https://support.mozilla.org/en-US/kb/enable-and-disable-cookies-website-preferences"
@@ -2204,7 +2217,7 @@ hu:
cookies_banner:
cookies_usage: "Ez az oldal úgynevezett sütiket (cookie-kat) használ annak érdekében, hogy az oldalon való navigációt zökkenőmentessé és biztonságossá tegye, valamint hogy segítsen megérteni számunkra, hogyan használod az oldalt, hogy javíthassuk az oldal működését."
cookies_definition: "A sütik nagyon kisméretű szöveges fájlok, amelyek bizonyos webhelyek meglátogatásakor a számítógépén tárolódnak."
- cookies_desc: "Csak olyan sütiket használunk, amelyek az élelmiszerek online értékesítéséhez/vásárlásához szükségesek. Az adataidat nem adjuk el senkinek. A sütiket elsősorban azért használjuk, hogy megjegyezzük ki vagy, ha „bejelentkezel” a szolgáltatásba, vagy hogy emlékezzünk az általad kosárba tett termékekre. Még akkor is, ha nem kattintott a „Sütik elfogadása\" gombra, feltételezzük, hogy hozzájárulsz ahhoz, hogy a weboldal működéséhez nélkülözhetetlen sütiket tároljuk, különben nem használható az oldal."
+ cookies_desc: "Csak olyan sütiket használunk, amelyek az élelmiszerek online értékesítéséhez/vásárlásához szükségesek. Az adataidat nem adjuk el senkinek. A sütiket elsősorban azért használjuk, hogy megjegyezzük ki vagy ha „bejelentkezel” a szolgáltatásba, vagy hogy emlékezzünk az általad kosárba tett termékekre. Még akkor is, ha nem kattintottál a „Sütik elfogadása\" gombra, feltételezzük, hogy hozzájárulsz ahhoz, hogy a weboldal működéséhez nélkülözhetetlen sütiket tároljuk, különben nem használható az oldal."
cookies_policy_link_desc: "Ha többet szeretnél megtudni, olvasd el a "
cookies_policy_link: "cookie-kra vonatkozó szabályzat"
cookies_accept_button: "Sütik elfogadása"
@@ -2251,7 +2264,7 @@ hu:
checkout_send: Rendelés leadása most
checkout_your_order: Összesítés
checkout_cart_total: Termékek összege
- checkout_shipping_price: Szállítás
+ checkout_shipping_price: Átvételi díj
checkout_total_price: Összesen
checkout_back_to_cart: "Vissza a kosárba"
cost_currency: "Költség Pénznem"
@@ -2261,13 +2274,13 @@ hu:
order_payment: "Fizetés:"
no_payment_required: "Nem igényel fizetést"
order_billing_address: Számlázási cím
- order_delivery_on: Kiszállítás
+ order_delivery_on: Készenállás
order_delivery_address: Szállítási cím
- order_delivery_time: Szállítási idő
+ order_delivery_time: Megrendelés készen áll
order_special_instructions: "Megjegyzés:"
order_pickup_time: Átvétel időpontja
order_pickup_instructions: Átvételi információk
- order_produce: Összesen
+ order_produce: Termékek
order_amount_paid: Kifizetett összeg
order_total_price: Összesen
order_balance_due: Fizetendő összeg
@@ -2314,6 +2327,7 @@ hu:
email_order_summary_subtotal: "Részösszeg:"
email_order_summary_total: "Összesen:"
email_order_summary_includes_tax: "(adót tartalmaz):"
+ email_order_summary_voucher_label: "Kupon (%{code}):"
email_payment_paid: FIZETETT
email_payment_not_paid: NEM FIZETETT
email_payment_description: Fizetési információk
@@ -2321,7 +2335,7 @@ hu:
email_payment_method: "Fizetés:"
email_so_placement_intro_html: "Új rendelése van a %{distributor}-nál"
email_so_placement_details_html: "A megrendelésed részletei %{distributor}:"
- email_so_placement_changes: "Sajnos nem minden kért termék volt elérhető. Az Ön által kért eredeti mennyiségek alább áthúzva jelennek meg."
+ email_so_placement_changes: "Sajnos nem minden kért termék volt elérhető. Az általad kért eredeti mennyiségek alább áthúzva jelennek meg."
email_so_payment_success_intro_html: "A megrendelés automatikus fizetése megtörtént %{distributor} felé."
email_so_placement_explainer_html: "Ez a rendelés automatikusan létrejött az Ön számára."
email_so_edit_true_html: "Addig módosításokat hajthat végre, amíg a rendelések le nem zárulnak a következő napon: %{orders_close_at}."
@@ -2337,8 +2351,8 @@ hu:
email_so_failed_payment_intro_html: "Megpróbáltuk feldolgozni a befizetést, de volt néhány probléma..."
email_so_failed_payment_explainer_html: "A(z) %{distributor} előfizetésed kifizetése hitelkártyájával kapcsolatos probléma miatt meghiúsult. %{distributor} értesítést kapott erről a sikertelen fizetésről."
email_so_failed_payment_details_html: "Íme a fizetési átjáró által biztosított hiba részletei:"
- email_shipping_delivery_details: Szállítás részletei
- email_shipping_delivery_time: "Szállítás időpontja:"
+ email_shipping_delivery_details: Átadás részletei
+ email_shipping_delivery_time: "Átadásra kész:"
email_shipping_delivery_address: "Szállítási cím:"
email_shipping_collection_details: Gyűjtemény részletei
email_shipping_collection_time: "Átvétel időpontja:"
@@ -2359,7 +2373,7 @@ hu:
producer_mail_greeting: "Kedves"
producer_mail_text_before: "Alább megtalálja a rendelési ciklusra vonatkozó frissítést:"
producer_mail_order_text: "Íme a termékei megrendelésének összefoglalása:"
- producer_mail_delivery_instructions: "Raktári átvételi/szállítási útmutató:"
+ producer_mail_delivery_instructions: "Raktári átvételi/szállítási instrukciók:"
producer_mail_signoff: "Köszönet és jókívánságok"
producer_mail_order_customer_text: "Itt található a rendelések összegzése ügyfelek szerint csoportosítva"
shopping_oc_closed: A rendelések lezárva
@@ -2368,14 +2382,14 @@ hu:
shopping_oc_next_open: "A következő ciklus %{distance_of_time} múlva kezdődik"
shopping_oc_select: "Válassz..."
shopping_tabs_home: "Nyitólap"
- shopping_tabs_shop: "Átvételi Pont"
- shopping_tabs_about: "Rólunk"
+ shopping_tabs_shop: "Átvételi Pont."
+ shopping_tabs_about: "Bemutatkozás"
shopping_tabs_producers: "Termelők"
shopping_tabs_contact: "Kapcsolat"
shopping_tabs_groups: "Csoportok"
shopping_contact_address: "Cím"
shopping_contact_web: "Kapcsolat"
- shopping_contact_social: "Kövesse"
+ shopping_contact_social: "Követés"
shopping_groups_part_of: "része:"
shopping_producers_of_hub: "%{hub} termelői:"
enterprises_next_closing: "Rendelés zárása"
@@ -2389,13 +2403,13 @@ hu:
hubs_shopping_here: "Vásárlás itt"
hubs_orders_closed: "A rendelések lezárva"
hubs_profile_only: "Csak profil"
- hubs_delivery_options: "Szállítási lehetőségek"
+ hubs_delivery_options: "Áruátadási lehetőségek"
hubs_pickup: "Átvétel"
- hubs_delivery: "Szállítás"
+ hubs_delivery: "Kiszállítás"
hubs_producers: "Termelőink"
hubs_filter_by: "Szűrés"
hubs_filter_type: "típus"
- hubs_filter_delivery: "Szállítás"
+ hubs_filter_delivery: "Áruátvételi mód"
hubs_filter_property: "Tulajdonság"
hubs_matches: "Keresési feltétel:"
hubs_intro: Nézz körül a környéken
@@ -2440,13 +2454,13 @@ hu:
groups_title: Csoportok
groups_headline: Csoportok és régiók
groups_text: "Minden termelő egyedi. Minden gazdaság valami mást tud nyújtani. Csoportjaink olyan termelők, átvételi pontok és forgalmazók kollektívái, akikben van valami közös, mint például a helyszín, a termelői piac vagy a filozófia. Ez könnyebbé teszi számodra az eligazodást. Fedezd fel csoportjainkat, és hagyd, hogy a válogatást elvégezzék helyetted."
- groups_search: "Keresés név vagy kulcsszó"
+ groups_search: "Keresés név vagy kulcsszó szerint"
groups_no_groups: "Nem található csoport"
groups_about: "Bemutatkozás"
groups_producers: "Termelőink"
groups_hubs: "A mi Átvételi Pontjaink"
groups_contact_web: Kapcsolat
- groups_contact_social: Kövesse
+ groups_contact_social: Követés
groups_contact_address: Cím
groups_contact_email: Küldj emailt nekünk
groups_contact_website: Látogasd meg weboldalunkat
@@ -2474,7 +2488,7 @@ hu:
producers_buy: 'Kínálat:'
producers_contact: Kapcsolat
producers_contact_phone: Hívás
- producers_contact_social: Kövesse
+ producers_contact_social: Követés
producers_buy_at_html: "%{enterprise} termékei itt érhetők el:"
producers_filter: Szűrés
producers_filter_type: típus
@@ -2538,7 +2552,7 @@ hu:
orders_form_total: "Összesen"
orders_oc_expired_headline: "A rendelések erre a rendelési ciklusra lezárultak"
orders_oc_expired_text: "Sajnáljuk, a rendelések erre a rendelési ciklusra %{time} előtt lezárultak! Kérjük, fordulj közvetlenül az Átvételi Ponthoz, hogy megtudd, tudnak-e fogadni késői rendeléseket."
- orders_oc_expired_text_others_html: "Sajnáljuk, a rendelések erre a rendelési ciklusra %{time} előtt lezárultak! Kérjük, fordulj közvetlenül az az Átvételi Ponthoz, hogy megtudd, tudnak-e fogadni késői rendeléseket. %{link}"
+ orders_oc_expired_text_others_html: "Sajnáljuk, a rendelések erre a rendelési ciklusra %{time} előtt lezárultak! Kérjük, fordulj közvetlenül az Átvételi Ponthoz, hogy megtudd, tudnak-e fogadni késői rendeléseket. %{link}"
orders_oc_expired_text_link: "vagy tekintse meg az ezen a átvételi ponton elérhető többi rendelési ciklust"
orders_oc_expired_email: "Email:"
orders_oc_expired_phone: "Telefon:"
@@ -2637,7 +2651,7 @@ hu:
registration_promo_image: "Fejléckép a profilodhoz"
registration_about_us: "Bemutatkozó szöveg"
registration_outcome_headline: "Milyen előnnyel jár ez?"
- registration_outcome1_html: "Profilod segít az embereknek megtalálni és kapcsolatba lépni Veled az Open Food Network hálózaton."
+ registration_outcome1_html: "Profilod segít az embereknek megtalálni téged és kapcsolatba lépni veled az Open Food Network hálózatban."
registration_outcome2: "Használd ezt a lehetőséget vállalkozásod bemutatására, és segíts kapcsolatokat teremteni - közösségi és online jelenléten keresztül."
registration_outcome3: "Ez egyben az első lépés az Open Food Network-ben történő értékesítés megnyitása felé."
registration_action: "Lássunk neki!"
@@ -2660,7 +2674,7 @@ hu:
postcode_field: "Irányítószám:"
postcode_field_placeholder: "pl 3070"
postcode_field_error: "Irányítószám szükséges"
- state_field: "Ország:"
+ state_field: "Megye:"
state_field_error: "Ország szükséges"
country_field: "Ország:"
country_field_error: "Kérjük, válasszon országot"
@@ -2797,7 +2811,7 @@ hu:
successfully_removed: '%{resource} sikeresen eltávolítva!'
successfully_updated: '%{resource} sikeresen frissítve!'
running_balance: "Futó egyenleg"
- outstanding_balance: "Kintlévőség"
+ outstanding_balance: "Fizetendő"
admin_enterprise_relationships: "Vállalkozási Engedélyek"
admin_enterprise_relationships_everything: "Minden"
admin_enterprise_relationships_permits: "engedélyezi"
@@ -2818,7 +2832,7 @@ hu:
admin_enterprise_groups_contact_city_placeholder: "például Kukutyin"
admin_enterprise_groups_contact_zipcode: "Irányítószám"
admin_enterprise_groups_contact_zipcode_placeholder: "például 3070"
- admin_enterprise_groups_contact_state_id: "Ország"
+ admin_enterprise_groups_contact_state_id: "Megye"
admin_enterprise_groups_contact_country_id: "Ország"
admin_enterprise_groups_web_twitter: "például @the_prof"
admin_enterprise_groups_web_website_placeholder: "például www.truffles.com"
@@ -2838,7 +2852,7 @@ hu:
enterprise_fees: "Vállalkozási Díjak"
process_my_order: "Rendelésem Feldolgozása"
delivery_instructions: Szállítási Utasítások
- delivery_method: Szállítási Mód
+ delivery_method: Áruátvételi Mód
fee_type: "Díjtípus"
tax_category: "Adókategória"
display: "Kijelző"
@@ -2852,7 +2866,7 @@ hu:
flat_rate_per_item: "Átalánydíj (tételenként)"
flat_rate_per_order: "Átalánydíj (rendelésenként)"
flexible_rate: "Rugalmas díj"
- price_sack: "Price Sack"
+ price_sack: "Rendelési összeg függő"
new_order_cycles: "Új Rendelési Ciklusok"
new_order_cycle: "Új Rendelési Ciklus"
new_order_cycle_tooltip: "Nyisd meg az üzletet egy bizonyos intervallumra"
@@ -2883,24 +2897,14 @@ hu:
spree_admin_overview_enterprises_footer: "VÁLLALKOZÁSAIM KEZELÉSE"
spree_admin_enterprises_hubs_name: "Név"
spree_admin_enterprises_create_new: "ÚJ KÉSZÍTÉSE"
- spree_admin_enterprises_shipping_methods: "Szállítási módok"
+ spree_admin_enterprises_shipping_methods: "Áruátadási módok"
spree_admin_enterprises_fees: "Vállalkozási díjak"
spree_admin_enterprises_none_create_a_new_enterprise: "ÚJ VÁLLALKOZÁS LÉTREHOZÁSA"
spree_admin_enterprises_none_text: "Még nincsenek vállalkozásaid"
- spree_admin_enterprises_tabs_hubs: "ÁTVÉTELI PONTOK"
+ spree_admin_enterprises_showing: "Látható: %{count} Ennyiből:%{total}"
spree_admin_enterprises_producers_manage_products: "TERMÉKEK KEZELÉSE"
spree_admin_enterprises_create_new_product: "ÚJ TERMÉK KÉSZÍTÉSE"
- spree_admin_single_enterprise_alert_mail_confirmation: "Kérjük, erősítsd meg az email címet"
- spree_admin_single_enterprise_alert_mail_sent: "E-mailt küldtünk a címre"
- spree_admin_overview_action_required: "Intézkedés szükséges"
- spree_admin_overview_check_your_inbox: "Kérjük, nézd meg beérkezett üzeneteid a további utasításokért. Köszönjük!"
- spree_admin_unit_value: Egységérték
- spree_admin_unit_description: Egység leírása
- spree_admin_variant_unit: Változat egysége
- spree_admin_variant_unit_scale: Változat egység skála
spree_admin_supplier: Beszállító
- spree_admin_product_category: Termékkategória
- spree_admin_variant_unit_name: Változat egység neve
unit_name: "Egység neve"
change_package: "Felhasználótípus módosítása"
spree_admin_single_enterprise_hint: "Tipp: Ha szeretnéd, hogy mások megtaláljanak, állítsd a profilod láthatóságát nyilvánosra alább: "
@@ -2932,7 +2936,7 @@ hu:
new_order: "Új Rendelés"
enterprise_tos_link: "Szolgáltatási Feltételek termelőknek, vállalkozásoknak link"
enterprise_tos_message: "Olyan emberekkel szeretnénk dolgozni, akik osztoznak a céljainkban és az értékeinkben. Ezért arra kérjük az új vállalkozásokat, hogy egyeztessenek velünk."
- enterprise_tos_agree: "Elfogadom a fenti szolgáltatási feltételeket"
+ enterprise_tos_agree: "Elfogadom a fenti feltételeket"
tax_settings: "Adózási Beállítások"
products_require_tax_category: "a termékek adókategóriát igényelnek"
admin_shared_address_1: "Cím"
@@ -2940,7 +2944,7 @@ hu:
admin_share_city: "Város"
admin_share_zipcode: "Irányítószám"
admin_share_country: "Ország"
- admin_share_state: "Ország"
+ admin_share_state: "Ország'"
hub_sidebar_hubs: "Átvételi Pontok"
hub_sidebar_none_available: "Nincs Elérhető"
hub_sidebar_manage: "Szerkesztés"
@@ -3006,10 +3010,10 @@ hu:
report_header_hub_address_line2: "Átvételi Pont cím 2"
report_header_hub_address_city: "Átvételi Pont kerület"
report_header_hub_address_zipcode: "Átvételi Pont irányítószám"
- report_header_hub_address_state_name: "Átvételi Pont ország"
+ report_header_hub_address_state_name: "Átvételi Pont megye"
report_header_code: Kód
report_header_paid: Fizetett?
- report_header_delivery: Szállítás?
+ report_header_delivery: Áruátadás?
report_header_shipping: Szállítás
report_header_shipping_instructions: Szállítási utasítások
report_header_ship_street: Szállítási utca
@@ -3023,7 +3027,7 @@ hu:
report_header_billing_street_4: Számlázási utca 4
report_header_billing_city: Számlázási város
report_header_billing_postcode: Számlázási irányítószám
- report_header_billing_state: Számlázási ország
+ report_header_billing_state: Számlázási állapot
report_header_incoming_transport: Bejövő szállítás
report_header_special_instructions: Különleges utasítások
report_header_order_number: Rendelésszám
@@ -3034,7 +3038,7 @@ hu:
report_header_items_total: "Tételek összesen %{currency_symbol}"
report_header_taxable_items_total: "Adóköteles tételek összesen (%{currency_symbol})"
report_header_sales_tax: "Értékesítési adó (%{currency_symbol})"
- report_header_delivery_charge: "Szállítási díj (%{currency_symbol})"
+ report_header_delivery_charge: "Kiszállítási díj (%{currency_symbol})"
report_header_tax: "Adó"
report_header_tax_on_delivery: "Kiszállítás adója (%{currency_symbol})"
report_header_tax_on_fees: "Díjak adója (%{currency_symbol})"
@@ -3091,7 +3095,7 @@ hu:
report_header_distributor_tax_status: A Forgalmazó Adózási státusza
report_header_delivery_address: Szállítási cím
report_header_delivery_postcode: Szállítási irányítószám
- report_header_bulk_unit_size: Tömeges egység mérete
+ report_header_bulk_unit_size: Rugalmas mennyiség mérete
report_header_weight: Súly
report_header_final_weight_volume: Végleges (súly/mennyiség)
report_header_height: Magasság
@@ -3186,7 +3190,7 @@ hu:
primary_details: "Főbb adatok"
social: "Közösségi"
shipping: "Szállítás"
- shipping_methods: "Szállítási módok"
+ shipping_methods: "Áruátadási módok"
payment_methods: "Fizetési módok"
payment_method_fee: "Tranzakciós díj"
payment_processing_failed: "A fizetést nem sikerült feldolgozni, kérjük ellenőrizd a megadott adatokat"
@@ -3292,7 +3296,7 @@ hu:
overview: Áttekintés
overview_text: >
A címkeszabályok lehetőséget adnak annak leírására, hogy mely elemek
- láthatók, illetve elrejtettek. A tételek lehetnek szállítási módok,
+ láthatók, illetve elrejtettek. A tételek lehetnek áruátadási módok,
fizetési módok, termékek és rendelési ciklusok.
by_default_rules: "'Alapértelmezés szerint...' Szabályok"
by_default_rules_text: >
@@ -3306,13 +3310,13 @@ hu:
az alapértelmezett viselkedést (legyen az elemek megjelenítése vagy
elrejtése) a megadott címkével rendelkező ügyfelek számára.
terms_and_conditions_info:
- title: "Általános Szerződési Feltételek feltöltése"
- message_1: "Az Általános Szerződési Feltételek az eladó és a vásárló közötti szerződés. Ha feltöltesz egy fájlt ide, a vásárlóknak el kell fogadniuk az Általános Szerződési Feltételeket a fizetés befejezéséhez. A vásárló számára ez egy jelölőnégyzetként jelenik meg a pénztárnál, amelyet be kell jelölnie a fizetés folytatásához. Javasoljuk, hogy a hazai jogszabályokkal összhangban tölts fel Általános Szerződési Feltételeket."
- message_2: "A vásárlóknak csak egyszer kell elfogadniuk az Általános Szerződési Feltételeket. Ha azonban megváltoztatod az Általános Szerződési Feltételeket, a vásárlóknak ismét el kell fogadniuk, mielőtt fizetésre kerülne a rendelésük."
+ title: "ÁSZF-GDPR dokumentum feltöltése"
+ message_1: "Az Általános Szerződési Feltételek az eladó és a vásárló közötti szerződés. Ha feltöltesz egy fájlt ide, a vásárlóknak el kell fogadniuk a rendelés leadásához. A vásárló számára ez egy jelölőnégyzetként jelenik meg a, amelyet be kell jelölnie a folytatáshoz. Mivel az oldal nemzetközi, ezért összesen 1 ilyen fájl feltöltésére van lehetőség, így az Adatvédelmi tájékoztatót (GDPR) és az ÁSZF-et 1 fájlban tudod feltölteni. Javasoljuk, hogy a hazai jogszabályokkal összhangban töltsd fel ezt a kettős dokumentumot."
+ message_2: "A vásárlóknak csak egyszer kell elfogadniuk a GDPR-ÁSZF kettős dokumentumot. Ha azonban megváltoztatod, a vásárlóknak ismét el kell fogadniuk, mielőtt véglegesítenék rendelésük."
terms_and_conditions_warning:
- title: "Általános Szerződési Feltételek feltöltése"
- message_1: "Minden vásárlónak egyszer el kell fogadnia ezeket a fizetéskor. Ha frissíti a fájlt, minden vásárlónak újra el kell fogadnia azokat a fizetéskor."
- message_2: "Az előfizetéssel rendelkező vásárlóknak egyelőre e-mailben el kell küldeniük az Általános Szerződési Feltételeket (vagy azok módosításait), mivel más értesítést nem kapnak új Általános Szerződési Feltételekről."
+ title: "GDPR-ÁSZF feltöltése"
+ message_1: "Minden vásárlónak egyszer el kell fogadnia ezeket a fizetéskor. Ha frissíted a fájlt, minden vásárlónak újra el kell fogadnia azokat a fizetéskor."
+ message_2: "Az előfizetéssel rendelkező vásárlóknak egyelőre e-mailben el kell küldened az Adatkezelési Tájékoztatót és az Általános Szerződési Feltételeket (vagy azok módosításait), mivel más értesítést nem kapnak a dokumentum frissítéséről."
business_address_info:
message: "A cég hivatalos neve, címe és telefonszáma olyan vállalkozásoknál használatos, amelyek nyilvános kereskedési adataiktól eltérő hivatalos adatokkal bejegyzett jogi személytől számláznak. Ezeket az adatokat CSAK számlákon használjuk fel. Ha ezek az adatok üresek, az Ön nyilvános neve, címe és telefonszáma kerül felhasználásra a számlákon."
panels:
@@ -3327,8 +3331,8 @@ hu:
Network oldalán. Vállalkozásod látható lesz a térképen és kereshető
lesz a listákban.
hub_profile_text2: >
- A helyi élelmiszer-rendszeren belüli kapcsolatok kialakítása révén az
- Open Food Network mindig ingyenes lesz.
+ A helyi élelmiszer-rendszeren belüli kapcsolatok kialakítása érdekében
+ az Open Food Network profil létrehozása mindig ingyenes lesz.
hub_shop: Átvételi pont
hub_shop_text1: >
Szervezeted a helyi élelmezési rendszer csomópontja. Más termelőktől
@@ -3420,7 +3424,7 @@ hu:
no_variants: "Nincs elérhető termékváltozat ehhez a termékhez (a készletbeállításokban rejtett státuszúak)."
some_variants_hidden: "(Egyes termékváltozatok a leltárbeállítások miatt rejtve maradhatnak)"
tag_rules:
- shipping_method_tagged_top: "Szállítási módok felcímkézve"
+ shipping_method_tagged_top: "Áruátadási módok felcímkézve"
shipping_method_tagged_bottom: "vannak:"
payment_method_tagged_top: "Fizetési módok felcímkézve"
payment_method_tagged_bottom: "vannak:"
@@ -3521,8 +3525,8 @@ hu:
immediate_logo_removal_warning: "A logót a megerősítés után azonnal eltávolítjuk."
removed_promo_image_successfully: "A Promó kép sikeresen eltávolítva"
immediate_promo_image_removal_warning: "A promó képet a megerősítés után azonnal eltávolítjuk."
- immediate_terms_and_conditions_removal_warning: "Az Általános Szerződési Feltételek fájlt a megerősítés után azonnal eltávolítjuk."
- removed_terms_and_conditions_successfully: "Az Általános Szerződési Feltételek fájl sikeresen eltávolítva"
+ immediate_terms_and_conditions_removal_warning: "A GDPR-ÁSZF fájlt a megerősítés után azonnal eltávolítjuk."
+ removed_terms_and_conditions_successfully: "A GDPR és ÁSZF fájl sikeresen eltávolítva"
insufficient_stock: "Nem áll rendelkezésre elegendő készlet, csak %{on_hand} maradt"
out_of_stock:
reduced_stock_available: Csökkentett készlet áll rendelkezésre
@@ -3565,7 +3569,7 @@ hu:
stock_reset: A készletek visszaállnak az alapértelmezett értékekre.
tag_rules:
show_hide_variants: 'Változatok megjelenítése vagy elrejtése a kirakatomban'
- show_hide_shipping: 'Szállítási módok megjelenítése vagy elrejtése fizetéskor'
+ show_hide_shipping: 'Áruátadási módok megjelenítése vagy elrejtése fizetéskor'
show_hide_payment: 'Fizetési módok megjelenítése vagy elrejtése a pénztárnál'
show_hide_order_cycles: 'Rendelési ciklusok megjelenítése vagy elrejtése az online kirakatban'
visible: LÁTHATÓ
@@ -3849,7 +3853,7 @@ hu:
resend: "Újraküldés"
back_to_orders_list: "Vissza a rendelési listához"
back_to_payments_list: "Vissza a fizetési listához"
- back_to_states_list: "Vissza a státusz listához"
+ back_to_states_list: "Vissza a megyék listájához"
return_authorizations: "Visszaküldési engedélyek"
cannot_create_returns: "Nem tudsz visszárut létrehozni, mivel a rendelésnek nincsenek kiszállított egységei."
select_stock: "Válassz a készletről"
@@ -3865,7 +3869,7 @@ hu:
edit: "Szerkesztés"
split: "Hasított"
delete: "Töröl"
- cannot_set_shipping_method_without_address: "A szállítási módot nem lehet beállítani, amíg meg nem adják az ügyfél adatait."
+ cannot_set_shipping_method_without_address: "A áruátvételi módot nem lehet beállítani, amíg meg nem adják az ügyfél adatait."
no_tracking_present: "Nincsenek megadva nyomkövetési adatok."
tracking: "Követés"
tracking_number: "Nyomkövetési szám"
@@ -3946,19 +3950,19 @@ hu:
default_tax: "Alapértelmezett adó"
default_tax_zone: "Alapértelmezett adózóna"
country_based: "Ország alapú"
- state_based: "Állam alapú"
+ state_based: "Státusz alapú"
countries: "Országok"
listing_countries: "Országok listázása"
iso_name: "ISO név"
states_required: "Állam kötelező"
editing_country: "Ország szerkesztése"
back_to_countries_list: "Vissza az országok listájához"
- states: "Államok"
+ states: "Megyék"
abbreviation: "Rövidítés"
- new_state: "Új állam"
+ new_state: "Új megye"
payment_methods: "Fizetési módok"
taxons: "Termékkategóriák"
- shipping_methods: "Szállítási módok"
+ shipping_methods: "Áruátadási módok"
shipping_method: "Szállítási Mód"
shipment: "Szállítás"
payment: "Fizetés"
@@ -3971,7 +3975,7 @@ hu:
description: "Leírás"
type: "Típus"
default: "alapértelmezett"
- calculator: "Kiszámítási mód"
+ calculator: "Díjszámítási mód"
zone: "Zóna"
display: "Kijelző"
environment: "Környezet"
@@ -3984,8 +3988,8 @@ hu:
per_kg: "Kg-onként"
amount: "Összeg"
currency: "Valuta"
- first_item: "Első Cikk költsége"
- additional_item: "További cikkköltség"
+ first_item: "Első termék költsége"
+ additional_item: "További termék költsége"
max_items: "Max tételek"
minimal_amount: "Minimális mennyiség"
normal_amount: "Normál mennyiség"
@@ -4006,7 +4010,7 @@ hu:
inventory_error_flash_for_insufficient_quantity: "A kosaradban lévő tétel már nem elérhető."
inventory: Leltár
zipcode: Irányítószám
- weight: Súly (kg vagy font)
+ weight: Súly (kg alapú)
error_user_destroy_with_orders: "A teljesített rendelésekkel rendelkező felhasználók nem törölhetők"
cannot_create_payment_without_payment_methods: "Fizetési módok megadása nélkül nem hozhatsz létre fizetést egy rendelésre."
please_define_payment_methods: "Kérjük, először határozz meg néhány fizetési módot."
@@ -4066,7 +4070,7 @@ hu:
tab:
dashboard: "Irányítópult"
orders: "Megrendelések"
- bulk_order_management: "Tömeges megrendelés kezelése"
+ bulk_order_management: "Rugalmas mennyiségű termékek kezelése"
subscriptions: "Előfizetések"
products: "Termékek"
products_v3: "Termékek"
@@ -4177,7 +4181,7 @@ hu:
shipment_state: "Szállítási Státusz"
completed_at: "Elkészült:"
number: "Szám"
- state: "Ország"
+ state: "Státusz?"
email: "Ügyfél e-mail"
invoice:
issued_on: "Kiadott"
@@ -4236,30 +4240,30 @@ hu:
view_all_releases: Az összes verzió megtekintése
shipping_methods:
index:
- shipping_methods: "Szállítási módok"
+ shipping_methods: "Áruátadási módok"
new_shipping_method: "Új szállítási mód"
name: "Név"
products_distributor: "Elosztó"
zone: "Zóna"
- calculator: "Kiszámítási mód"
- display: "Kijelző"
- both: "Mind a Checkout, mind a Back office"
- back_end: "Csak back office"
+ calculator: "Díjszámítási mód"
+ display: "Láthatóság"
+ both: "Mind a vásárlók, mind az adminisztráció számára"
+ back_end: "Csak adminisztráció"
no_shipping_methods_found: "Nem található szállítási mód"
new:
new_shipping_method: "Új szállítási mód"
- back_to_shipping_methods_list: "Vissza a Szállítási módok listájához"
+ back_to_shipping_methods_list: "Vissza az Áruátadási módok listájához"
edit:
editing_shipping_method: "Szállítási mód szerkesztése"
new: "Új"
- back_to_shipping_methods_list: "Vissza a Szállítási módok listájához"
+ back_to_shipping_methods_list: "Vissza az Áruátadási módok listájához"
form:
categories: "Kategóriák"
tax_category: "Adókategória"
zones: "Zónák"
- both: "Mind a Checkout, mind a Back office"
- back_end: "Csak back office"
- deactivation_warning: "Egy szállítási mód deaktiválásával a szállítási mód eltűnhet a listáról. Alternatív megoldásként elrejtheti a szállítási módot a fizetési oldalon, ha a „Megjelenítés” lehetőséget „csak háttérirodában” értékre állítja."
+ both: "Mind a vásárlók, mind az adminisztráció számára"
+ back_end: "Csak adminisztráció"
+ deactivation_warning: "Egy áruátvételi mód deaktiválásával az áruátvételi mód eltűnhet a listáról. Alternatív megoldásként elrejtheted az adott áruátvételi módot a vásárlói oldalon, ha a „Láthatóság” lehetőséget „csak adminisztráció” értékre állítja."
payment_methods:
index:
payment_methods: "Fizetési módok"
@@ -4268,7 +4272,7 @@ hu:
products_distributor: "Elosztó"
provider: "Szolgáltató"
environment: "Környezet"
- display: "Kijelző"
+ display: "Láthatóság"
active: "Aktív"
both: "Mindkettő"
back_end: "Csak back office"
@@ -4299,11 +4303,11 @@ hu:
name: "Név"
description: "Leírás"
environment: "Környezet"
- display: "Kijelző"
+ display: "Láthatóság"
active: "Aktív"
active_yes: "Igen"
active_no: "Nem"
- both: "Mind a Checkout, mind a Back office"
+ both: "Mind a vásárlók, mind az adminisztráció számára"
back_end: "Csak back office"
tags: "Címkék"
deactivation_warning: "Egy fizetési mód deaktiválásával a fizetési mód eltűnhet a listáról. Alternatív megoldásként elrejthet egy fizetési módot a fizetési oldalon, ha a „Megjelenítés” lehetőséget „csak háttérirodában” értékre állítja."
@@ -4329,7 +4333,7 @@ hu:
new_product: "Új termék"
supplier: "Beszállító"
supplier_select_placeholder: "Válassz ki egy beszállítót"
- search_for_suppliers: "Keresés beszállítóra"
+ search_for_suppliers: "Keresés beszállítókra"
search_for_units: "Keresés kiszerelésre"
product_name: "Termék név"
units: "Mértékegység"
@@ -4361,14 +4365,14 @@ hu:
import_date: "Importálás dátuma"
products_variant:
variant_has_n_overrides: "Ennek a változatnak %{n} felülírása van"
- new_variant: "Új variáns"
+ new_variant: "Új változat"
product_name: Termék név
primary_taxon_form:
product_category: Termékkategória
search_for_categories: "Keresés termékkategóriára"
group_buy_form:
- group_buy: "Csoportos vásárlás?"
- bulk_unit_size: Tömeges mértékegység
+ group_buy: "Engedélyezed a rugalmas mennyiség vásárlását?"
+ bulk_unit_size: Rugalmas mennyiség mérete
display_as:
display_as: Megjelenítés mint
clone:
@@ -4396,6 +4400,7 @@ hu:
form:
disabled: "Tiltva?"
email: "Email"
+ admin: "Szuperadmin?"
enterprise_limit: "Vállalkozási korlát"
confirm_password: "Jelszó megerősítése"
password: "Jelszó"
@@ -4439,7 +4444,7 @@ hu:
name: "Név"
number: "Szám"
completed_at: "Elkészült:"
- state: "Státusz"
+ state: "Státusz!"
payment_state: "Fizetési Státusz"
shipment_state: "Szállítási Státusz"
email: "Email"
@@ -4469,7 +4474,7 @@ hu:
edit:
legal_settings: "Jogi beállítások"
cookies_consent_banner_toggle: "A cookie-k beleegyezését kérő szalaghirdetés megjelenítése"
- privacy_policy_url: "Adatvédelmi irányelvek URL-címe"
+ privacy_policy_url: "Adatvédelmi nyilatkozat URL-címe"
enterprises_require_tos: "A vállalkozásoknak el kell fogadniuk a Szolgáltatási feltételeket"
shoppers_require_tos: "A vásárlóknak el kell fogadniuk a Szolgáltatási feltételeket"
cookies_policy_matomo_section: "Jelenítse meg a Matomo részt a cookie-kra vonatkozó irányelvek oldalán"
@@ -4512,7 +4517,7 @@ hu:
shipped: kiszállítva
canceled: törölve
payment_states:
- balance_due: fizetendő összeg
+ balance_due: fennálló tartozás
completed: elkészült
checkout: tovább
credit_owed: hiteltartozás
@@ -4547,6 +4552,7 @@ hu:
invoice_attached_text: Mellékelten talál egy összesítőt a legutóbbi rendeléséről
user_mailer:
reset_password_instructions:
+ dear_customer: "Kedves Fogyasztó,"
request_sent_text: |
Jelszó visszaállítására irányuló kérés érkezett.
Ha nem te nyújtottad be ezt a kérést, egyszerűen hagyd figyelmen kívül ezt az e-mailt.
@@ -4647,8 +4653,8 @@ hu:
settings: Fiók beállítások
unconfirmed_email: "E-mail megerősítésre vár: %{unconfirmed_email}. E-mail címed frissítésre kerül, amint az új e-mailt megerősítjük."
orders:
- open_orders: Rendelések megnyitása
- past_orders: Korábbi megrendelések
+ open_orders: Nyitott megrendeléseim
+ past_orders: Korábbi megrendeléseim
transactions:
transaction_history: Tranzakciós előzmények
authorisation_required: Engedély szükséges
@@ -4671,7 +4677,7 @@ hu:
total: Összesen
paid?: Fizetett?
status: Státusz
- completed: Elkészült
+ completed: Befejezett
cancelled: Törölve
saved_cards:
default?: Alapértelmezett?
diff --git a/config/locales/it.yml b/config/locales/it.yml
index 45a73be241..9f2e8a31e4 100644
--- a/config/locales/it.yml
+++ b/config/locales/it.yml
@@ -661,6 +661,8 @@ it:
index:
update: Aggiorna
new: Nuovo
+ selected:
+ other: "%{count} selezionato"
import: Importazione
enterprise_fees:
index:
@@ -2616,20 +2618,9 @@ it:
spree_admin_enterprises_fees: "Tariffe dell'azienda"
spree_admin_enterprises_none_create_a_new_enterprise: "CREA NUOVA AZIENDA"
spree_admin_enterprises_none_text: "Non hai nessua azienda al momento"
- spree_admin_enterprises_tabs_hubs: "HUBS"
spree_admin_enterprises_producers_manage_products: "GESTISCI PRODOTTI"
spree_admin_enterprises_create_new_product: "CREA UN NUOVO PRODOTTO"
- spree_admin_single_enterprise_alert_mail_confirmation: "Conferma l'indirizzo email per"
- spree_admin_single_enterprise_alert_mail_sent: "Abbiamo spedito una mail a"
- spree_admin_overview_action_required: "Azione richiesta"
- spree_admin_overview_check_your_inbox: "Controlla le tua email per ulteriori istruzioni. Grazie!"
- spree_admin_unit_value: Unità di valore
- spree_admin_unit_description: Descrizione Unità
- spree_admin_variant_unit: Variante
- spree_admin_variant_unit_scale: Scala delle unità
spree_admin_supplier: Fornitore
- spree_admin_product_category: Categoria prodotto
- spree_admin_variant_unit_name: Nome della variante
unit_name: "Nome Unità"
change_package: "Cambia pacchetto"
spree_admin_single_enterprise_hint: "Suggerimento: Per permettere alle persone di trovarti, abilita la tua visibilità sotto"
diff --git a/config/locales/it_CH.yml b/config/locales/it_CH.yml
index 45a64e996f..7934edbddd 100644
--- a/config/locales/it_CH.yml
+++ b/config/locales/it_CH.yml
@@ -2509,20 +2509,9 @@ it_CH:
spree_admin_enterprises_fees: "Tariffe dell'azienda"
spree_admin_enterprises_none_create_a_new_enterprise: "CREA NUOVA AZIENDA"
spree_admin_enterprises_none_text: "Non hai nessua azienda al momento"
- spree_admin_enterprises_tabs_hubs: "HUBS"
spree_admin_enterprises_producers_manage_products: "GESTISCI PRODOTTI"
spree_admin_enterprises_create_new_product: "CREA UN NUOVO PRODOTTO"
- spree_admin_single_enterprise_alert_mail_confirmation: "Conferma l'indirizzo email per"
- spree_admin_single_enterprise_alert_mail_sent: "Abbiamo spedito una mail a"
- spree_admin_overview_action_required: "Azione richiesta"
- spree_admin_overview_check_your_inbox: "Controlla le tua email per ulteriori istruzioni. Grazie!"
- spree_admin_unit_value: Unità di valore
- spree_admin_unit_description: Descrizione Unità
- spree_admin_variant_unit: Variante
- spree_admin_variant_unit_scale: Scala delle unità
spree_admin_supplier: Fornitore
- spree_admin_product_category: Categoria prodotto
- spree_admin_variant_unit_name: Nome della variante
unit_name: "Nome Unità"
change_package: "Cambia pacchetto"
spree_admin_single_enterprise_hint: "Suggerimento: Per permettere alle persone di trovarti, abilita la tua visibilità sotto"
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index 3f8bfeda8f..66a7ecdbfc 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -2539,20 +2539,9 @@ ko:
spree_admin_enterprises_fees: "기업 수수료"
spree_admin_enterprises_none_create_a_new_enterprise: "내 회사 생성하기"
spree_admin_enterprises_none_text: "아직 어떤 회사도 가지고 있지 않습니다"
- spree_admin_enterprises_tabs_hubs: "허브"
spree_admin_enterprises_producers_manage_products: "생산품 관리"
spree_admin_enterprises_create_new_product: "새 생산품 생성하기"
- spree_admin_single_enterprise_alert_mail_confirmation: "이메일 주소를 확인해 주십시요."
- spree_admin_single_enterprise_alert_mail_sent: "이메일을 전송했습니다"
- spree_admin_overview_action_required: "필요한 작업"
- spree_admin_overview_check_your_inbox: "자세한 내용은 받은 편지함을 확인하시면 됩니다. 감사합니다!"
- spree_admin_unit_value: 단위 값
- spree_admin_unit_description: 단위 설명
- spree_admin_variant_unit: 구성 단위 변경
- spree_admin_variant_unit_scale: 변경할 구성 단위 크기
spree_admin_supplier: 공급업체
- spree_admin_product_category: 물품 목록
- spree_admin_variant_unit_name: 변경된 구성 단위 이름
unit_name: "단위 이름"
change_package: "패키지 변경"
spree_admin_single_enterprise_hint: "힌트 : 다른 사용자가 사용자를 찾을 수 있도록 하려면 다음에서 사용자 가시성을 켜십시오."
diff --git a/config/locales/ml.yml b/config/locales/ml.yml
index 532871c769..fa2827af2b 100644
--- a/config/locales/ml.yml
+++ b/config/locales/ml.yml
@@ -699,6 +699,8 @@ ml:
index:
update: അപ്ഡേറ്റ് ചെയ്യുക
new: പുതിയത്
+ selected:
+ other: "%{count} തിരഞ്ഞെടുത്തു"
import: ഇറക്കുമതി ചെയ്യുക
enterprise_fees:
index:
@@ -2769,20 +2771,9 @@ ml:
spree_admin_enterprises_fees: "എന്റർപ്രൈസ് ഫീസ്"
spree_admin_enterprises_none_create_a_new_enterprise: "ഒരു പുതിയ എന്റർപ്രൈസ് സൃഷ്ടിക്കുക"
spree_admin_enterprises_none_text: "നിങ്ങൾക്ക് ഇതുവരെ സംരംഭങ്ങളൊന്നുമില്ല"
- spree_admin_enterprises_tabs_hubs: "ഹബ്ബുകൾ"
spree_admin_enterprises_producers_manage_products: "ഉൽപ്പന്നങ്ങൾ കൈകാര്യം ചെയ്യുക"
spree_admin_enterprises_create_new_product: "ഒരു പുതിയ ഉൽപ്പന്നം സൃഷ്ടിക്കുക"
- spree_admin_single_enterprise_alert_mail_confirmation: "ഇതിനായുള്ള ഇമെയിൽ വിലാസം ദയവായി സ്ഥിരീകരിക്കുക"
- spree_admin_single_enterprise_alert_mail_sent: "ഞങ്ങൾ ഇതിലേക്ക് ഒരു ഇമെയിൽ അയച്ചു-"
- spree_admin_overview_action_required: "നടപടി ആവശ്യമാണ്"
- spree_admin_overview_check_your_inbox: "കൂടുതൽ നിർദ്ദേശങ്ങൾക്കായി നിങ്ങളുടെ ഇൻബോക്സ് പരിശോധിക്കുക. നന്ദി!"
- spree_admin_unit_value: യൂണിറ്റ് മൂല്യം
- spree_admin_unit_description: യൂണിറ്റ് വിവരണം
- spree_admin_variant_unit: വേരിയന്റ് യൂണിറ്റ്
- spree_admin_variant_unit_scale: വേരിയന്റ് യൂണിറ്റ് സ്കെയിൽ
spree_admin_supplier: വിതരണക്കാരൻ
- spree_admin_product_category: ഉൽപ്പന്ന വിഭാഗം
- spree_admin_variant_unit_name: വേരിയന്റ് യൂണിറ്റിന്റെ പേര്
unit_name: "യൂണിറ്റിന്റെ പേര്"
change_package: "പാക്കേജ് മാറ്റുക"
spree_admin_single_enterprise_hint: "സൂചന: നിങ്ങളെ കണ്ടെത്താൻ ആളുകളെ അനുവദിക്കുന്നതിന്, ചുവടെ നിങ്ങളുടെ ദൃശ്യപരത ഓണാക്കുക"
diff --git a/config/locales/mr.yml b/config/locales/mr.yml
index 8026992fee..f35ea8099d 100644
--- a/config/locales/mr.yml
+++ b/config/locales/mr.yml
@@ -2675,20 +2675,9 @@ mr:
spree_admin_enterprises_fees: "एंटरप्राइझ फी"
spree_admin_enterprises_none_create_a_new_enterprise: "नवीन एंटरप्राइझ तयार करा"
spree_admin_enterprises_none_text: "तुमच्याकडे अजून कोणतेही एंटरप्राइझेस नाहीत"
- spree_admin_enterprises_tabs_hubs: "हब्स"
spree_admin_enterprises_producers_manage_products: "उत्पादने मॅनेज करा"
spree_admin_enterprises_create_new_product: "नवीन उत्पादन तयार करा"
- spree_admin_single_enterprise_alert_mail_confirmation: "कृपया ईमेल पत्त्याची पुष्टी करा"
- spree_admin_single_enterprise_alert_mail_sent: "आम्ही यांना ईमेल पाठवला आहे"
- spree_admin_overview_action_required: "कृती आवश्यक"
- spree_admin_overview_check_your_inbox: "पुढील सूचनांसाठी कृपया तुमचा इनबॉक्स पहा. धन्यवाद!"
- spree_admin_unit_value: युनिट मूल्य
- spree_admin_unit_description: युनिटचे वर्णन
- spree_admin_variant_unit: व्हेरिएंट युनिट
- spree_admin_variant_unit_scale: व्हेरिएंट युनिट स्केल
spree_admin_supplier: पुरवठादार
- spree_admin_product_category: उत्पादन वर्ग
- spree_admin_variant_unit_name: व्हेरिएंट युनिट नाव
unit_name: "युनिट नाव"
change_package: "पॅकेज बदला"
spree_admin_single_enterprise_hint: "सूचना: लोकांना तुम्हाला शोधण्याची अनुमती देण्यासाठी, या अंतर्गत तुमची दृश्यमानता चालू करा"
diff --git a/config/locales/nb.yml b/config/locales/nb.yml
index e21f2fe797..4382966b58 100644
--- a/config/locales/nb.yml
+++ b/config/locales/nb.yml
@@ -767,6 +767,8 @@ nb:
index:
update: Oppdater
new: Ny
+ selected:
+ other: "%{count} valgt"
import: Import
import:
imported_products: "Importerte produkter:"
@@ -2908,20 +2910,9 @@ nb:
spree_admin_enterprises_fees: "Bedriftsavgift"
spree_admin_enterprises_none_create_a_new_enterprise: "OPPRETT NY BEDRIFT"
spree_admin_enterprises_none_text: "Du har ingen bedrifter ennå"
- spree_admin_enterprises_tabs_hubs: "HUBS"
spree_admin_enterprises_producers_manage_products: "ADMINISTRER PRODUKTER"
spree_admin_enterprises_create_new_product: "OPPRETT NYTT PRODUKT"
- spree_admin_single_enterprise_alert_mail_confirmation: "Vennligst bekreft epostadressen for"
- spree_admin_single_enterprise_alert_mail_sent: "Vi har sendt epost til"
- spree_admin_overview_action_required: "Handling Nødvendig"
- spree_admin_overview_check_your_inbox: "Vennligst sjekk din innboks for nærmere instruksjoner. Takk!"
- spree_admin_unit_value: Enhetsverdi
- spree_admin_unit_description: Enhetsbeskrivelse
- spree_admin_variant_unit: Variant enhet
- spree_admin_variant_unit_scale: Variant enhetsskala
spree_admin_supplier: Leverandør
- spree_admin_product_category: Produktkategori
- spree_admin_variant_unit_name: Variant enhetsnavn
unit_name: "Enhetsnavn"
change_package: "Endre Pakke"
spree_admin_single_enterprise_hint: "Hint: For å hjelpe folk til å finne deg, skru på din synlighet under"
diff --git a/config/locales/nl_BE.yml b/config/locales/nl_BE.yml
index d1bf2bb015..cb559caeea 100644
--- a/config/locales/nl_BE.yml
+++ b/config/locales/nl_BE.yml
@@ -2278,20 +2278,9 @@ nl_BE:
spree_admin_enterprises_fees: "Ondernemingsvergoedingen"
spree_admin_enterprises_none_create_a_new_enterprise: "MAAK EEN NIEUW BEDRIJF"
spree_admin_enterprises_none_text: "Je hebt nog geen ondernemingen"
- spree_admin_enterprises_tabs_hubs: "HUBS"
spree_admin_enterprises_producers_manage_products: "BEHEER PRODUCTEN"
spree_admin_enterprises_create_new_product: "MAAK EEN NIEUW PRODUCT"
- spree_admin_single_enterprise_alert_mail_confirmation: "Gelieve het e-mailadres te bevestigen voor"
- spree_admin_single_enterprise_alert_mail_sent: "We hebben je een E-mail verzonden"
- spree_admin_overview_action_required: "Actie Vereist"
- spree_admin_overview_check_your_inbox: "Controleer alsjeblieft je inbox voor verdere instructies. Dankje!"
- spree_admin_unit_value: Eenheid Waarde
- spree_admin_unit_description: Eenheid Beschrijving
- spree_admin_variant_unit: Variant eenheid
- spree_admin_variant_unit_scale: ' Eénheidschaal (g of L)'
spree_admin_supplier: Leverancier
- spree_admin_product_category: Product categorie
- spree_admin_variant_unit_name: Naam van het stuk (indien per stuk verkocht)
unit_name: "Unit naam"
change_package: "Wijzig je Packet"
spree_admin_single_enterprise_hint: "Hint: Om het voor mensen mogelijk te maken je te vinden, zet je zichtbaarheid aan"
diff --git a/config/locales/pa.yml b/config/locales/pa.yml
index 0164346bdc..073f91625d 100644
--- a/config/locales/pa.yml
+++ b/config/locales/pa.yml
@@ -688,6 +688,8 @@ pa:
index:
update: ਅੱਪਡੇਟ
new: ਨਵਾਂ
+ selected:
+ other: "%{count} ਚੁਣੇ ਗਏ"
import: ਇਮਪੋਰਟ
enterprise_fees:
index:
@@ -2723,20 +2725,9 @@ pa:
spree_admin_enterprises_fees: "ਐਂਟਰਪ੍ਰਾਈਜ਼ ਫ਼ੀਸ"
spree_admin_enterprises_none_create_a_new_enterprise: "ਇੱਕ ਨਵਾਂ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਬਣਾਓ"
spree_admin_enterprises_none_text: "ਤੁਹਾਡੇ ਕੋਲ ਅਜੇ ਕੋਈ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਨਹੀਂ ਹੈ"
- spree_admin_enterprises_tabs_hubs: "ਹੱਬ"
spree_admin_enterprises_producers_manage_products: "ਉਤਪਾਦਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ"
spree_admin_enterprises_create_new_product: "ਇੱਕ ਨਵਾਂ ਉਤਪਾਦ ਬਣਾਓ"
- spree_admin_single_enterprise_alert_mail_confirmation: "ਕਿਰਪਾ ਕਰਕੇ ਈਮੇਲ ਪਤੇ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ"
- spree_admin_single_enterprise_alert_mail_sent: "ਅਸੀਂ ਇਸ ਨੂੰ ਇੱਕ ਈਮੇਲ ਭੇਜੀ ਹੈ"
- spree_admin_overview_action_required: "ਕਾਰਵਾਈ ਲੋੜੀਂਦੀ ਹੈ"
- spree_admin_overview_check_your_inbox: "ਕਿਰਪਾ ਕਰਕੇ ਹੋਰ ਹਦਾਇਤਾਂ ਲਈ ਆਪਣੇ ਇਨਬਾਕਸ ਦੀ ਜਾਂਚ ਕਰੋ। ਧੰਨਵਾਦ!"
- spree_admin_unit_value: ਯੂਨਿਟ ਵੈਲਯੂ
- spree_admin_unit_description: ਯੂਨਿਟ ਵਰਣਨ
- spree_admin_variant_unit: ਵੇਰੀਐਂਟ ਯੂਨਿਟ
- spree_admin_variant_unit_scale: ਵੇਰੀਐਂਟ ਯੂਨਿਟ ਸਕੇਲ
spree_admin_supplier: ਸਪਲਾਇਰ
- spree_admin_product_category: ਉਤਪਾਦ ਸ਼੍ਰੇਣੀ
- spree_admin_variant_unit_name: ਵੇਰੀਐਂਟ ਯੂਨਿਟ ਦਾ ਨਾਮ
unit_name: "ਯੂਨਿਟ ਦਾ ਨਾਮ"
change_package: "ਪੈਕੇਜ ਬਦਲੋ"
spree_admin_single_enterprise_hint: "ਸੰਕੇਤ: ਲੋਕਾਂ ਨੂੰ ਤੁਹਾਨੂੰ ਲੱਭਣ ਦੀ ਇਜਾਜ਼ਤ ਦੇਣ ਲਈ, ਇਸ ਦੇ ਹੇਠਾਂ ਆਪਣੀ ਦਿੱਖ ਨੂੰ ਚਾਲੂ ਕਰੋ"
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index 414c686101..3a18b23404 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -2157,20 +2157,9 @@ pl:
spree_admin_enterprises_fees: "Opłaty dla podmiotów"
spree_admin_enterprises_none_create_a_new_enterprise: "UTWÓRZ NOWY PODMIOT"
spree_admin_enterprises_none_text: "Nie masz jeszcze żadnych podmiotów"
- spree_admin_enterprises_tabs_hubs: "Huby"
spree_admin_enterprises_producers_manage_products: "ZARZĄDZAJ PRODUKTAMI"
spree_admin_enterprises_create_new_product: "UTWÓRZ NOWY PRODUKT"
- spree_admin_single_enterprise_alert_mail_confirmation: "Potwierdź adres e-mail dla"
- spree_admin_single_enterprise_alert_mail_sent: "Wysłaliśmy e-mail do"
- spree_admin_overview_action_required: "Konieczne działania"
- spree_admin_overview_check_your_inbox: "Dalsze instrukcje znajdziesz w swojej skrzynce odbiorczej. Dzięki!"
- spree_admin_unit_value: Wartość jednostki
- spree_admin_unit_description: Opis jednostki
- spree_admin_variant_unit: Jednostka wariantowa
- spree_admin_variant_unit_scale: Wariantowa skala jednostkowa
spree_admin_supplier: Dostawca
- spree_admin_product_category: Kategoria produktu
- spree_admin_variant_unit_name: Nazwa jednostki wariantu
unit_name: "Nazwa jednostki"
change_package: "Zmień pakiet"
spree_admin_single_enterprise_hint: "Wskazówka: aby inni mogli Cię znaleźć, włącz widoczność poniżej"
diff --git a/config/locales/pt.yml b/config/locales/pt.yml
index 44810b0a3c..42b5c0da6d 100644
--- a/config/locales/pt.yml
+++ b/config/locales/pt.yml
@@ -2283,20 +2283,9 @@ pt:
spree_admin_enterprises_fees: "Taxas da Organização"
spree_admin_enterprises_none_create_a_new_enterprise: "CRIAR UMA NOVA ORGANIZAÇÃO"
spree_admin_enterprises_none_text: "Ainda não tem nenhuma organização"
- spree_admin_enterprises_tabs_hubs: "CENTRAIS"
spree_admin_enterprises_producers_manage_products: "GERIR PRODUTOS"
spree_admin_enterprises_create_new_product: "CRIAR UM NOVO PRODUTO"
- spree_admin_single_enterprise_alert_mail_confirmation: "Por favor confirme o endereço de email para"
- spree_admin_single_enterprise_alert_mail_sent: "Enviamos um email para"
- spree_admin_overview_action_required: "Ação Requerida"
- spree_admin_overview_check_your_inbox: "Por favor, verifique a sua caixa de correio para mais instruções. Obrigada!"
- spree_admin_unit_value: Valor Unitário
- spree_admin_unit_description: Descrição Unitária
- spree_admin_variant_unit: Unidade da Variante
- spree_admin_variant_unit_scale: Escala de unidade variante
spree_admin_supplier: Fornecedor
- spree_admin_product_category: Categoria de Produto
- spree_admin_variant_unit_name: Nome da Unidade da Variante
unit_name: "Nome da Unidade"
change_package: "Modificar Embalagem"
spree_admin_single_enterprise_hint: "Dica: Para permitir que as pessoas te encontrem, ative sua visibilidade em"
diff --git a/config/locales/pt_BR.yml b/config/locales/pt_BR.yml
index 042f79b2aa..09a50c83f6 100644
--- a/config/locales/pt_BR.yml
+++ b/config/locales/pt_BR.yml
@@ -2388,20 +2388,9 @@ pt_BR:
spree_admin_enterprises_fees: "Taxas da iniciativa"
spree_admin_enterprises_none_create_a_new_enterprise: "CRIAR NOVA INICIATIVA"
spree_admin_enterprises_none_text: "Você ainda não possui nenhuma iniciativa"
- spree_admin_enterprises_tabs_hubs: "CENTRAIS"
spree_admin_enterprises_producers_manage_products: "GERENCIAR PRODUTOS"
spree_admin_enterprises_create_new_product: "CRIAR UM NOVO PRODUTO"
- spree_admin_single_enterprise_alert_mail_confirmation: "Por favor confirme o endereço de e-mail para"
- spree_admin_single_enterprise_alert_mail_sent: "Enviamos um e-mail para"
- spree_admin_overview_action_required: "Ação requerida"
- spree_admin_overview_check_your_inbox: "Por favor verifique sua caixa de entrada para maiores informações. Obrigado!"
- spree_admin_unit_value: Valor unitário
- spree_admin_unit_description: Descrição da unidade
- spree_admin_variant_unit: Unidade variante
- spree_admin_variant_unit_scale: Escala da unidade variante
spree_admin_supplier: Fornecedor
- spree_admin_product_category: Categoria de Produto
- spree_admin_variant_unit_name: Nome da unidade variante
unit_name: "Nome da unidade"
change_package: "Alterar tipo de perfil"
spree_admin_single_enterprise_hint: "Dica: Para permitir que as pessoas te encontrem, ative sua visibilidade em"
diff --git a/config/locales/ru.yml b/config/locales/ru.yml
index 3767ac424b..3c93a67783 100644
--- a/config/locales/ru.yml
+++ b/config/locales/ru.yml
@@ -707,6 +707,8 @@ ru:
index:
update: Обновить
new: Новый
+ selected:
+ other: "выбрано %{count}"
import: Импорт
import:
imported_products: "Внесенные товары:"
@@ -2824,20 +2826,9 @@ ru:
spree_admin_enterprises_fees: "Сборы Предприятия"
spree_admin_enterprises_none_create_a_new_enterprise: "СОЗДАТЬ НОВОЕ ПРЕДПРИЯТИЕ"
spree_admin_enterprises_none_text: "У Вас еще нет Предприятий"
- spree_admin_enterprises_tabs_hubs: "ЦЕНТРЫ"
spree_admin_enterprises_producers_manage_products: "УПРАВЛЯТЬ ТОВАРАМИ"
spree_admin_enterprises_create_new_product: "СОЗДАТЬ НОВЫЙ ТОВАР"
- spree_admin_single_enterprise_alert_mail_confirmation: "Пожалуйста, подтвердите адрес электронной почты для"
- spree_admin_single_enterprise_alert_mail_sent: "Мы отправили письмо на"
- spree_admin_overview_action_required: "Требуется действие"
- spree_admin_overview_check_your_inbox: "Пожалуйста, проверьте свой почтовый ящик для дальнейших инструкций. Спасибо!"
- spree_admin_unit_value: Значение Единицы
- spree_admin_unit_description: Описание Единицы
- spree_admin_variant_unit: Вариант единицы
- spree_admin_variant_unit_scale: Вариант шкалы единиц
spree_admin_supplier: Поставщик
- spree_admin_product_category: Категория Продукта
- spree_admin_variant_unit_name: Наименование варианта
unit_name: "Название элемента"
change_package: "Сменить Пакет"
spree_admin_single_enterprise_hint: "Подсказка: чтобы люди могли вас найти, включите видимость в"
diff --git a/config/locales/sr.yml b/config/locales/sr.yml
index 07f2fd67d5..1a54344d53 100644
--- a/config/locales/sr.yml
+++ b/config/locales/sr.yml
@@ -2903,20 +2903,9 @@ sr:
spree_admin_enterprises_fees: "Ентерприсе Феес"
spree_admin_enterprises_none_create_a_new_enterprise: "НАПРАВИТЕ НОВО ПРЕДУЗЕЋЕ"
spree_admin_enterprises_none_text: "Још увек немате ниједно предузеће"
- spree_admin_enterprises_tabs_hubs: "ХУБС"
spree_admin_enterprises_producers_manage_products: "УПРАВЉАЈТЕ ПРОИЗВОДИМА"
spree_admin_enterprises_create_new_product: "НАПРАВИТЕ НОВИ ПРОИЗВОД"
- spree_admin_single_enterprise_alert_mail_confirmation: "Молимо потврдите адресу е-поште за"
- spree_admin_single_enterprise_alert_mail_sent: "Послали смо е-пошту на"
- spree_admin_overview_action_required: "Мере потребне"
- spree_admin_overview_check_your_inbox: "Проверите своје пријемно сандуче за даља упутства. Хвала!"
- spree_admin_unit_value: Јединична вредност
- spree_admin_unit_description: Опис јединице
- spree_admin_variant_unit: Варијанта јединица
- spree_admin_variant_unit_scale: Варијанта јединица скале
spree_admin_supplier: Добављач
- spree_admin_product_category: Производ Категорија
- spree_admin_variant_unit_name: Назив јединице варијанте
unit_name: "Назив јединице"
change_package: "Промени пакет"
spree_admin_single_enterprise_hint: "Савет: Да бисте омогућили људима да вас пронађу, укључите своју видљивост испод"
diff --git a/config/locales/sv.yml b/config/locales/sv.yml
index 3168aa64ce..c718847ce7 100644
--- a/config/locales/sv.yml
+++ b/config/locales/sv.yml
@@ -1585,19 +1585,9 @@ sv:
spree_admin_enterprises_fees: "Företagsavgifter"
spree_admin_enterprises_none_create_a_new_enterprise: "SKAPA ETT NYTT FÖRETAG"
spree_admin_enterprises_none_text: "Du har inget företag ännu"
- spree_admin_enterprises_tabs_hubs: "MATSTÄLLEN"
spree_admin_enterprises_producers_manage_products: "HANTERA PRODUKTER"
spree_admin_enterprises_create_new_product: "SKAPA EN NY PRODUKT"
- spree_admin_single_enterprise_alert_mail_confirmation: "Var vänlig och fastställ e-postadressen för"
- spree_admin_single_enterprise_alert_mail_sent: "Vi har sänt e-post till "
- spree_admin_overview_action_required: "Ett ställningstagande behövs"
- spree_admin_overview_check_your_inbox: "Var vänlig kontrollera din inkorg för ytterligare instruktioner. Tack!"
- spree_admin_unit_value: Enhetspris
- spree_admin_unit_description: Enhetsbeskrivning
- spree_admin_variant_unit: Variant enhet
- spree_admin_variant_unit_scale: Variant enhetsskala
spree_admin_supplier: Leverantör
- spree_admin_variant_unit_name: 'Variant enhetsnamn '
change_package: "Ändra förpackning"
spree_admin_single_enterprise_hint: "Tips: För att folk skall hitta dig lättare, slå på din reklam under"
spree_admin_eg_pickup_from_school: "t.ex. \"Upphämtning från grundskolan\""
diff --git a/config/locales/tr.yml b/config/locales/tr.yml
index 2ae9e9735d..4610211e4f 100644
--- a/config/locales/tr.yml
+++ b/config/locales/tr.yml
@@ -2400,20 +2400,9 @@ tr:
spree_admin_enterprises_fees: "İşletme Ücretleri"
spree_admin_enterprises_none_create_a_new_enterprise: "YENİ BİR İŞLETME OLUŞTUR"
spree_admin_enterprises_none_text: "Henüz hiç işletmeniz yok"
- spree_admin_enterprises_tabs_hubs: "PAZARLAR"
spree_admin_enterprises_producers_manage_products: "ÜRÜNLERİ YÖNET"
spree_admin_enterprises_create_new_product: "YENİ BİR ÜRÜN OLUŞTUR"
- spree_admin_single_enterprise_alert_mail_confirmation: "Lütfen e-posta adresini onaylayın:"
- spree_admin_single_enterprise_alert_mail_sent: "Bu adrese bir e-posta gönderdik:"
- spree_admin_overview_action_required: "Eylem Gerekli"
- spree_admin_overview_check_your_inbox: "Diğer talimatlar için lütfen gelen kutunuzu kontrol edin. Teşekkürler!"
- spree_admin_unit_value: Birim değeri
- spree_admin_unit_description: Birim Tanımı
- spree_admin_variant_unit: Çeşit Birimi
- spree_admin_variant_unit_scale: Çeşit Ölçü Birimi
spree_admin_supplier: Tedarikçi
- spree_admin_product_category: Ürün Kategorisi
- spree_admin_variant_unit_name: Çeşit Birimi Adı
unit_name: "Birim adı"
change_package: "HESAP TÜRÜNÜ DEĞİŞTİR"
spree_admin_single_enterprise_hint: "İpucu: İnsanların sizi bulmasına izin vermek için 'Görünür' olmayı ayarlamayı unutmayın:"
diff --git a/config/locales/uk.yml b/config/locales/uk.yml
index 879f097b1f..26268b59b3 100644
--- a/config/locales/uk.yml
+++ b/config/locales/uk.yml
@@ -2562,20 +2562,9 @@ uk:
spree_admin_enterprises_fees: "Комісія підприємства"
spree_admin_enterprises_none_create_a_new_enterprise: "СТВОРИТИ НОВЕ ПІДПРИЄМСТВО"
spree_admin_enterprises_none_text: "У вас ще немає підприємств"
- spree_admin_enterprises_tabs_hubs: "ХАБИ"
spree_admin_enterprises_producers_manage_products: "КЕРУВАННЯ ПРОДУКТАМИ"
spree_admin_enterprises_create_new_product: "СТВОРИТИ НОВИЙ ПРОДУКТ"
- spree_admin_single_enterprise_alert_mail_confirmation: "Будь ласка, підтвердіть електронну адресу для"
- spree_admin_single_enterprise_alert_mail_sent: "Ми надіслали електронний лист на адресу"
- spree_admin_overview_action_required: "Потрібна дія"
- spree_admin_overview_check_your_inbox: "Щоб отримати подальші інструкції, перевірте свою поштову скриньку. Спасибі!"
- spree_admin_unit_value: Вартість одиниці
- spree_admin_unit_description: Опис одиниці
- spree_admin_variant_unit: Варіант одиниці
- spree_admin_variant_unit_scale: Варіант виміру одиниці
spree_admin_supplier: Постачальник
- spree_admin_product_category: Категорія товару
- spree_admin_variant_unit_name: Назва варіанту одиниці
unit_name: "Назва одиниці"
change_package: "Змінити Пакування"
spree_admin_single_enterprise_hint: "Підказка: щоб люди могли вас знайти, увімкніть свою видимість під"
diff --git a/config/sidekiq.yml b/config/sidekiq.yml
index eab2b061db..bcd4e31909 100644
--- a/config/sidekiq.yml
+++ b/config/sidekiq.yml
@@ -15,7 +15,7 @@
every: "5m"
SubscriptionConfirmJob:
every: "5m"
- OrderCycleOpenedJob:
+ TriggerOrderCyclesToOpenJob:
every: "5m"
OrderCycleClosingJob:
every: "5m"
diff --git a/engines/catalog/config/routes.rb b/engines/catalog/config/routes.rb
index 51d03b72a4..55680d5541 100644
--- a/engines/catalog/config/routes.rb
+++ b/engines/catalog/config/routes.rb
@@ -1,4 +1,4 @@
# frozen_string_literal: true
-Openfoodnetwork::Application.routes.append do
-end
+# Openfoodnetwork::Application.routes.append do
+# end
diff --git a/engines/dfc_provider/app/services/authorization_control.rb b/engines/dfc_provider/app/services/authorization_control.rb
index 879eab7980..a68db2dc6e 100644
--- a/engines/dfc_provider/app/services/authorization_control.rb
+++ b/engines/dfc_provider/app/services/authorization_control.rb
@@ -47,7 +47,7 @@ class AuthorizationControl
end
def access_token
- @request.headers['Authorization'].to_s.split(' ').last
+ @request.headers['Authorization'].to_s.split.last
end
def ofn_api_token
diff --git a/engines/dfc_provider/app/services/dfc_catalog.rb b/engines/dfc_provider/app/services/dfc_catalog.rb
index 431454bd54..59d2e6bc0b 100644
--- a/engines/dfc_provider/app/services/dfc_catalog.rb
+++ b/engines/dfc_provider/app/services/dfc_catalog.rb
@@ -4,9 +4,12 @@ class DfcCatalog
def self.load(user, catalog_url)
api = DfcRequest.new(user)
catalog_json = api.call(catalog_url)
- graph = DfcIo.import(catalog_json)
- new(graph)
+ from_json(catalog_json)
+ end
+
+ def self.from_json(catalog_json)
+ new(DfcIo.import(catalog_json))
end
def initialize(graph)
diff --git a/engines/dfc_provider/app/services/image_builder.rb b/engines/dfc_provider/app/services/image_builder.rb
index df6141ce07..06ab056e0c 100644
--- a/engines/dfc_provider/app/services/image_builder.rb
+++ b/engines/dfc_provider/app/services/image_builder.rb
@@ -4,13 +4,27 @@ require "private_address_check"
require "private_address_check/tcpsocket_ext"
class ImageBuilder < DfcBuilder
+ def self.apply(image_url, spree_product)
+ return if image_url.blank?
+
+ return if image_url == current_image_url(spree_product)
+
+ image = ImageBuilder.import(image_url)
+ spree_product.image = image if image
+ end
+
+ def self.current_image_url(spree_product)
+ spree_product.image&.attachment&.blob&.custom_metadata&.fetch("origin", nil)
+ end
+
def self.import(image_link)
url = URI.parse(image_link)
filename = File.basename(image_link)
+ metadata = { custom: { origin: image_link } }
Spree::Image.new.tap do |image|
PrivateAddressCheck.only_public_connections do
- image.attachment.attach(io: url.open, filename:)
+ image.attachment.attach(io: url.open, filename:, metadata:)
end
end
rescue StandardError
diff --git a/engines/dfc_provider/app/services/product_group_builder.rb b/engines/dfc_provider/app/services/product_group_builder.rb
index c8c8e6f62d..cfaa58dd4a 100644
--- a/engines/dfc_provider/app/services/product_group_builder.rb
+++ b/engines/dfc_provider/app/services/product_group_builder.rb
@@ -17,7 +17,11 @@ class ProductGroupBuilder < DfcBuilder
description = supplied_product.isVariantOf.first.try(:description) ||
supplied_product.description
name = supplied_product.isVariantOf.first.try(:name)
+ image_url = supplied_product.isVariantOf.first.try(:image) ||
+ supplied_product.image
+
spree_product.description = description if description.present?
spree_product.name = name if name.present?
+ ImageBuilder.apply(image_url, spree_product)
end
end
diff --git a/engines/dfc_provider/spec/services/image_builder_spec.rb b/engines/dfc_provider/spec/services/image_builder_spec.rb
new file mode 100644
index 0000000000..e1e353edfe
--- /dev/null
+++ b/engines/dfc_provider/spec/services/image_builder_spec.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+require_relative "../spec_helper"
+
+RSpec.describe ImageBuilder do
+ include FileHelper
+
+ let(:url) { "https://example.net/image.png" }
+
+ before do
+ stub_request(:get, url).to_return(status: 200, body: black_logo_path.read)
+ end
+
+ describe ".import" do
+ it "downloads an image" do
+ image = ImageBuilder.import(url)
+ expect(image).to be_a Spree::Image
+ expect(image.attachment.blob.custom_metadata["origin"]).to eq url
+ end
+ end
+end
diff --git a/engines/dfc_provider/spec/services/supplied_product_importer_spec.rb b/engines/dfc_provider/spec/services/supplied_product_importer_spec.rb
index d344f1653b..b407a4c132 100644
--- a/engines/dfc_provider/spec/services/supplied_product_importer_spec.rb
+++ b/engines/dfc_provider/spec/services/supplied_product_importer_spec.rb
@@ -227,6 +227,39 @@ RSpec.describe SuppliedProductImporter do
expect(imported_product.description).to eq "Choose a variety."
end
+ it "updates images when their URL changes" do
+ stub_request(:get, "https://cd.net/tomato.png?v=1").to_return(
+ status: 200, body: black_logo_path.read,
+ )
+ stub_request(:get, "https://cd.net/tomato.png?v=2").to_return(
+ status: 200, body: white_logo_path.read,
+ )
+
+ tomatoes = DfcProvider::SuppliedProduct.new(
+ "some-id", name: "Tomatoes",
+ image: "https://cd.net/tomato.png?v=1",
+ )
+ supplied_product.isVariantOf << tomatoes
+
+ imported_product = importer.import_variant(supplied_product, supplier).product
+ expect(imported_product.image.attachment.filename).to eq "tomato.png?v=1"
+
+ expect {
+ importer.import_variant(supplied_product, supplier).product
+ imported_product.reload
+ }
+ .not_to change { imported_product.image }
+
+ expect {
+ tomatoes.image = "https://cd.net/tomato.png?v=2"
+ importer.import_variant(supplied_product, supplier).product
+ imported_product.reload
+ }
+ .to change { imported_product.image }
+
+ expect(imported_product.image.attachment.filename).to eq "tomato.png?v=2"
+ end
+
context "when spree_product_uri doesn't match the server host" do
let(:supplied_product) do
DfcProvider::SuppliedProduct.new(
diff --git a/engines/order_management/app/services/order_management/subscriptions/validator.rb b/engines/order_management/app/services/order_management/subscriptions/validator.rb
index 4808d7353c..1dc04bfd5d 100644
--- a/engines/order_management/app/services/order_management/subscriptions/validator.rb
+++ b/engines/order_management/app/services/order_management/subscriptions/validator.rb
@@ -128,7 +128,7 @@ module OrderManagement
end
def build_msg_from(key, msg)
- return msg[1..-1] if msg.starts_with?("^")
+ return msg[1..] if msg.starts_with?("^")
errors.full_message(key, msg)
end
diff --git a/lib/open_food_network/feature_toggle.rb b/lib/open_food_network/feature_toggle.rb
index bac5fa61db..13c07573b2 100644
--- a/lib/open_food_network/feature_toggle.rb
+++ b/lib/open_food_network/feature_toggle.rb
@@ -58,6 +58,9 @@ module OpenFoodNetwork
Activated for a user.
The user (INRAE researcher) has access to anonymised sales.
DESC
+ "open_in_same_tab" => <<~DESC,
+ Open the admin dashboard in the same tab instead of a new tab.
+ DESC
}.merge(conditional_features).freeze;
# Features you would like to be enabled to start with.
diff --git a/lib/reporting/reports/bulk_coop/customer_payments.rb b/lib/reporting/reports/bulk_coop/customer_payments.rb
index 97752b3feb..4e4da4ce12 100644
--- a/lib/reporting/reports/bulk_coop/customer_payments.rb
+++ b/lib/reporting/reports/bulk_coop/customer_payments.rb
@@ -21,15 +21,15 @@ module Reporting
private
def customer_payments_total_cost(line_items)
- unique_orders(line_items).sum(&:total)
+ unique_orders(line_items).map(&:total).sum(&:to_f)
end
def customer_payments_amount_owed(line_items)
- unique_orders(line_items).sum(&:new_outstanding_balance)
+ unique_orders(line_items).map(&:new_outstanding_balance).sum(&:to_f)
end
def customer_payments_amount_paid(line_items)
- unique_orders(line_items).sum(&:payment_total)
+ unique_orders(line_items).map(&:payment_total).sum(&:to_f)
end
def unique_orders(line_items)
diff --git a/lib/tasks/data.rake b/lib/tasks/data.rake
index bb26f748b1..8f8a2b0183 100644
--- a/lib/tasks/data.rake
+++ b/lib/tasks/data.rake
@@ -78,11 +78,11 @@ namespace :ofn do
# Ask how many months back we want to search for
puts "This task will search order cycle edited within (n) months of today's date.\n" \
"Please enter a value for (n), or hit ENTER to use the default of three (3) months."
- input = check_default(STDIN.gets.chomp)
+ input = check_default($stdin.gets.chomp)
while !is_integer?(input)
puts "'#{input}' is not an integer. Please enter an integer."
- input = check_default(STDIN.gets.chomp)
+ input = check_default($stdin.gets.chomp)
end
Integer(input)
diff --git a/lib/tasks/missing_payments.rake b/lib/tasks/missing_payments.rake
index c822b62ee4..9f0982f82d 100644
--- a/lib/tasks/missing_payments.rake
+++ b/lib/tasks/missing_payments.rake
@@ -44,7 +44,7 @@ namespace :ofn do
details = Psych.load(entry.details)
out << row(details, details.params)
rescue StandardError
- Logger.new(STDERR).warn(entry)
+ Logger.new($stderr).warn(entry)
end
def headers
diff --git a/lib/tasks/sample_data/logging.rb b/lib/tasks/sample_data/logging.rb
index ad85624092..9204b664be 100644
--- a/lib/tasks/sample_data/logging.rb
+++ b/lib/tasks/sample_data/logging.rb
@@ -4,7 +4,7 @@ module Logging
private
def log(message)
- @logger ||= ActiveSupport::TaggedLogging.new(Logger.new(STDOUT))
+ @logger ||= ActiveSupport::TaggedLogging.new(Logger.new($stdout))
@logger.tagged("ofn:sample_data") { @logger.info(message) }
end
end
diff --git a/lib/tasks/subscriptions/debug.rake b/lib/tasks/subscriptions/debug.rake
index 750bfb4d73..bd641ce11f 100644
--- a/lib/tasks/subscriptions/debug.rake
+++ b/lib/tasks/subscriptions/debug.rake
@@ -54,7 +54,7 @@ namespace :ofn do
def request_order_cycle_id
puts "Please input Order Cycle ID to debug"
- input = STDIN.gets.chomp
+ input = $stdin.gets.chomp
exit if input.blank? || !Integer(input)
Integer(input)
end
diff --git a/lib/tasks/subscriptions/test.rake b/lib/tasks/subscriptions/test.rake
index ff6317b841..c4349f1b7b 100644
--- a/lib/tasks/subscriptions/test.rake
+++ b/lib/tasks/subscriptions/test.rake
@@ -62,7 +62,7 @@ namespace :ofn do
def request_order_cycle_id
puts "Please input Order Cycle ID to reset"
- input = STDIN.gets.chomp
+ input = $stdin.gets.chomp
exit if input.blank? || !Integer(input)
Integer(input)
end
diff --git a/package.json b/package.json
index 3f1465fb19..a8a7bca22d 100644
--- a/package.json
+++ b/package.json
@@ -32,7 +32,7 @@
"stimulus-flatpickr": "^1.4.0",
"stimulus_reflex": "3.5.3",
"tom-select": "^2.4.3",
- "trix": "^2.1.12",
+ "trix": "^2.1.13",
"turbo_power": "^0.7.0",
"webpack": "~4"
},
diff --git a/spec/base_spec_helper.rb b/spec/base_spec_helper.rb
index f8c30b3f07..b44827a64e 100644
--- a/spec/base_spec_helper.rb
+++ b/spec/base_spec_helper.rb
@@ -150,7 +150,8 @@ RSpec.configure do |config|
# Reset locale for all specs.
config.around(:each) do |example|
- I18n.with_locale(:en_AU) { example.run }
+ locale = ENV.fetch('LOCALE', 'en_TST')
+ I18n.with_locale(locale) { example.run }
end
# Reset all feature toggles to prevent leaking.
@@ -264,6 +265,7 @@ RSpec.configure do |config|
config.include OpenFoodNetwork::PerformanceHelper
config.include ActiveJob::TestHelper
config.include ReportsHelper
+ config.include MailersHelper, type: :mailer
config.include TomSelectHelper, type: :system
config.include ViewComponent::TestHelpers, type: :component
diff --git a/spec/components/distributor_title_component_spec.rb b/spec/components/distributor_title_component_spec.rb
index c88b76eb67..703a359ecf 100644
--- a/spec/components/distributor_title_component_spec.rb
+++ b/spec/components/distributor_title_component_spec.rb
@@ -2,9 +2,9 @@
require "spec_helper"
-RSpec.describe "DistributorTitle tests", type: :component do
+RSpec.describe DistributorTitleComponent, type: :component do
it "displays distributor title with its name" do
- render_inline(DistributorTitleComponent.new(name: "Freddy's Farm Shop")) {}
+ render_inline(described_class.new(name: "Freddy's Farm Shop"))
expect(page).to have_selector "h3", text: "Freddy's Farm Shop"
end
end
diff --git a/spec/components/example_component_spec.rb b/spec/components/example_component_spec.rb
index 540d7a4364..cdb101581c 100644
--- a/spec/components/example_component_spec.rb
+++ b/spec/components/example_component_spec.rb
@@ -2,9 +2,9 @@
require "spec_helper"
-RSpec.describe "ExampleComponent tests", type: :component do
+RSpec.describe ExampleComponent, type: :component do
it "displays the h1 with the given parameter" do
- render_inline(ExampleComponent.new(title: "Hello")) {}
+ render_inline(described_class.new(title: "Hello"))
expect(page).to have_selector "h1", text: "Hello"
end
end
diff --git a/spec/controllers/admin/subscription_line_items_controller_spec.rb b/spec/controllers/admin/subscription_line_items_controller_spec.rb
index bf637d92b4..5926abf23d 100644
--- a/spec/controllers/admin/subscription_line_items_controller_spec.rb
+++ b/spec/controllers/admin/subscription_line_items_controller_spec.rb
@@ -55,7 +55,9 @@ RSpec.describe Admin::SubscriptionLineItemsController, type: :controller do
before { params.merge!(shop_id: shop.id) }
context "but the shop doesn't have permission to sell product in question" do
- let!(:outgoing_exchange) {}
+ let!(:outgoing_exchange) {
+ # missing exchange should trigger an error
+ }
it "returns an error" do
spree_post :build, params
diff --git a/spec/controllers/api/v0/products_controller_spec.rb b/spec/controllers/api/v0/products_controller_spec.rb
index 9e961e9ae0..c2954ddc6a 100644
--- a/spec/controllers/api/v0/products_controller_spec.rb
+++ b/spec/controllers/api/v0/products_controller_spec.rb
@@ -189,7 +189,7 @@ RSpec.describe Api::V0::ProductsController, type: :controller do
# stock info - clone is set to zero
it '(does not) clone the stock info of the product' do
spree_post :clone, product_id: product.id, format: :json
- expect(json_response['on_hand']).to eq(0)
+ expect(json_response.dig("variants", 0, "on_hand")).to eq(0)
end
# variants: only the master variant of the product is cloned
diff --git a/spec/controllers/api/v0/shipments_controller_spec.rb b/spec/controllers/api/v0/shipments_controller_spec.rb
index 1c2196b36b..56b2404a1e 100644
--- a/spec/controllers/api/v0/shipments_controller_spec.rb
+++ b/spec/controllers/api/v0/shipments_controller_spec.rb
@@ -369,7 +369,7 @@ RSpec.describe Api::V0::ShipmentsController, type: :controller do
before do
allow(Spree::Order).to receive(:find_by!) { fee_order }
- allow(controller).to receive(:refuse_changing_cancelled_orders) {}
+ allow(controller).to receive(:refuse_changing_cancelled_orders)
allow(fee_order).to receive(:contents) { contents }
allow(contents).to receive_messages(add: {}, remove: {})
allow(fee_order).to receive_message_chain(:shipments, :find_by!) { fee_order_shipment }
diff --git a/spec/controllers/checkout_controller_spec.rb b/spec/controllers/checkout_controller_spec.rb
index acef705a0c..4adbffa9df 100644
--- a/spec/controllers/checkout_controller_spec.rb
+++ b/spec/controllers/checkout_controller_spec.rb
@@ -328,6 +328,52 @@ RSpec.describe CheckoutController, type: :controller do
expect_cable_ready_redirect(response)
end
end
+
+ context "with existing invalid payments" do
+ let(:invalid_payments) {
+ [
+ create(:payment, state: :failed),
+ create(:payment, state: :void),
+ ]
+ }
+
+ before do
+ order.payments = invalid_payments
+ end
+
+ it "deletes invalid payments" do
+ expect{
+ put(:update, params:)
+ }.to change { order.payments.to_a }.from(invalid_payments)
+ end
+ end
+
+ context "with different payment method previously chosen" do
+ let(:other_payment_method) { build(:payment_method, distributors: [distributor]) }
+ let(:other_payment) {
+ build(:payment, amount: order.total, payment_method: other_payment_method)
+ }
+
+ before do
+ order.payments = [other_payment]
+ end
+
+ context "and order is in an earlier state" do
+ # This revealed obscure bug #12693. If you progress to order summary, go back to payment
+ # method, then open delivery details in a new tab (or hover over the link with Turbo
+ # enabled), then submit new payment details, this happens.
+
+ before do
+ order.back_to_address
+ end
+
+ it "deletes invalid (old) payments" do
+ put(:update, params:)
+ order.payments.reload
+ expect(order.payments).not_to include other_payment
+ end
+ end
+ end
end
context "with no payment source" do
diff --git a/spec/controllers/concerns/extra_fields_spec.rb b/spec/controllers/concerns/extra_fields_spec.rb
index 0c6d4a1569..e6cd121086 100644
--- a/spec/controllers/concerns/extra_fields_spec.rb
+++ b/spec/controllers/concerns/extra_fields_spec.rb
@@ -7,7 +7,7 @@ RSpec.describe ExtraFields do
describe "#invalid_query_param" do
it "renders error" do
- allow(dummy_controller).to receive(:render) {}
+ allow(dummy_controller).to receive(:render)
dummy_controller.invalid_query_param("param", :unprocessable_entity, "error message")
expect(dummy_controller).to have_received(:render).with(
json:
@@ -44,7 +44,7 @@ RSpec.describe ExtraFields do
context "when fields not in available fields" do
it "calls invalid_query_param" do
- allow(dummy_controller).to receive(:invalid_query_param) {}
+ allow(dummy_controller).to receive(:invalid_query_param)
allow(dummy_controller).to receive(:params).
and_return({ extra_fields: { customer: "unknown" } })
dummy_controller.extra_fields(:customer, [:balance])
diff --git a/spec/controllers/spree/credit_cards_controller_spec.rb b/spec/controllers/spree/credit_cards_controller_spec.rb
index 943c222908..a9f3f6dcac 100644
--- a/spec/controllers/spree/credit_cards_controller_spec.rb
+++ b/spec/controllers/spree/credit_cards_controller_spec.rb
@@ -73,7 +73,7 @@ RSpec.describe Spree::CreditCardsController, type: :controller do
{
format: :json,
exp_month: 12,
- exp_year: Time.now.year.next,
+ exp_year: Time.zone.now.year.next,
last4: 4242,
token:,
cc_type: "visa"
diff --git a/spec/factories.rb b/spec/factories.rb
index 90675a7cbb..44b50bfe32 100644
--- a/spec/factories.rb
+++ b/spec/factories.rb
@@ -61,9 +61,11 @@ FactoryBot.define do
end
factory :enterprise_relationship do
+ nil
end
factory :enterprise_role do
+ nil
end
factory :enterprise_group, class: EnterpriseGroup do
diff --git a/spec/factories/enterprise_factory.rb b/spec/factories/enterprise_factory.rb
index e29445941d..6ff71ea6f4 100644
--- a/spec/factories/enterprise_factory.rb
+++ b/spec/factories/enterprise_factory.rb
@@ -4,8 +4,8 @@ FactoryBot.define do
factory :enterprise, class: Enterprise do
transient do
users { [] }
- logo {}
- promo_image {}
+ logo { nil }
+ promo_image { nil }
end
owner factory: :user
diff --git a/spec/factories/oidc_account_factory.rb b/spec/factories/oidc_account_factory.rb
index 4b0e12130f..a636e3663b 100644
--- a/spec/factories/oidc_account_factory.rb
+++ b/spec/factories/oidc_account_factory.rb
@@ -6,6 +6,7 @@ FactoryBot.define do
uid { user&.email || generate(:random_email) }
# This is a live test account authenticated via Les Communes.
+ # See .env.test for tips on connecting the account for recording VCR cassettes.
factory :testdfc_account do
uid { "testdfc@protonmail.com" }
refresh_token { ENV.fetch("OPENID_REFRESH_TOKEN") }
diff --git a/spec/fixtures/vcr_cassettes/OpenOrderCycleJob/syncing_remote_products/synchronises_products_from_a_FDC_catalog.yml b/spec/fixtures/vcr_cassettes/OpenOrderCycleJob/syncing_remote_products/synchronises_products_from_a_FDC_catalog.yml
new file mode 100644
index 0000000000..7fe3347c06
--- /dev/null
+++ b/spec/fixtures/vcr_cassettes/OpenOrderCycleJob/syncing_remote_products/synchronises_products_from_a_FDC_catalog.yml
@@ -0,0 +1,198 @@
+---
+http_interactions:
+- request:
+ method: get
+ uri: https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts
+ body:
+ encoding: US-ASCII
+ string: ''
+ headers:
+ Content-Type:
+ - application/json
+ Authorization:
+ - ""
+ User-Agent:
+ - Faraday v2.9.0
+ Accept-Encoding:
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
+ Accept:
+ - "*/*"
+ response:
+ status:
+ code: 403
+ message: Forbidden
+ headers:
+ Server:
+ - openresty
+ Date:
+ - Wed, 26 Feb 2025 04:26:44 GMT
+ Content-Type:
+ - application/json; charset=utf-8
+ Content-Length:
+ - '78'
+ Connection:
+ - keep-alive
+ X-Powered-By:
+ - Express
+ Access-Control-Allow-Origin:
+ - "*"
+ Etag:
+ - W/"4e-vJeBLxgahmv23yP9gdPJW/woako"
+ Strict-Transport-Security:
+ - max-age=15811200
+ body:
+ encoding: UTF-8
+ string: '{"message":"User access denied - token missing","error":"User not authorized"}'
+ recorded_at: Wed, 26 Feb 2025 04:26:41 GMT
+- request:
+ method: get
+ uri: https://login.lescommuns.org/auth/realms/data-food-consortium/.well-known/openid-configuration
+ body:
+ encoding: US-ASCII
+ string: ''
+ headers:
+ User-Agent:
+ - SWD 2.0.3
+ Accept-Encoding:
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
+ Accept:
+ - "*/*"
+ response:
+ status:
+ code: 200
+ message: OK
+ headers:
+ Date:
+ - Wed, 26 Feb 2025 04:26:45 GMT
+ Content-Type:
+ - application/json;charset=UTF-8
+ Transfer-Encoding:
+ - chunked
+ Connection:
+ - keep-alive
+ Vary:
+ - Accept-Encoding
+ Set-Cookie:
+ - INGRESSCOOKIE=1740544006.542.53801.455812|78230f584c0d7db97d376e98de5321dc;
+ Path=/; Secure; HttpOnly
+ Cache-Control:
+ - no-cache, must-revalidate, no-transform, no-store
+ Referrer-Policy:
+ - no-referrer
+ Strict-Transport-Security:
+ - max-age=31536000; includeSubDomains
+ X-Content-Type-Options:
+ - nosniff
+ X-Frame-Options:
+ - SAMEORIGIN
+ X-Xss-Protection:
+ - 1; mode=block
+ body:
+ encoding: ASCII-8BIT
+ string: '{"issuer":"https://login.lescommuns.org/auth/realms/data-food-consortium","authorization_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/auth","token_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/token","introspection_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/token/introspect","userinfo_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/userinfo","end_session_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/logout","frontchannel_logout_session_supported":true,"frontchannel_logout_supported":true,"jwks_uri":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/certs","check_session_iframe":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/login-status-iframe.html","grant_types_supported":["authorization_code","implicit","refresh_token","password","client_credentials","urn:openid:params:grant-type:ciba","urn:ietf:params:oauth:grant-type:device_code"],"acr_values_supported":["0","1"],"response_types_supported":["code","none","id_token","token","id_token
+ token","code id_token","code token","code id_token token"],"subject_types_supported":["public","pairwise"],"id_token_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512"],"id_token_encryption_alg_values_supported":["RSA-OAEP","RSA-OAEP-256","RSA1_5"],"id_token_encryption_enc_values_supported":["A256GCM","A192GCM","A128GCM","A128CBC-HS256","A192CBC-HS384","A256CBC-HS512"],"userinfo_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512","none"],"userinfo_encryption_alg_values_supported":["RSA-OAEP","RSA-OAEP-256","RSA1_5"],"userinfo_encryption_enc_values_supported":["A256GCM","A192GCM","A128GCM","A128CBC-HS256","A192CBC-HS384","A256CBC-HS512"],"request_object_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512","none"],"request_object_encryption_alg_values_supported":["RSA-OAEP","RSA-OAEP-256","RSA1_5"],"request_object_encryption_enc_values_supported":["A256GCM","A192GCM","A128GCM","A128CBC-HS256","A192CBC-HS384","A256CBC-HS512"],"response_modes_supported":["query","fragment","form_post","query.jwt","fragment.jwt","form_post.jwt","jwt"],"registration_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/clients-registrations/openid-connect","token_endpoint_auth_methods_supported":["private_key_jwt","client_secret_basic","client_secret_post","tls_client_auth","client_secret_jwt"],"token_endpoint_auth_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512"],"introspection_endpoint_auth_methods_supported":["private_key_jwt","client_secret_basic","client_secret_post","tls_client_auth","client_secret_jwt"],"introspection_endpoint_auth_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512"],"authorization_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512"],"authorization_encryption_alg_values_supported":["RSA-OAEP","RSA-OAEP-256","RSA1_5"],"authorization_encryption_enc_values_supported":["A256GCM","A192GCM","A128GCM","A128CBC-HS256","A192CBC-HS384","A256CBC-HS512"],"claims_supported":["aud","sub","iss","auth_time","name","given_name","family_name","preferred_username","email","acr"],"claim_types_supported":["normal"],"claims_parameter_supported":true,"scopes_supported":["openid","microprofile-jwt","phone","roles","profile","email","address","web-origins","acr","offline_access","ReadProduct"],"request_parameter_supported":true,"request_uri_parameter_supported":true,"require_request_uri_registration":true,"code_challenge_methods_supported":["plain","S256"],"tls_client_certificate_bound_access_tokens":true,"revocation_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/revoke","revocation_endpoint_auth_methods_supported":["private_key_jwt","client_secret_basic","client_secret_post","tls_client_auth","client_secret_jwt"],"revocation_endpoint_auth_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512"],"backchannel_logout_supported":true,"backchannel_logout_session_supported":true,"device_authorization_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/auth/device","backchannel_token_delivery_modes_supported":["poll","ping"],"backchannel_authentication_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/ext/ciba/auth","backchannel_authentication_request_signing_alg_values_supported":["PS384","ES384","RS384","ES256","RS256","ES512","PS256","PS512","RS512"],"require_pushed_authorization_requests":false,"pushed_authorization_request_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/ext/par/request","mtls_endpoint_aliases":{"token_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/token","revocation_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/revoke","introspection_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/token/introspect","device_authorization_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/auth/device","registration_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/clients-registrations/openid-connect","userinfo_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/userinfo","pushed_authorization_request_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/ext/par/request","backchannel_authentication_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/ext/ciba/auth"},"authorization_response_iss_parameter_supported":true}'
+ recorded_at: Wed, 26 Feb 2025 04:26:41 GMT
+- request:
+ method: post
+ uri: https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/token
+ body:
+ encoding: UTF-8
+ string: grant_type=refresh_token&refresh_token=
+ headers:
+ User-Agent:
+ - Rack::OAuth2 (2.2.1)
+ Authorization:
+ - ""
+ Content-Type:
+ - application/x-www-form-urlencoded
+ Accept-Encoding:
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
+ Accept:
+ - "*/*"
+ response:
+ status:
+ code: 200
+ message: OK
+ headers:
+ Date:
+ - Wed, 26 Feb 2025 04:26:46 GMT
+ Content-Type:
+ - application/json
+ Transfer-Encoding:
+ - chunked
+ Connection:
+ - keep-alive
+ Vary:
+ - Accept-Encoding
+ Set-Cookie:
+ - INGRESSCOOKIE=1740544007.438.54830.143060|78230f584c0d7db97d376e98de5321dc;
+ Path=/; Secure; HttpOnly
+ Cache-Control:
+ - no-store
+ Pragma:
+ - no-cache
+ Referrer-Policy:
+ - no-referrer
+ Strict-Transport-Security:
+ - max-age=31536000; includeSubDomains
+ X-Content-Type-Options:
+ - nosniff
+ X-Frame-Options:
+ - SAMEORIGIN
+ X-Xss-Protection:
+ - 1; mode=block
+ body:
+ encoding: ASCII-8BIT
+ string: '{"access_token":"","expires_in":1800,"refresh_expires_in":0,"refresh_token":"","token_type":"Bearer","id_token":"","not-before-policy":0,"session_state":"c1863fca-32d6-427a-a860-2d16734e6715","scope":"openid
+ profile email offline_access"}'
+ recorded_at: Wed, 26 Feb 2025 04:26:41 GMT
+- request:
+ method: get
+ uri: https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts
+ body:
+ encoding: US-ASCII
+ string: ''
+ headers:
+ Content-Type:
+ - application/json
+ Authorization:
+ - ""
+ User-Agent:
+ - Faraday v2.9.0
+ Accept-Encoding:
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
+ Accept:
+ - "*/*"
+ response:
+ status:
+ code: 200
+ message: OK
+ headers:
+ Server:
+ - openresty
+ Date:
+ - Wed, 26 Feb 2025 04:26:48 GMT
+ Content-Type:
+ - text/html; charset=utf-8
+ Content-Length:
+ - '32854'
+ Connection:
+ - keep-alive
+ X-Powered-By:
+ - Express
+ Access-Control-Allow-Origin:
+ - "*"
+ Etag:
+ - W/"8056-R5l3QaspJAaqIP/JgVAD/G9OI60"
+ Set-Cookie:
+ - SRVGROUP=common; path=/; HttpOnly
+ X-Resolver-Ip:
+ - 185.172.100.60
+ Strict-Transport-Security:
+ - max-age=15811200
+ body:
+ encoding: ASCII-8BIT
+ string: !binary |-
+ eyJAY29udGV4dCI6Imh0dHBzOi8vd3d3LmRhdGFmb29kY29uc29ydGl1bS5vcmciLCJAZ3JhcGgiOlt7IkBpZCI6Il86YjI2Mzk4NiIsIkB0eXBlIjoiZGZjLWI6UXVhbnRpdGF0aXZlVmFsdWUiLCJkZmMtYjpoYXNVbml0IjoiZGZjLW06S2lsb2dyYW0iLCJkZmMtYjp2YWx1ZSI6IjAuMDQifSx7IkBpZCI6Il86YjI2Mzk4NyIsIkB0eXBlIjoiZGZjLWI6UHJpY2UiLCJkZmMtYjpWQVRyYXRlIjoiMCIsImRmYy1iOmhhc1VuaXQiOiJkZmMtbTpQb3VuZFN0ZXJsaW5nIiwiZGZjLWI6dmFsdWUiOiI2LjI1In0seyJAaWQiOiJfOmIyNjM5ODgiLCJAdHlwZSI6ImRmYy1iOlF1YW50aXRhdGl2ZVZhbHVlIiwiZGZjLWI6aGFzVW5pdCI6ImRmYy1tOktpbG9ncmFtIiwiZGZjLWI6dmFsdWUiOiIwLjQifSx7IkBpZCI6Il86YjI2Mzk4OSIsIkB0eXBlIjoiZGZjLWI6UHJpY2UiLCJkZmMtYjpWQVRyYXRlIjoiMCIsImRmYy1iOmhhc1VuaXQiOiJkZmMtbTpQb3VuZFN0ZXJsaW5nIiwiZGZjLWI6dmFsdWUiOiIyLjA5In0seyJAaWQiOiJfOmIyNjM5OTAiLCJAdHlwZSI6ImRmYy1iOlF1YW50aXRhdGl2ZVZhbHVlIiwiZGZjLWI6aGFzVW5pdCI6ImRmYy1tOktpbG9ncmFtIiwiZGZjLWI6dmFsdWUiOiIwLjMifSx7IkBpZCI6Il86YjI2Mzk5MSIsIkB0eXBlIjoiZGZjLWI6UHJpY2UiLCJkZmMtYjpWQVRyYXRlIjoiMCIsImRmYy1iOmhhc1VuaXQiOiJkZmMtbTpQb3VuZFN0ZXJsaW5nIiwiZGZjLWI6dmFsdWUiOiIyLjQ5In0seyJAaWQiOiJfOmIyNjM5OTIiLCJAdHlwZSI6ImRmYy1iOlF1YW50aXRhdGl2ZVZhbHVlIiwiZGZjLWI6aGFzVW5pdCI6ImRmYy1tOktpbG9ncmFtIiwiZGZjLWI6dmFsdWUiOiIwIn0seyJAaWQiOiJfOmIyNjM5OTMiLCJAdHlwZSI6ImRmYy1iOlByaWNlIiwiZGZjLWI6VkFUcmF0ZSI6IjAiLCJkZmMtYjpoYXNVbml0IjoiZGZjLW06UG91bmRTdGVybGluZyIsImRmYy1iOnZhbHVlIjoiNS45NSJ9LHsiQGlkIjoiXzpiMjYzOTk0IiwiQHR5cGUiOiJkZmMtYjpRdWFudGl0YXRpdmVWYWx1ZSIsImRmYy1iOmhhc1VuaXQiOiJkZmMtbTpLaWxvZ3JhbSIsImRmYy1iOnZhbHVlIjoiMC4yNCJ9LHsiQGlkIjoiXzpiMjYzOTk1IiwiQHR5cGUiOiJkZmMtYjpQcmljZSIsImRmYy1iOlZBVHJhdGUiOiIwIiwiZGZjLWI6aGFzVW5pdCI6ImRmYy1tOlBvdW5kU3RlcmxpbmciLCJkZmMtYjp2YWx1ZSI6IjMwLjIwIn0seyJAaWQiOiJfOmIyNjM5OTYiLCJAdHlwZSI6ImRmYy1iOlF1YW50aXRhdGl2ZVZhbHVlIiwiZGZjLWI6aGFzVW5pdCI6ImRmYy1tOktpbG9ncmFtIiwiZGZjLWI6dmFsdWUiOiI0LjgifSx7IkBpZCI6Il86YjI2Mzk5NyIsIkB0eXBlIjoiZGZjLWI6UHJpY2UiLCJkZmMtYjpWQVRyYXRlIjoiMCIsImRmYy1iOmhhc1VuaXQiOiJkZmMtbTpQb3VuZFN0ZXJsaW5nIiwiZGZjLWI6dmFsdWUiOiIxOC44NSJ9LHsiQGlkIjoiXzpiMjYzOTk4IiwiQHR5cGUiOiJkZmMtYjpRdWFudGl0YXRpdmVWYWx1ZSIsImRmYy1iOmhhc1VuaXQiOiJkZmMtbTpLaWxvZ3JhbSIsImRmYy1iOnZhbHVlIjoiMi40In0seyJAaWQiOiJfOmIyNjM5OTkiLCJAdHlwZSI6ImRmYy1iOlByaWNlIiwiZGZjLWI6VkFUcmF0ZSI6IjAiLCJkZmMtYjpoYXNVbml0IjoiZGZjLW06UG91bmRTdGVybGluZyIsImRmYy1iOnZhbHVlIjoiMTQuOTUifSx7IkBpZCI6Il86YjI2NDAwMCIsIkB0eXBlIjoiZGZjLWI6UXVhbnRpdGF0aXZlVmFsdWUiLCJkZmMtYjpoYXNVbml0IjoiZGZjLW06S2lsb2dyYW0iLCJkZmMtYjp2YWx1ZSI6IjAifSx7IkBpZCI6Il86YjI2NDAwMSIsIkB0eXBlIjoiZGZjLWI6UHJpY2UiLCJkZmMtYjpWQVRyYXRlIjoiMCIsImRmYy1iOmhhc1VuaXQiOiJkZmMtbTpQb3VuZFN0ZXJsaW5nIiwiZGZjLWI6dmFsdWUiOiI0NS4wMCJ9LHsiQGlkIjoiXzpiMjY0MDAyIiwiQHR5cGUiOiJkZmMtYjpRdWFudGl0YXRpdmVWYWx1ZSIsImRmYy1iOmhhc1VuaXQiOiJkZmMtbTpQaWVjZSIsImRmYy1iOnZhbHVlIjoiNiJ9LHsiQGlkIjoiXzpiMjY0MDAzIiwiQHR5cGUiOiJkZmMtYjpRdWFudGl0YXRpdmVWYWx1ZSIsImRmYy1iOmhhc1VuaXQiOiJkZmMtbTpQaWVjZSIsImRmYy1iOnZhbHVlIjoiMSJ9LHsiQGlkIjoiXzpiMjY0MDA0IiwiQHR5cGUiOiJkZmMtYjpRdWFudGl0YXRpdmVWYWx1ZSIsImRmYy1iOmhhc1VuaXQiOiJkZmMtbTpQaWVjZSIsImRmYy1iOnZhbHVlIjoiMTIifSx7IkBpZCI6Il86YjI2NDAwNSIsIkB0eXBlIjoiZGZjLWI6UXVhbnRpdGF0aXZlVmFsdWUiLCJkZmMtYjpoYXNVbml0IjoiZGZjLW06UGllY2UiLCJkZmMtYjp2YWx1ZSI6IjEifSx7IkBpZCI6Il86YjI2NDAwNiIsIkB0eXBlIjoiZGZjLWI6UXVhbnRpdGF0aXZlVmFsdWUiLCJkZmMtYjpoYXNVbml0IjoiZGZjLW06UGllY2UiLCJkZmMtYjp2YWx1ZSI6IjgifSx7IkBpZCI6Il86YjI2NDAwNyIsIkB0eXBlIjoiZGZjLWI6UXVhbnRpdGF0aXZlVmFsdWUiLCJkZmMtYjpoYXNVbml0IjoiZGZjLW06UGllY2UiLCJkZmMtYjp2YWx1ZSI6IjEifSx7IkBpZCI6Il86YjI2NDAwOCIsIkB0eXBlIjoiZGZjLWI6UXVhbnRpdGF0aXZlVmFsdWUiLCJkZmMtYjpoYXNVbml0IjoiZGZjLW06UGllY2UiLCJkZmMtYjp2YWx1ZSI6IjEwIn0seyJAaWQiOiJfOmIyNjQwMDkiLCJAdHlwZSI6ImRmYy1iOlF1YW50aXRhdGl2ZVZhbHVlIiwiZGZjLWI6aGFzVW5pdCI6ImRmYy1tOlBpZWNlIiwiZGZjLWI6dmFsdWUiOiIxIn0seyJAaWQiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NjYyMzgyNTkiLCJAdHlwZSI6ImRmYy1iOlN1cHBsaWVkUHJvZHVjdCIsImRmYy1iOmRlc2NyaXB0aW9uIjoiPHRhYmxlIHdpZHRoPVwiMTAwJVwiPlxuPHRib2R5PlxuPHRyIHN0eWxlPVwiYm9yZGVyOiAwcHg7XCIgZGF0YS1tY2Utc3R5bGU9XCJib3JkZXI6IDBweDtcIj5cbjx0ZCBiZ2NvbG9yPVwiI2Q2ZmJlZFwiIHN0eWxlPVwiY29sb3I6ICMwMDAwMDA7IGJvcmRlcjogMHB4OyB3aWR0aDogNTI2cHg7XCIgZGF0YS1tY2Utc3R5bGU9XCJjb2xvcjogIzAwMDAwMDsgYm9yZGVyOiAwcHg7IHdpZHRoOiA1MjZweDtcIj48Yj5UaGlzIHJpY2gsIGludGVuc2UgYW5kIGRlZXBseSBmbGF2b3VyZWQgNi15ZWFyIG9sZCBhcHBsZSBiYWxzYW1pYyB2aW5lZ2FyIGlzIG1hZGUgdXNpbmcgdGhlIHRyYWRpdGlvbmFsIEl0YWxpYW4gbWV0aG9kIG9mIHJlZHVjdGlvbiBhbmQgY29uY2VudHJhdGlvbiBvZiB0aGUganVpY2Ugb3ZlciBhIGxlbmd0aHkgcGVyaW9kIG9mIHRpbWUsIHJhdGhlciB0aGFuIGJ5IGFkZGluZyBmbGF2b3VyaW5nIGFuZCBjb2xvdXJpbmcuwqA8L2I+PC90ZD5cbjwvdHI+XG48L3Rib2R5PlxuPC90YWJsZT5cbjxwPkxpYmVydHkgRmllbGRzIHByb2R1Y2Ugc21hbGwgYmF0Y2hlcyBvZiBzdXBlcmIgc3lydXAsIGJhbHNhbWljIHZpbmVnYXIsIGNpZGVyIGFuZCB2b2RrYSBieSBoYW5kIGZyb20gdGhlIGZydWl0IG9mIHRoZWlyIG93biBEb3JzZXQgYXBwbGUgb3JjaGFyZHMsIHBsYW50ZWQgZnJvbSAyMDEwLjxicj48L3A+XG48cD5UaGUgYmFsc2FtaWMgdmluZWdhciBpcyBhZ2VkIGZvciA2IHllYXJzIGluIGJhcnJlbHMuwqBUaGUgb25seSBpbmdyZWRpZW50IGlzIGFwcGxlcy48L3A+XG48aDUgY2xhc3M9XCJwcm9kdWN0LWRldGFpbC10aXRsZVwiPkhvdyB0byB1c2U8L2g1PlxuPHA+VXNlIGxpa2UgSXRhbGlhbiBiYWxzYW1pYyB2aW5lZ2FyLsKgPHNwYW4gZGF0YS1tY2UtZnJhZ21lbnQ9XCIxXCI+QXMgd2VsbCBhcyB1c2luZyBvbiBzYWxhZHMsIGl04oCZcyBhIGdyZWF0IHBhcnRuZXIgZm9yIGdyaWxsZWQgbWVhdHMgb3IgY2hhcmN1dGVyaWU7IGEgZHJvcCBicmluZ3Mgb3V0IHRoZSB0YXN0ZSBvZiBzdHJhd2JlcnJpZXMgYW5kIG90aGVyIHNvZnQgZnJ1aXRzOyBhbmQgaXQgY2FuIHJlYWxseSBlbmhhbmNlIGEgc3Rldywgc2F1Y2Ugb3IgYSBzb3VwLsKgPC9zcGFuPjwvcD5cbjxoNSBjbGFzcz1cInByb2R1Y3QtZGV0YWlsLXRpdGxlXCI+VG8gc3RvcmU8YnI+XG48L2g1PlxuPHA+Rm9yIGJlc3QgYmVmb3JlIGRhdGUgc2VlIHBhY2suIFN0b3JlIGluIGEgY29vbCwgZHJ5IHBsYWNlLjxicj48L3A+XG48aDUgY2xhc3M9XCJwcm9kdWN0LWRldGFpbC10aXRsZVwiPkluZ3JlZGllbnRzPC9oNT5cbjxwPkFwcGxlczxicj48L3A+XG48aDUgY2xhc3M9XCJwcm9kdWN0LWRldGFpbC10aXRsZVwiPkFsbGVyZ3kgaW5mb3JtYXRpb248L2g1PlxuPHA+Tm8gYWxsZXJnZW5zLjwvcD48aDUgY2xhc3M9XCJwcm9kdWN0LWRldGFpbC10aXRsZVwiPk1vcmU8L2g1PlxuPHA+UHJvZHVjdCBvZsKgRG9yc2V0PGJyPlN1aXRhYmxlIGZvciB2ZWdhbnMgYW5kIHZlZ2V0YXJpYW5zPGJyPjwvcD4iLCJkZmMtYjpoYXNRdWFudGl0eSI6Il86YjI2Mzk4NiIsImRmYy1iOmltYWdlIjoiaHR0cHM6Ly9jZG4uc2hvcGlmeS5jb20vcy9maWxlcy8xLzA3MzEvODQ4My83OTM5L3Byb2R1Y3RzL0xpYmVydHktRmllbGRzLUFwcGxlLUJhbHNhbWljLVZpbmVnYXItNDBtbF83OTYxN2VlYS1hYjhjLTQwNzAtOWU0ZC03MTFiZjAzMGFkMDcuanBnP3Y9MTY3Nzc2MDc3MiIsImRmYy1iOm5hbWUiOiJBcHBsZSBCYWxzYW1pYyBWaW5lZ2FyIC0gUmV0YWlsIGJvdHRsZSwgNDBtbCIsImRmYy1iOnJlZmVyZW5jZWRCeSI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2NjIzODI1OS9DYXRhbG9nSXRlbSJ9LHsiQGlkIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY2MjM4MjU5L0FzUGxhbm5lZENvbnN1bXB0aW9uRmxvdyIsIkB0eXBlIjoiZGZjLWI6QXNQbGFubmVkQ29uc3VtcHRpb25GbG93IiwiZGZjLWI6Y29uc3VtZXMiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NjYyMzgyNTkiLCJkZmMtYjpoYXNRdWFudGl0eSI6Il86YjI2NDAwMiJ9LHsiQGlkIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY2MjM4MjU5L0FzUGxhbm5lZFByb2R1Y3Rpb25GbG93IiwiQHR5cGUiOiJkZmMtYjpBc1BsYW5uZWRQcm9kdWN0aW9uRmxvdyIsImRmYy1iOmhhc1F1YW50aXR5IjoiXzpiMjY0MDAzIiwiZGZjLWI6cHJvZHVjZXMiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NjYyNzEwMjcifSx7IkBpZCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2NjIzODI1OS9Bc1BsYW5uZWRUcmFuc2Zvcm1hdGlvbiIsIkB0eXBlIjoiZGZjLWI6QXNQbGFubmVkVHJhbnNmb3JtYXRpb24iLCJkZmMtYjpoYXNJbmNvbWUiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NjYyMzgyNTkvQXNQbGFubmVkQ29uc3VtcHRpb25GbG93IiwiZGZjLWI6aGFzT3V0Y29tZSI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2NjIzODI1OS9Bc1BsYW5uZWRQcm9kdWN0aW9uRmxvdyJ9LHsiQGlkIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY2MjM4MjU5L0NhdGFsb2dJdGVtIiwiQHR5cGUiOiJkZmMtYjpDYXRhbG9nSXRlbSIsImRmYy1iOm9mZmVyZWRUaHJvdWdoIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY2MjM4MjU5L09mZmVyIiwiZGZjLWI6c2t1IjoiTElCL05BQlZJL0JGIiwiZGZjLWI6c3RvY2tMaW1pdGF0aW9uIjoiLTEifSx7IkBpZCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2NjIzODI1OS9PZmZlciIsIkB0eXBlIjoiZGZjLWI6T2ZmZXIiLCJkZmMtYjpoYXNQcmljZSI6eyJAaWQiOiJfOmIyNjM5ODcifX0seyJAaWQiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NjYyNzEwMjciLCJAdHlwZSI6ImRmYy1iOlN1cHBsaWVkUHJvZHVjdCIsImRmYy1iOmRlc2NyaXB0aW9uIjoiPHRhYmxlIHdpZHRoPVwiMTAwJVwiPlxuPHRib2R5PlxuPHRyIHN0eWxlPVwiYm9yZGVyOiAwcHg7XCIgZGF0YS1tY2Utc3R5bGU9XCJib3JkZXI6IDBweDtcIj5cbjx0ZCBiZ2NvbG9yPVwiI2Q2ZmJlZFwiIHN0eWxlPVwiY29sb3I6ICMwMDAwMDA7IGJvcmRlcjogMHB4OyB3aWR0aDogNTI2cHg7XCIgZGF0YS1tY2Utc3R5bGU9XCJjb2xvcjogIzAwMDAwMDsgYm9yZGVyOiAwcHg7IHdpZHRoOiA1MjZweDtcIj48Yj5UaGlzIHJpY2gsIGludGVuc2UgYW5kIGRlZXBseSBmbGF2b3VyZWQgNi15ZWFyIG9sZCBhcHBsZSBiYWxzYW1pYyB2aW5lZ2FyIGlzIG1hZGUgdXNpbmcgdGhlIHRyYWRpdGlvbmFsIEl0YWxpYW4gbWV0aG9kIG9mIHJlZHVjdGlvbiBhbmQgY29uY2VudHJhdGlvbiBvZiB0aGUganVpY2Ugb3ZlciBhIGxlbmd0aHkgcGVyaW9kIG9mIHRpbWUsIHJhdGhlciB0aGFuIGJ5IGFkZGluZyBmbGF2b3VyaW5nIGFuZCBjb2xvdXJpbmcuwqA8L2I+PC90ZD5cbjwvdHI+XG48L3Rib2R5PlxuPC90YWJsZT5cbjxwPkxpYmVydHkgRmllbGRzIHByb2R1Y2Ugc21hbGwgYmF0Y2hlcyBvZiBzdXBlcmIgc3lydXAsIGJhbHNhbWljIHZpbmVnYXIsIGNpZGVyIGFuZCB2b2RrYSBieSBoYW5kIGZyb20gdGhlIGZydWl0IG9mIHRoZWlyIG93biBEb3JzZXQgYXBwbGUgb3JjaGFyZHMsIHBsYW50ZWQgZnJvbSAyMDEwLjxicj48L3A+XG48cD5UaGUgYmFsc2FtaWMgdmluZWdhciBpcyBhZ2VkIGZvciA2IHllYXJzIGluIGJhcnJlbHMuwqBUaGUgb25seSBpbmdyZWRpZW50IGlzIGFwcGxlcy48L3A+XG48aDUgY2xhc3M9XCJwcm9kdWN0LWRldGFpbC10aXRsZVwiPkhvdyB0byB1c2U8L2g1PlxuPHA+VXNlIGxpa2UgSXRhbGlhbiBiYWxzYW1pYyB2aW5lZ2FyLsKgPHNwYW4gZGF0YS1tY2UtZnJhZ21lbnQ9XCIxXCI+QXMgd2VsbCBhcyB1c2luZyBvbiBzYWxhZHMsIGl04oCZcyBhIGdyZWF0IHBhcnRuZXIgZm9yIGdyaWxsZWQgbWVhdHMgb3IgY2hhcmN1dGVyaWU7IGEgZHJvcCBicmluZ3Mgb3V0IHRoZSB0YXN0ZSBvZiBzdHJhd2JlcnJpZXMgYW5kIG90aGVyIHNvZnQgZnJ1aXRzOyBhbmQgaXQgY2FuIHJlYWxseSBlbmhhbmNlIGEgc3Rldywgc2F1Y2Ugb3IgYSBzb3VwLsKgPC9zcGFuPjwvcD5cbjxoNSBjbGFzcz1cInByb2R1Y3QtZGV0YWlsLXRpdGxlXCI+VG8gc3RvcmU8YnI+XG48L2g1PlxuPHA+Rm9yIGJlc3QgYmVmb3JlIGRhdGUgc2VlIHBhY2suIFN0b3JlIGluIGEgY29vbCwgZHJ5IHBsYWNlLjxicj48L3A+XG48aDUgY2xhc3M9XCJwcm9kdWN0LWRldGFpbC10aXRsZVwiPkluZ3JlZGllbnRzPC9oNT5cbjxwPkFwcGxlczxicj48L3A+XG48aDUgY2xhc3M9XCJwcm9kdWN0LWRldGFpbC10aXRsZVwiPkFsbGVyZ3kgaW5mb3JtYXRpb248L2g1PlxuPHA+Tm8gYWxsZXJnZW5zLjwvcD48aDUgY2xhc3M9XCJwcm9kdWN0LWRldGFpbC10aXRsZVwiPk1vcmU8L2g1PlxuPHA+UHJvZHVjdCBvZsKgRG9yc2V0PGJyPlN1aXRhYmxlIGZvciB2ZWdhbnMgYW5kIHZlZ2V0YXJpYW5zPGJyPjwvcD4iLCJkZmMtYjpoYXNRdWFudGl0eSI6Il86YjI2Mzk5NCIsImRmYy1iOmltYWdlIjoiaHR0cHM6Ly9jZG4uc2hvcGlmeS5jb20vcy9maWxlcy8xLzA3MzEvODQ4My83OTM5L3Byb2R1Y3RzL0xpYmVydHktRmllbGRzLUFwcGxlLUJhbHNhbWljLVZpbmVnYXItNDBtbF83OTYxN2VlYS1hYjhjLTQwNzAtOWU0ZC03MTFiZjAzMGFkMDcuanBnP3Y9MTY3Nzc2MDc3MiIsImRmYy1iOm5hbWUiOiJBcHBsZSBCYWxzYW1pYyBWaW5lZ2FyIC0gQ2FzZSwgNiB4IDQwbWwiLCJkZmMtYjpyZWZlcmVuY2VkQnkiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NjYyNzEwMjcvQ2F0YWxvZ0l0ZW0ifSx7IkBpZCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2NjI3MTAyNy9DYXRhbG9nSXRlbSIsIkB0eXBlIjoiZGZjLWI6Q2F0YWxvZ0l0ZW0iLCJkZmMtYjpvZmZlcmVkVGhyb3VnaCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2NjI3MTAyNy9PZmZlciIsImRmYy1iOnNrdSI6IkxJQi9OQUJWSS9DNiIsImRmYy1iOnN0b2NrTGltaXRhdGlvbiI6IjEifSx7IkBpZCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2NjI3MTAyNy9PZmZlciIsIkB0eXBlIjoiZGZjLWI6T2ZmZXIiLCJkZmMtYjpoYXNQcmljZSI6eyJAaWQiOiJfOmIyNjM5OTUifX0seyJAaWQiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NjY0Njc2MzUiLCJAdHlwZSI6ImRmYy1iOlN1cHBsaWVkUHJvZHVjdCIsImRmYy1iOmRlc2NyaXB0aW9uIjoiPHRhYmxlIHdpZHRoPVwiMTAwJVwiPlxuPHRib2R5PlxuPHRyIHN0eWxlPVwiYm9yZGVyOiAwcHg7XCI+XG48dGQgYmdjb2xvcj1cIiNkNmZiZWRcIiBzdHlsZT1cImNvbG9yOiAjMDAwMDAwOyBib3JkZXI6IDBweDtcIj48c3Ryb25nPlRoZXkncmUgYmFjayE8L3N0cm9uZz48L3RkPlxuPC90cj5cbjwvdGJvZHk+XG48L3RhYmxlPlxuPHA+PHN0cm9uZz5UaGluayBiYWtlZCBiZWFucyBhcmUgQnJpdGlzaD8gVGhleSBhcmUgbm93ISBXZSB1c2Ugb25seSBCcml0aXNoLWdyb3duIGZhdmEgYmVhbnMgLSBCcml0YWluJ3Mgb3JpZ2luYWwgYmVhbiwgZ3Jvd24gaGVyZSBzaW5jZSB0aGUgSXJvbiBBZ2UuIE91ciBCYWtlZCBCcml0aXNoIEJlYW5zIGFyZSBkZWxpY2lvdXNseSBkaWZmZXJlbnQsIHdpdGggbGFyZ2UgbWVhdHkgZmF2YSBiZWFucyBpbiBhIHRhc3R5IHRvbWF0byBzYXVjZS48L3N0cm9uZz48L3A+XG48cD48c3Ryb25nPjxhIHRpdGxlPVwiV2hhdCBhcmUgZmF2YSBiZWFucz8gQXJlbid0IHRoZXkganVzdCBicm9hZCBiZWFucz9cIiBocmVmPVwiL2Jsb2dzL25ld3Mvd2hhdC1hcmUtZmF2YS1iZWFucy1hcmUtdGhleS1qdXN0LWJyb2FkLWJlYW5zXCIgZGF0YS1tY2UtZnJhZ21lbnQ9XCIxXCIgZGF0YS1tY2UtaHJlZj1cIi9ibG9ncy9uZXdzL3doYXQtYXJlLWZhdmEtYmVhbnMtYXJlLXRoZXktanVzdC1icm9hZC1iZWFuc1wiPldoYXQgYXJlIGZhdmEgYmVhbnM/IEZpbmQgb3V0IGhlcmUuLi48L2E+PC9zdHJvbmc+PC9wPlxuPCEtLSBzcGxpdCAtLT48aDM+Q29tcGxldGUgUHJvZHVjdCBEZXRhaWxzPC9oMz48cD5PdXIgQmFrZWQgQnJpdGlzaCBCZWFucyBhcmUgY29va2VkIGFuZCByZWFkeSB0byBlYXQsIGhvdCBvciBjb2xkLiBUaGV5J3JlIGdvb2Qgc2VydmVkIG9uIHRvYXN0IGJ1dCBhbHNvIGRlbGljaW91cyBhZGRlZCB0byBzdGV3cywgY3VycmllcyBvciBjYXNzZXJvbGVzLiBPciBldmVuIGluIGEgcGllLjwvcD5cbjxoNSBjbGFzcz1cInByb2R1Y3QtZGV0YWlsLXRpdGxlXCI+Q29va2luZyBpbnN0cnVjdGlvbnM8L2g1PlxuPHA+PHN0cm9uZz5Db29raW5nIG9uIHRoZSBIb2I8L3N0cm9uZz48YnI+RW1wdHkgY29udGVudHMgaW50byBzYXVjZXBhbi4gSGVhdCBnZW50bHkgZm9yIDQtNSBtaW51dGVzIHdoaWxlIHN0aXJyaW5nLiBGb3IgYmVzdCBmbGF2b3VyIGRvIG5vdCBib2lsIG9yIG92ZXJjb29rLiBEbyBub3QgcmVoZWF0LjwvcD5cbjxwPjxzdHJvbmc+TWljcm93YXZlIENvb2tpbmc8L3N0cm9uZz48YnI+RW1wdHkgY29udGVudHMgaW50byBhIG5vbi1tZXRhbGxpYyBib3dsIGFuZCBjb3Zlci4gSGVhdCBmb3IgMiB0byAzIG1pbnV0ZXMsIHN0aXJyaW5nIGhhbGZ3YXkuIENoZWNrIHRoZSBmb29kIGlzIGhvdCwgc3RpciB3ZWxsIGFuZCBzZXJ2ZS4gRG8gbm90IHJlaGVhdC48L3A+XG48aDUgY2xhc3M9XCJwcm9kdWN0LWRldGFpbC10aXRsZVwiPlRvIFN0b3JlPC9oNT5cbjxwPlN0b3JlIGluIGEgY29vbCwgZHJ5IHBsYWNlLiBPbmNlIG9wZW5lZCwgdHJhbnNmZXIgY29udGVudHMgdG8gYSBub24tbWV0YWxsaWMgY29udGFpbmVyLCBjb3ZlciByZWZyaWdlcmF0ZSBhbmQgdXNlIHdpdGggMiBkYXlzLjwvcD5cbjxoNSBjbGFzcz1cInByb2R1Y3QtZGV0YWlsLXRpdGxlXCI+SW5ncmVkaWVudHM8L2g1PlxuPHA+RmF2YSBCZWFucyAoQnJvYWQgQmVhbnMpICg0MiUpLCBXYXRlciwgVG9tYXRvIFB1cmVlLCBTdWdhciwgTW9kaWZpZWQgTWFpemUgU3RhcmNoLCBTYWx0LCBIZXJicyAmYW1wOyBTcGljZXMsIENvbmNlbnRyYXRlZCBMZW1vbiBKdWljZTwvcD5cbjxoNSBjbGFzcz1cInByb2R1Y3QtZGV0YWlsLXRpdGxlXCI+QWxsZXJneSBpbmZvcm1hdGlvbjwvaDU+XG48cD5ObyBBbGxlcmdlbnM8L3A+XG48dGFibGUgd2lkdGg9XCIxMDAlXCI+XG48dGJvZHk+XG48dHI+XG48dGQ+PHN0cm9uZz5UeXBpY2FsIHZhbHVlczwvc3Ryb25nPjwvdGQ+XG48dGQ+PHN0cm9uZz5QZXIgMTAwZzwvc3Ryb25nPjwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkPkVuZXJneTwvdGQ+XG48dGQ+Mjkya0ogKDY5a2NhbCk8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZD5GYXQ8L3RkPlxuPHRkPjAuNGc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZD5vZiB3aGljaCBzYXR1cmF0ZXM8L3RkPlxuPHRkPjAuMWc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZD5DYXJib2h5ZHJhdGU8L3RkPlxuPHRkPjEwLjFnPC90ZD5cbjwvdHI+XG48dHI+XG48dGQ+b2Ygd2hpY2ggc3VnYXJzPC90ZD5cbjx0ZD40LjZnPC90ZD5cbjwvdHI+XG48dHI+XG48dGQ+RmlicmU8L3RkPlxuPHRkPjVnPC90ZD5cbjwvdHI+XG48dHI+XG48dGQ+UHJvdGVpbjwvdGQ+XG48dGQ+NGc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZD5TYWx0PC90ZD5cbjx0ZD4wLjZnPC90ZD5cbjwvdHI+XG48L3Rib2R5PlxuPC90YWJsZT48aDUgY2xhc3M9XCJwcm9kdWN0LWRldGFpbC10aXRsZVwiPk1vcmU8L2g1PlxuPHA+RGVsaWNpb3VzLCBudXRyaXRpb3VzIGFuZCBnb29kIGZvciB0aGUgc29pbCwgZmF2YSBiZWFucyBhcmUgYSB2YXJpZXR5IG9mIGJyb2FkIGJlYW4sIFZpY2lhIGZhYmEsIGxlZnQgdG8gcmlwZW4gYW5kIGRyeSBiZWZvcmUgaGFydmVzdC4gVGhleeKAmXJlIGFsc28ga25vd24gYXMgZmllbGQgYmVhbnMsIGhvcnNlIGJlYW5zLCBXaW5kc29yIGJlYW5zIG9yIGZ1bC48L3A+XG48cD5TdWl0YWJsZSBmb3IgdmVnYW5zIGFuZCB2ZWdldGFyaWFuczwvcD5cbiIsImRmYy1iOmhhc1F1YW50aXR5IjoiXzpiMjYzOTg4IiwiZGZjLWI6aW1hZ2UiOiJodHRwczovL2Nkbi5zaG9waWZ5LmNvbS9zL2ZpbGVzLzEvMDczMS84NDgzLzc5MzkvcHJvZHVjdHMvUGFjay1DYW4tQmFrZWQtQmVhbnMtMTgwMHg2Xzk4M3g2NTZfNTEzNzU4ZTYtMjYxNi00Njg3LWE4YjItYmE2ZGRlODY0OTIzLmpwZz92PTE2Nzc3NjA3NzgiLCJkZmMtYjpuYW1lIjoiQmFrZWQgQnJpdGlzaCBCZWFucyAtIFJldGFpbCBjYW4sIDQwMGcgKGNhbikiLCJkZmMtYjpyZWZlcmVuY2VkQnkiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NjY0Njc2MzUvQ2F0YWxvZ0l0ZW0ifSx7IkBpZCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2NjQ2NzYzNS9Bc1BsYW5uZWRDb25zdW1wdGlvbkZsb3ciLCJAdHlwZSI6ImRmYy1iOkFzUGxhbm5lZENvbnN1bXB0aW9uRmxvdyIsImRmYy1iOmNvbnN1bWVzIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY2NDY3NjM1IiwiZGZjLWI6aGFzUXVhbnRpdHkiOiJfOmIyNjQwMDQifSx7IkBpZCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2NjQ2NzYzNS9Bc1BsYW5uZWRQcm9kdWN0aW9uRmxvdyIsIkB0eXBlIjoiZGZjLWI6QXNQbGFubmVkUHJvZHVjdGlvbkZsb3ciLCJkZmMtYjpoYXNRdWFudGl0eSI6Il86YjI2NDAwNSIsImRmYy1iOnByb2R1Y2VzIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY2NTAwNDAzIn0seyJAaWQiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NjY0Njc2MzUvQXNQbGFubmVkVHJhbnNmb3JtYXRpb24iLCJAdHlwZSI6ImRmYy1iOkFzUGxhbm5lZFRyYW5zZm9ybWF0aW9uIiwiZGZjLWI6aGFzSW5jb21lIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY2NDY3NjM1L0FzUGxhbm5lZENvbnN1bXB0aW9uRmxvdyIsImRmYy1iOmhhc091dGNvbWUiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NjY0Njc2MzUvQXNQbGFubmVkUHJvZHVjdGlvbkZsb3cifSx7IkBpZCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2NjQ2NzYzNS9DYXRhbG9nSXRlbSIsIkB0eXBlIjoiZGZjLWI6Q2F0YWxvZ0l0ZW0iLCJkZmMtYjpvZmZlcmVkVGhyb3VnaCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2NjQ2NzYzNS9PZmZlciIsImRmYy1iOnNrdSI6Ik5DQkIvVDQiLCJkZmMtYjpzdG9ja0xpbWl0YXRpb24iOiItMSJ9LHsiQGlkIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY2NDY3NjM1L09mZmVyIiwiQHR5cGUiOiJkZmMtYjpPZmZlciIsImRmYy1iOmhhc1ByaWNlIjp7IkBpZCI6Il86YjI2Mzk4OSJ9fSx7IkBpZCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2NjUwMDQwMyIsIkB0eXBlIjoiZGZjLWI6U3VwcGxpZWRQcm9kdWN0IiwiZGZjLWI6ZGVzY3JpcHRpb24iOiI8dGFibGUgd2lkdGg9XCIxMDAlXCI+XG48dGJvZHk+XG48dHIgc3R5bGU9XCJib3JkZXI6IDBweDtcIj5cbjx0ZCBiZ2NvbG9yPVwiI2Q2ZmJlZFwiIHN0eWxlPVwiY29sb3I6ICMwMDAwMDA7IGJvcmRlcjogMHB4O1wiPjxzdHJvbmc+VGhleSdyZSBiYWNrITwvc3Ryb25nPjwvdGQ+XG48L3RyPlxuPC90Ym9keT5cbjwvdGFibGU+XG48cD48c3Ryb25nPlRoaW5rIGJha2VkIGJlYW5zIGFyZSBCcml0aXNoPyBUaGV5IGFyZSBub3chIFdlIHVzZSBvbmx5IEJyaXRpc2gtZ3Jvd24gZmF2YSBiZWFucyAtIEJyaXRhaW4ncyBvcmlnaW5hbCBiZWFuLCBncm93biBoZXJlIHNpbmNlIHRoZSBJcm9uIEFnZS4gT3VyIEJha2VkIEJyaXRpc2ggQmVhbnMgYXJlIGRlbGljaW91c2x5IGRpZmZlcmVudCwgd2l0aCBsYXJnZSBtZWF0eSBmYXZhIGJlYW5zIGluIGEgdGFzdHkgdG9tYXRvIHNhdWNlLjwvc3Ryb25nPjwvcD5cbjxwPjxzdHJvbmc+PGEgdGl0bGU9XCJXaGF0IGFyZSBmYXZhIGJlYW5zPyBBcmVuJ3QgdGhleSBqdXN0IGJyb2FkIGJlYW5zP1wiIGhyZWY9XCIvYmxvZ3MvbmV3cy93aGF0LWFyZS1mYXZhLWJlYW5zLWFyZS10aGV5LWp1c3QtYnJvYWQtYmVhbnNcIiBkYXRhLW1jZS1mcmFnbWVudD1cIjFcIiBkYXRhLW1jZS1ocmVmPVwiL2Jsb2dzL25ld3Mvd2hhdC1hcmUtZmF2YS1iZWFucy1hcmUtdGhleS1qdXN0LWJyb2FkLWJlYW5zXCI+V2hhdCBhcmUgZmF2YSBiZWFucz8gRmluZCBvdXQgaGVyZS4uLjwvYT48L3N0cm9uZz48L3A+XG48IS0tIHNwbGl0IC0tPjxoMz5Db21wbGV0ZSBQcm9kdWN0IERldGFpbHM8L2gzPjxwPk91ciBCYWtlZCBCcml0aXNoIEJlYW5zIGFyZSBjb29rZWQgYW5kIHJlYWR5IHRvIGVhdCwgaG90IG9yIGNvbGQuIFRoZXkncmUgZ29vZCBzZXJ2ZWQgb24gdG9hc3QgYnV0IGFsc28gZGVsaWNpb3VzIGFkZGVkIHRvIHN0ZXdzLCBjdXJyaWVzIG9yIGNhc3Nlcm9sZXMuIE9yIGV2ZW4gaW4gYSBwaWUuPC9wPlxuPGg1IGNsYXNzPVwicHJvZHVjdC1kZXRhaWwtdGl0bGVcIj5Db29raW5nIGluc3RydWN0aW9uczwvaDU+XG48cD48c3Ryb25nPkNvb2tpbmcgb24gdGhlIEhvYjwvc3Ryb25nPjxicj5FbXB0eSBjb250ZW50cyBpbnRvIHNhdWNlcGFuLiBIZWF0IGdlbnRseSBmb3IgNC01IG1pbnV0ZXMgd2hpbGUgc3RpcnJpbmcuIEZvciBiZXN0IGZsYXZvdXIgZG8gbm90IGJvaWwgb3Igb3ZlcmNvb2suIERvIG5vdCByZWhlYXQuPC9wPlxuPHA+PHN0cm9uZz5NaWNyb3dhdmUgQ29va2luZzwvc3Ryb25nPjxicj5FbXB0eSBjb250ZW50cyBpbnRvIGEgbm9uLW1ldGFsbGljIGJvd2wgYW5kIGNvdmVyLiBIZWF0IGZvciAyIHRvIDMgbWludXRlcywgc3RpcnJpbmcgaGFsZndheS4gQ2hlY2sgdGhlIGZvb2QgaXMgaG90LCBzdGlyIHdlbGwgYW5kIHNlcnZlLiBEbyBub3QgcmVoZWF0LjwvcD5cbjxoNSBjbGFzcz1cInByb2R1Y3QtZGV0YWlsLXRpdGxlXCI+VG8gU3RvcmU8L2g1PlxuPHA+U3RvcmUgaW4gYSBjb29sLCBkcnkgcGxhY2UuIE9uY2Ugb3BlbmVkLCB0cmFuc2ZlciBjb250ZW50cyB0byBhIG5vbi1tZXRhbGxpYyBjb250YWluZXIsIGNvdmVyIHJlZnJpZ2VyYXRlIGFuZCB1c2Ugd2l0aCAyIGRheXMuPC9wPlxuPGg1IGNsYXNzPVwicHJvZHVjdC1kZXRhaWwtdGl0bGVcIj5JbmdyZWRpZW50czwvaDU+XG48cD5GYXZhIEJlYW5zIChCcm9hZCBCZWFucykgKDQyJSksIFdhdGVyLCBUb21hdG8gUHVyZWUsIFN1Z2FyLCBNb2RpZmllZCBNYWl6ZSBTdGFyY2gsIFNhbHQsIEhlcmJzICZhbXA7IFNwaWNlcywgQ29uY2VudHJhdGVkIExlbW9uIEp1aWNlPC9wPlxuPGg1IGNsYXNzPVwicHJvZHVjdC1kZXRhaWwtdGl0bGVcIj5BbGxlcmd5IGluZm9ybWF0aW9uPC9oNT5cbjxwPk5vIEFsbGVyZ2VuczwvcD5cbjx0YWJsZSB3aWR0aD1cIjEwMCVcIj5cbjx0Ym9keT5cbjx0cj5cbjx0ZD48c3Ryb25nPlR5cGljYWwgdmFsdWVzPC9zdHJvbmc+PC90ZD5cbjx0ZD48c3Ryb25nPlBlciAxMDBnPC9zdHJvbmc+PC90ZD5cbjwvdHI+XG48dHI+XG48dGQ+RW5lcmd5PC90ZD5cbjx0ZD4yOTJrSiAoNjlrY2FsKTwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkPkZhdDwvdGQ+XG48dGQ+MC40ZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkPm9mIHdoaWNoIHNhdHVyYXRlczwvdGQ+XG48dGQ+MC4xZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkPkNhcmJvaHlkcmF0ZTwvdGQ+XG48dGQ+MTAuMWc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZD5vZiB3aGljaCBzdWdhcnM8L3RkPlxuPHRkPjQuNmc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZD5GaWJyZTwvdGQ+XG48dGQ+NWc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZD5Qcm90ZWluPC90ZD5cbjx0ZD40ZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkPlNhbHQ8L3RkPlxuPHRkPjAuNmc8L3RkPlxuPC90cj5cbjwvdGJvZHk+XG48L3RhYmxlPjxoNSBjbGFzcz1cInByb2R1Y3QtZGV0YWlsLXRpdGxlXCI+TW9yZTwvaDU+XG48cD5EZWxpY2lvdXMsIG51dHJpdGlvdXMgYW5kIGdvb2QgZm9yIHRoZSBzb2lsLCBmYXZhIGJlYW5zIGFyZSBhIHZhcmlldHkgb2YgYnJvYWQgYmVhbiwgVmljaWEgZmFiYSwgbGVmdCB0byByaXBlbiBhbmQgZHJ5IGJlZm9yZSBoYXJ2ZXN0LiBUaGV54oCZcmUgYWxzbyBrbm93biBhcyBmaWVsZCBiZWFucywgaG9yc2UgYmVhbnMsIFdpbmRzb3IgYmVhbnMgb3IgZnVsLjwvcD5cbjxwPlN1aXRhYmxlIGZvciB2ZWdhbnMgYW5kIHZlZ2V0YXJpYW5zPC9wPlxuIiwiZGZjLWI6aGFzUXVhbnRpdHkiOiJfOmIyNjM5OTYiLCJkZmMtYjppbWFnZSI6Imh0dHBzOi8vY2RuLnNob3BpZnkuY29tL3MvZmlsZXMvMS8wNzMxLzg0ODMvNzkzOS9wcm9kdWN0cy9QYWNrLUNhbi1CYWtlZC1CZWFucy0xODAweDZfOTgzeDY1Nl81MTM3NThlNi0yNjE2LTQ2ODctYThiMi1iYTZkZGU4NjQ5MjMuanBnP3Y9MTY3Nzc2MDc3OCIsImRmYy1iOm5hbWUiOiJCYWtlZCBCcml0aXNoIEJlYW5zIC0gQ2FzZSwgMTIgeCA0MDBnIChjYW4pIiwiZGZjLWI6cmVmZXJlbmNlZEJ5IjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY2NTAwNDAzL0NhdGFsb2dJdGVtIn0seyJAaWQiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NjY1MDA0MDMvQ2F0YWxvZ0l0ZW0iLCJAdHlwZSI6ImRmYy1iOkNhdGFsb2dJdGVtIiwiZGZjLWI6b2ZmZXJlZFRocm91Z2giOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NjY1MDA0MDMvT2ZmZXIiLCJkZmMtYjpza3UiOiJOQ0JCL0NEIiwiZGZjLWI6c3RvY2tMaW1pdGF0aW9uIjoiLTEifSx7IkBpZCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2NjUwMDQwMy9PZmZlciIsIkB0eXBlIjoiZGZjLWI6T2ZmZXIiLCJkZmMtYjpoYXNQcmljZSI6eyJAaWQiOiJfOmIyNjM5OTcifX0seyJAaWQiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NjcxODg1MzEiLCJAdHlwZSI6ImRmYy1iOlN1cHBsaWVkUHJvZHVjdCIsImRmYy1iOmRlc2NyaXB0aW9uIjoiPHA+PHN0cm9uZz5DYW1lbGluYSwgYWxzbyBrbm93biBhcyBHb2xkIG9mIFBsZWFzdXJlLCBoYXMgYmVlbiBncm93biBpbiBFbmdsYW5kIGZvciB0aG91c2FuZHMgb2YgeWVhcnMgZm9yIGl0cyB0YXN0eSBzZWVkcyBhbmQgb2lsLiBTcHJpbmtsZSBvbiBzYWxhZHMsIHVzZSBpbiBiYWtpbmcsIGFkZCB0byBzbW9vdGhpZXMsIG9yIHVzZSBhcyBhIHZlZ2FuIGVnZyByZXBsYWNlbWVudC4gPC9zdHJvbmc+PC9wPlxuPCEtLSBzcGxpdCAtLT48aDM+Q29tcGxldGUgUHJvZHVjdCBEZXRhaWxzPC9oMz48cD5TcHJpbmtsZSBvbiBzYWxhZHMsIGFkZCB0byBzbW9vdGhpZXMsIHVzZSBpbiBiYWtpbmcuPC9wPlxuPGg1IGNsYXNzPVwicHJvZHVjdC1kZXRhaWwtdGl0bGVcIj5Db29raW5nIGluc3RydWN0aW9uczwvaDU+XG48cD5Tb2FrIDEgdGFibGVzcG9vbiBvZiBzZWVkcyBpbiAzIHRhYmxlc3Bvb25zIG9mIHdhcm0gd2F0ZXIgZm9yIDMwIG1pbnV0ZXMgdG8gcmVwbGFjZSBvbmUgZWdnIGluIHZlZ2FuIGJha2luZy48L3A+XG48aDUgY2xhc3M9XCJwcm9kdWN0LWRldGFpbC10aXRsZVwiPkluZ3JlZGllbnRzPC9oNT5cbjxwPkNhbWVsaW5hIHNlZWRzPC9wPlxuPGg1IGNsYXNzPVwicHJvZHVjdC1kZXRhaWwtdGl0bGVcIj5BbGxlcmd5IGluZm9ybWF0aW9uPC9oNT5cbjxwPk5vIEFsbGVyZ2VuczwvcD5cbjx0YWJsZSB3aWR0aD1cIjEwMCVcIj5cbjx0Ym9keT5cbjx0cj5cbjx0ZD48c3Ryb25nPlR5cGljYWwgdmFsdWVzPC9zdHJvbmc+PC90ZD5cbjx0ZD48c3Ryb25nPlBlciAxMDBnPC9zdHJvbmc+PC90ZD5cbjwvdHI+XG48dHI+XG48dGQ+RW5lcmd5PC90ZD5cbjx0ZD4xNDM5a0ogKDM0NmtjYWwpPC90ZD5cbjwvdHI+XG48dHI+XG48dGQ+RmF0PC90ZD5cbjx0ZD4xMi4xZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkPm9mIHdoaWNoIHNhdHVyYXRlczwvdGQ+XG48dGQ+MS43ZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkPkNhcmJvaHlkcmF0ZTwvdGQ+XG48dGQ+MTYuNGc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZD5vZiB3aGljaCBzdWdhcnM8L3RkPlxuPHRkPjEuMmc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZD5GaWJyZTwvdGQ+XG48dGQ+MzUuMWc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZD5Qcm90ZWluPC90ZD5cbjx0ZD4yNS40ZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkPlNhbHQ8L3RkPlxuPHRkPjBnPC90ZD5cbjwvdHI+XG48L3Rib2R5PlxuPC90YWJsZT48cD5DYW1lbGluYSBTZWVkcyBhcmUgaGlnaCBpbiBwcm90ZWluLCBhIGdvb2Qgc291cmNlIG9mIE9tZWdhIDMgb2lscyBhbmQgcmljaCBpbiBhbnRpb3hpZGFudHMgc3VjaCBhcyB2aXRhbWluIEU8L3A+PGg1IGNsYXNzPVwicHJvZHVjdC1kZXRhaWwtdGl0bGVcIj5Nb3JlPC9oNT5cbjxwPkdyb3duIGJ5IFBldGVyIEZhaXJzIGluIEVzc2V4IGFuZCBBbmR5IEhvd2FyZCBpbiBLZW50LjwvcD4iLCJkZmMtYjpoYXNRdWFudGl0eSI6Il86YjI2Mzk5MCIsImRmYy1iOmltYWdlIjoiaHR0cHM6Ly9jZG4uc2hvcGlmeS5jb20vcy9maWxlcy8xLzA3MzEvODQ4My83OTM5L2ZpbGVzLzM3LWNhbW1hbGluYS1mcm9uLmpwZz92PTE3MDY4ODE5NTAiLCJkZmMtYjpuYW1lIjoiQ2FtZWxpbmEgU2VlZCAtIFJldGFpbCBwYWNrLCAzMDBnIiwiZGZjLWI6cmVmZXJlbmNlZEJ5IjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY3MTg4NTMxL0NhdGFsb2dJdGVtIn0seyJAaWQiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NjcxODg1MzEvQXNQbGFubmVkQ29uc3VtcHRpb25GbG93IiwiQHR5cGUiOiJkZmMtYjpBc1BsYW5uZWRDb25zdW1wdGlvbkZsb3ciLCJkZmMtYjpjb25zdW1lcyI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2NzE4ODUzMSIsImRmYy1iOmhhc1F1YW50aXR5IjoiXzpiMjY0MDA2In0seyJAaWQiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NjcxODg1MzEvQXNQbGFubmVkUHJvZHVjdGlvbkZsb3ciLCJAdHlwZSI6ImRmYy1iOkFzUGxhbm5lZFByb2R1Y3Rpb25GbG93IiwiZGZjLWI6aGFzUXVhbnRpdHkiOiJfOmIyNjQwMDciLCJkZmMtYjpwcm9kdWNlcyI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2NzIyMTI5OSJ9LHsiQGlkIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY3MTg4NTMxL0FzUGxhbm5lZFRyYW5zZm9ybWF0aW9uIiwiQHR5cGUiOiJkZmMtYjpBc1BsYW5uZWRUcmFuc2Zvcm1hdGlvbiIsImRmYy1iOmhhc0luY29tZSI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2NzE4ODUzMS9Bc1BsYW5uZWRDb25zdW1wdGlvbkZsb3ciLCJkZmMtYjpoYXNPdXRjb21lIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY3MTg4NTMxL0FzUGxhbm5lZFByb2R1Y3Rpb25GbG93In0seyJAaWQiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NjcxODg1MzEvQ2F0YWxvZ0l0ZW0iLCJAdHlwZSI6ImRmYy1iOkNhdGFsb2dJdGVtIiwiZGZjLWI6b2ZmZXJlZFRocm91Z2giOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NjcxODg1MzEvT2ZmZXIiLCJkZmMtYjpza3UiOiJOR0NTL1IzIiwiZGZjLWI6c3RvY2tMaW1pdGF0aW9uIjoiLTEifSx7IkBpZCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2NzE4ODUzMS9PZmZlciIsIkB0eXBlIjoiZGZjLWI6T2ZmZXIiLCJkZmMtYjpoYXNQcmljZSI6eyJAaWQiOiJfOmIyNjM5OTEifX0seyJAaWQiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NjcyMjEyOTkiLCJAdHlwZSI6ImRmYy1iOlN1cHBsaWVkUHJvZHVjdCIsImRmYy1iOmRlc2NyaXB0aW9uIjoiPHA+PHN0cm9uZz5DYW1lbGluYSwgYWxzbyBrbm93biBhcyBHb2xkIG9mIFBsZWFzdXJlLCBoYXMgYmVlbiBncm93biBpbiBFbmdsYW5kIGZvciB0aG91c2FuZHMgb2YgeWVhcnMgZm9yIGl0cyB0YXN0eSBzZWVkcyBhbmQgb2lsLiBTcHJpbmtsZSBvbiBzYWxhZHMsIHVzZSBpbiBiYWtpbmcsIGFkZCB0byBzbW9vdGhpZXMsIG9yIHVzZSBhcyBhIHZlZ2FuIGVnZyByZXBsYWNlbWVudC4gPC9zdHJvbmc+PC9wPlxuPCEtLSBzcGxpdCAtLT48aDM+Q29tcGxldGUgUHJvZHVjdCBEZXRhaWxzPC9oMz48cD5TcHJpbmtsZSBvbiBzYWxhZHMsIGFkZCB0byBzbW9vdGhpZXMsIHVzZSBpbiBiYWtpbmcuPC9wPlxuPGg1IGNsYXNzPVwicHJvZHVjdC1kZXRhaWwtdGl0bGVcIj5Db29raW5nIGluc3RydWN0aW9uczwvaDU+XG48cD5Tb2FrIDEgdGFibGVzcG9vbiBvZiBzZWVkcyBpbiAzIHRhYmxlc3Bvb25zIG9mIHdhcm0gd2F0ZXIgZm9yIDMwIG1pbnV0ZXMgdG8gcmVwbGFjZSBvbmUgZWdnIGluIHZlZ2FuIGJha2luZy48L3A+XG48aDUgY2xhc3M9XCJwcm9kdWN0LWRldGFpbC10aXRsZVwiPkluZ3JlZGllbnRzPC9oNT5cbjxwPkNhbWVsaW5hIHNlZWRzPC9wPlxuPGg1IGNsYXNzPVwicHJvZHVjdC1kZXRhaWwtdGl0bGVcIj5BbGxlcmd5IGluZm9ybWF0aW9uPC9oNT5cbjxwPk5vIEFsbGVyZ2VuczwvcD5cbjx0YWJsZSB3aWR0aD1cIjEwMCVcIj5cbjx0Ym9keT5cbjx0cj5cbjx0ZD48c3Ryb25nPlR5cGljYWwgdmFsdWVzPC9zdHJvbmc+PC90ZD5cbjx0ZD48c3Ryb25nPlBlciAxMDBnPC9zdHJvbmc+PC90ZD5cbjwvdHI+XG48dHI+XG48dGQ+RW5lcmd5PC90ZD5cbjx0ZD4xNDM5a0ogKDM0NmtjYWwpPC90ZD5cbjwvdHI+XG48dHI+XG48dGQ+RmF0PC90ZD5cbjx0ZD4xMi4xZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkPm9mIHdoaWNoIHNhdHVyYXRlczwvdGQ+XG48dGQ+MS43ZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkPkNhcmJvaHlkcmF0ZTwvdGQ+XG48dGQ+MTYuNGc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZD5vZiB3aGljaCBzdWdhcnM8L3RkPlxuPHRkPjEuMmc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZD5GaWJyZTwvdGQ+XG48dGQ+MzUuMWc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZD5Qcm90ZWluPC90ZD5cbjx0ZD4yNS40ZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkPlNhbHQ8L3RkPlxuPHRkPjBnPC90ZD5cbjwvdHI+XG48L3Rib2R5PlxuPC90YWJsZT48cD5DYW1lbGluYSBTZWVkcyBhcmUgaGlnaCBpbiBwcm90ZWluLCBhIGdvb2Qgc291cmNlIG9mIE9tZWdhIDMgb2lscyBhbmQgcmljaCBpbiBhbnRpb3hpZGFudHMgc3VjaCBhcyB2aXRhbWluIEU8L3A+PGg1IGNsYXNzPVwicHJvZHVjdC1kZXRhaWwtdGl0bGVcIj5Nb3JlPC9oNT5cbjxwPkdyb3duIGJ5IFBldGVyIEZhaXJzIGluIEVzc2V4IGFuZCBBbmR5IEhvd2FyZCBpbiBLZW50LjwvcD4iLCJkZmMtYjpoYXNRdWFudGl0eSI6Il86YjI2Mzk5OCIsImRmYy1iOmltYWdlIjoiaHR0cHM6Ly9jZG4uc2hvcGlmeS5jb20vcy9maWxlcy8xLzA3MzEvODQ4My83OTM5L3Byb2R1Y3RzL0NhbWVpbG5hLVNlZWRzLTE4MDB4MTIwMF84YzAwYTEwOC1kOGY3LTQ5MjAtOWJhYy03NThhMmM2YThiNTYuanBnP3Y9MTY3Nzc2MDc5NyIsImRmYy1iOm5hbWUiOiJDYW1lbGluYSBTZWVkIC0gQ2FzZSwgOCB4IDMwMGciLCJkZmMtYjpyZWZlcmVuY2VkQnkiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NjcyMjEyOTkvQ2F0YWxvZ0l0ZW0ifSx7IkBpZCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2NzIyMTI5OS9DYXRhbG9nSXRlbSIsIkB0eXBlIjoiZGZjLWI6Q2F0YWxvZ0l0ZW0iLCJkZmMtYjpvZmZlcmVkVGhyb3VnaCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ2NzIyMTI5OS9PZmZlciIsImRmYy1iOnNrdSI6Ik5HQ1MvQzgiLCJkZmMtYjpzdG9ja0xpbWl0YXRpb24iOiItMSJ9LHsiQGlkIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDY3MjIxMjk5L09mZmVyIiwiQHR5cGUiOiJkZmMtYjpPZmZlciIsImRmYy1iOmhhc1ByaWNlIjp7IkBpZCI6Il86YjI2Mzk5OSJ9fSx7IkBpZCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ3MDkyNDA4MyIsIkB0eXBlIjoiZGZjLWI6U3VwcGxpZWRQcm9kdWN0IiwiZGZjLWI6ZGVzY3JpcHRpb24iOiI8dGFibGUgd2lkdGg9XCIxMDAlXCI+XG48dGJvZHk+XG48dHIgc3R5bGU9XCJib3JkZXI6IDBweDtcIj5cbjx0ZCBiZ2NvbG9yPVwiI2Q2ZmJlZFwiIHN0eWxlPVwiY29sb3I6ICMwMDAwMDA7IGJvcmRlcjogMHB4OyB3aWR0aDogNTI2cHg7XCI+PGI+VGhlIHJpY2gsIHNtb2t5IGFuZCBzYWx0eSB0YXN0ZSBvZiBkdWxzZSBhZGRzIGRlcHRoIHRvIGRpc2hlcyBvZiBhbGwga2luZHMuPC9iPjwvdGQ+XG48L3RyPlxuPC90Ym9keT5cbjwvdGFibGU+XG48cD5FYXRpbmcgZHVsc2UgaXMgYW4gYW5jaWVudCB0cmFkaXRpb24gaW4gU2NvdHMgYW5kIElyaXNoIGN1bHR1cmUuIEl0IGFkZHMgYSB3b25kZXJmdWwgZGVwdGggb2YgZmxhdm91ciBhbmQgaXMgcmljaCBpbiBtaW5lcmFscyBhbmQgcHJvdGVpbi48L3A+XG48cD5Tb21ldGltZXMga25vd24gYXMgJ3ZlZ2V0YXJpYW4gYmFjb24nIGl0IGhhcyBhIHdvbmRlcmZ1bCByb2J1c3QgZmxhdm91ciB0aGF0IHBhaXJzIHdlbGwgd2l0aCBzZWFmb29kLCBsZWFmeSBncmVlbnMgYW5kIHRvbWF0b2VzLjwvcD5cbjxwPk1hcmEgU2Vhd2VlZCBpcyBoYXJ2ZXN0ZWQgc3VzdGFpbmFibHkgZnJvbSB0aGUgcHVyZSwgd2lsZCB3YXRlcnMgYXJvdW5kIFNjb3RsYW5kIGFuZCBJcmVsYW5kLsKgPHNwYW4+VG8gYXZvaWQgY29udGFtaW5hdGlvbiwgdGhlIHNlYXdlZWQgaXMgcGFja2VkIGludG8gc2VhbGVkIHNhY2tzIGJlZm9yZSBiZWluZyBicm91Z2h0IHVwIHRoZSBiZWFjaCBhbmQgZGVsaXZlcmVkIGZyZXNoLCBkaXJlY3RseSB0byB0aGUgZmFjdG9yeS4gVGhlIHNlYXdlZWQgaXMgcGlja2VkIGFuZCBwcm9jZXNzZWQgd2l0aGluIDI0IGhvdXJzIHRvIGxvY2sgaW4gZmxhdm91ciwgZW5zdXJlIHF1YWxpdHkgYW5kIHNlY3VyZSBtYXhpbXVtIG51dHJpdGlvbmFsIGJlbmVmaXRzLjwvc3Bhbj48L3A+PGg1IGNsYXNzPVwicHJvZHVjdC1kZXRhaWwtdGl0bGVcIj5Ib3cgdG8gdXNlPC9oNT5cbjxwPkR1bHNlIGhhcyBhIG5hdHVyYWwsIGxpbmdlcmluZyBzbW9reSB0YXN0ZS4gSXQncyBkZWxpY2lvdXMgd2hlbiBnZW5lcm91c2x5IHNoYWtlbiBvbiBkYXJrIGdyZWVuIHZlZ2V0YWJsZXMgYW5kIHJpY2ggcHVsc2UgZGlzaGVzLjwvcD5cbjxwPkZvciBhbiBleHRyYSBzYXZvdXJ5IGhpdCB3aXRob3V0IHRoZSBzYWx0LCB1c2UgZHVsc2UgZmxha2VzIHRvIHNlYXNvbiByb2FzdGVkIHZlZ2V0YWJsZSwgb3Igc3RpciBpbnRvIGJvbG9nbmVzZSBzYXVjZSBvciBjaGlsbGkgYmVmb3JlIHNlcnZpbmcuIER1bHNlIGlzIGFsc28gcGVyZmVjdCBzY2F0dGVyZWQgbWl4ZWQgdGhyb3VnaCBjcmlzcHkga2FsZS48L3A+XG48cD5Gb3IgYW4gdW51c3VhbCBzYWx0ZWQgY2FyYW1lbC1zdHlsZSB0d2lzdCwgdHJ5IHBhaXJpbmcgZHVsc2Ugd2l0aCBkYXJrIGNob2NvbGF0ZS4gSnVzdCBjb21iaW5lIGEgcGluY2ggb2YgZHVsc2Ugd2l0aCB0aGUgb3RoZXIgZHJ5IGluZ3JlZGllbnRzIGluIGFueSBicm93bmllIG9yIHRydWZmbGUgcmVjaXBlLjwvcD5cbjxoNSBjbGFzcz1cInByb2R1Y3QtZGV0YWlsLXRpdGxlXCI+SW5ncmVkaWVudHM8L2g1PlxuPHA+MTAwJSBEdWxzZSAoPGVtPlBhbG1hcmlhIHBhbG1hdGE8L2VtPik8L3A+XG48aDUgY2xhc3M9XCJwcm9kdWN0LWRldGFpbC10aXRsZVwiPkFsbGVyZ3kgaW5mb3JtYXRpb248L2g1PlxuPHA+TWF5IGNvbnRhaW4gZmlzaCwgY3J1c3RhY2VhbnMsIG1vbGx1c2NzLlxuPC9wPlxuPHRhYmxlIHdpZHRoPVwiMTAwJVwiPlxuPHRib2R5PlxuPHRyPlxuPHRkPjxzdHJvbmc+VHlwaWNhbCB2YWx1ZXM8L3N0cm9uZz48L3RkPlxuPHRkPjxzdHJvbmc+UGVyIDEwMGc8L3N0cm9uZz48L3RkPlxuPC90cj5cbjx0cj5cbjx0ZD5FbmVyZ3k8L3RkPlxuPHRkPjk3NGtKICgyMzRrY2FsKTwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkPkZhdDwvdGQ+XG48dGQ+XG48cD4xLjVnPC9wPlxuPC90ZD5cbjwvdHI+XG48dHI+XG48dGQ+b2Ygd2hpY2ggc2F0dXJhdGVzPC90ZD5cbjx0ZD4wLjRnPC90ZD5cbjwvdHI+XG48dHI+XG48dGQ+Q2FyYm9oeWRyYXRlPC90ZD5cbjx0ZD4yMi44ZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkPm9mIHdoaWNoIHN1Z2FyczwvdGQ+XG48dGQ+MS4wZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkPkZpYnJlPC90ZD5cbjx0ZD4zNi45ZzwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkPlByb3RlaW48L3RkPlxuPHRkPjEzLjhnPC90ZD5cbjwvdHI+XG48dHI+XG48dGQ+U2FsdDwvdGQ+XG48dGQ+NC45ZzwvdGQ+XG48L3RyPlxuPC90Ym9keT5cbjwvdGFibGU+PGg1IGNsYXNzPVwicHJvZHVjdC1kZXRhaWwtdGl0bGVcIj5Nb3JlPC9oNT5cbjxwPlByb2R1Y3Qgb2YgU2NvdGxhbmQ8YnI+R3JlYXQgVGFzdGUgYXdhcmQgd2lubmVyPGJyPlN1aXRhYmxlIGZvciB2ZWdhbnMgYW5kIHZlZ2V0YXJpYW5zPGJyPkEgc291cmNlIG9mIGlvZGluZSwgY2FsY2l1bSwgcG90YXNzaXVtLCBtYWduZXNpdW0sIG1hbmdhbmVzZSwgY29wcGVyLCBpcm9uLCB6aW5jPC9wPiIsImRmYy1iOmhhc1F1YW50aXR5IjoiXzpiMjYzOTkyIiwiZGZjLWI6aW1hZ2UiOiJodHRwczovL2Nkbi5zaG9waWZ5LmNvbS9zL2ZpbGVzLzEvMDczMS84NDgzLzc5MzkvcHJvZHVjdHMvTWFyYS1EdWxzZS0zMGctdGluLTE4MDB4MTIwMC5qcGc/dj0xNjc3NzYwODMyIiwiZGZjLWI6bmFtZSI6IkR1bHNlIEZsYWtlcyAtIFJldGFpbCBwb3VjaCwgMzBnIiwiZGZjLWI6cmVmZXJlbmNlZEJ5IjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDcwOTI0MDgzL0NhdGFsb2dJdGVtIn0seyJAaWQiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NzA5MjQwODMvQXNQbGFubmVkQ29uc3VtcHRpb25GbG93IiwiQHR5cGUiOiJkZmMtYjpBc1BsYW5uZWRDb25zdW1wdGlvbkZsb3ciLCJkZmMtYjpjb25zdW1lcyI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ3MDkyNDA4MyIsImRmYy1iOmhhc1F1YW50aXR5IjoiXzpiMjY0MDA4In0seyJAaWQiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NzA5MjQwODMvQXNQbGFubmVkUHJvZHVjdGlvbkZsb3ciLCJAdHlwZSI6ImRmYy1iOkFzUGxhbm5lZFByb2R1Y3Rpb25GbG93IiwiZGZjLWI6aGFzUXVhbnRpdHkiOiJfOmIyNjQwMDkiLCJkZmMtYjpwcm9kdWNlcyI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ3MDk1Njg1MSJ9LHsiQGlkIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDcwOTI0MDgzL0FzUGxhbm5lZFRyYW5zZm9ybWF0aW9uIiwiQHR5cGUiOiJkZmMtYjpBc1BsYW5uZWRUcmFuc2Zvcm1hdGlvbiIsImRmYy1iOmhhc0luY29tZSI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ3MDkyNDA4My9Bc1BsYW5uZWRDb25zdW1wdGlvbkZsb3ciLCJkZmMtYjpoYXNPdXRjb21lIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDcwOTI0MDgzL0FzUGxhbm5lZFByb2R1Y3Rpb25GbG93In0seyJAaWQiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NzA5MjQwODMvQ2F0YWxvZ0l0ZW0iLCJAdHlwZSI6ImRmYy1iOkNhdGFsb2dJdGVtIiwiZGZjLWI6b2ZmZXJlZFRocm91Z2giOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NzA5MjQwODMvT2ZmZXIiLCJkZmMtYjpza3UiOiJNQVIvV0RVTFMvUDMiLCJkZmMtYjpzdG9ja0xpbWl0YXRpb24iOiI1In0seyJAaWQiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NzA5MjQwODMvT2ZmZXIiLCJAdHlwZSI6ImRmYy1iOk9mZmVyIiwiZGZjLWI6aGFzUHJpY2UiOnsiQGlkIjoiXzpiMjYzOTkzIn19LHsiQGlkIjoiaHR0cHM6Ly9lbnYtMDEwNTgzMS5qY2xvdWQtdmVyLWpwZS5pay1zZXJ2ZXIuY29tL2FwaS9kZmMvRW50ZXJwcmlzZXMvdGVzdC1ob2RtZWRvZC9TdXBwbGllZFByb2R1Y3RzLzQ0NTE5NDcwOTU2ODUxIiwiQHR5cGUiOiJkZmMtYjpTdXBwbGllZFByb2R1Y3QiLCJkZmMtYjpkZXNjcmlwdGlvbiI6Ijx0YWJsZSB3aWR0aD1cIjEwMCVcIj5cbjx0Ym9keT5cbjx0ciBzdHlsZT1cImJvcmRlcjogMHB4O1wiPlxuPHRkIGJnY29sb3I9XCIjZDZmYmVkXCIgc3R5bGU9XCJjb2xvcjogIzAwMDAwMDsgYm9yZGVyOiAwcHg7IHdpZHRoOiA1MjZweDtcIj48Yj5UaGUgcmljaCwgc21va3kgYW5kIHNhbHR5IHRhc3RlIG9mIGR1bHNlIGFkZHMgZGVwdGggdG8gZGlzaGVzIG9mIGFsbCBraW5kcy48L2I+PC90ZD5cbjwvdHI+XG48L3Rib2R5PlxuPC90YWJsZT5cbjxwPkVhdGluZyBkdWxzZSBpcyBhbiBhbmNpZW50IHRyYWRpdGlvbiBpbiBTY290cyBhbmQgSXJpc2ggY3VsdHVyZS4gSXQgYWRkcyBhIHdvbmRlcmZ1bCBkZXB0aCBvZiBmbGF2b3VyIGFuZCBpcyByaWNoIGluIG1pbmVyYWxzIGFuZCBwcm90ZWluLjwvcD5cbjxwPlNvbWV0aW1lcyBrbm93biBhcyAndmVnZXRhcmlhbiBiYWNvbicgaXQgaGFzIGEgd29uZGVyZnVsIHJvYnVzdCBmbGF2b3VyIHRoYXQgcGFpcnMgd2VsbCB3aXRoIHNlYWZvb2QsIGxlYWZ5IGdyZWVucyBhbmQgdG9tYXRvZXMuPC9wPlxuPHA+TWFyYSBTZWF3ZWVkIGlzIGhhcnZlc3RlZCBzdXN0YWluYWJseSBmcm9tIHRoZSBwdXJlLCB3aWxkIHdhdGVycyBhcm91bmQgU2NvdGxhbmQgYW5kIElyZWxhbmQuwqA8c3Bhbj5UbyBhdm9pZCBjb250YW1pbmF0aW9uLCB0aGUgc2Vhd2VlZCBpcyBwYWNrZWQgaW50byBzZWFsZWQgc2Fja3MgYmVmb3JlIGJlaW5nIGJyb3VnaHQgdXAgdGhlIGJlYWNoIGFuZCBkZWxpdmVyZWQgZnJlc2gsIGRpcmVjdGx5IHRvIHRoZSBmYWN0b3J5LiBUaGUgc2Vhd2VlZCBpcyBwaWNrZWQgYW5kIHByb2Nlc3NlZCB3aXRoaW4gMjQgaG91cnMgdG8gbG9jayBpbiBmbGF2b3VyLCBlbnN1cmUgcXVhbGl0eSBhbmQgc2VjdXJlIG1heGltdW0gbnV0cml0aW9uYWwgYmVuZWZpdHMuPC9zcGFuPjwvcD48aDUgY2xhc3M9XCJwcm9kdWN0LWRldGFpbC10aXRsZVwiPkhvdyB0byB1c2U8L2g1PlxuPHA+RHVsc2UgaGFzIGEgbmF0dXJhbCwgbGluZ2VyaW5nIHNtb2t5IHRhc3RlLiBJdCdzIGRlbGljaW91cyB3aGVuIGdlbmVyb3VzbHkgc2hha2VuIG9uIGRhcmsgZ3JlZW4gdmVnZXRhYmxlcyBhbmQgcmljaCBwdWxzZSBkaXNoZXMuPC9wPlxuPHA+Rm9yIGFuIGV4dHJhIHNhdm91cnkgaGl0IHdpdGhvdXQgdGhlIHNhbHQsIHVzZSBkdWxzZSBmbGFrZXMgdG8gc2Vhc29uIHJvYXN0ZWQgdmVnZXRhYmxlLCBvciBzdGlyIGludG8gYm9sb2duZXNlIHNhdWNlIG9yIGNoaWxsaSBiZWZvcmUgc2VydmluZy4gRHVsc2UgaXMgYWxzbyBwZXJmZWN0IHNjYXR0ZXJlZCBtaXhlZCB0aHJvdWdoIGNyaXNweSBrYWxlLjwvcD5cbjxwPkZvciBhbiB1bnVzdWFsIHNhbHRlZCBjYXJhbWVsLXN0eWxlIHR3aXN0LCB0cnkgcGFpcmluZyBkdWxzZSB3aXRoIGRhcmsgY2hvY29sYXRlLiBKdXN0IGNvbWJpbmUgYSBwaW5jaCBvZiBkdWxzZSB3aXRoIHRoZSBvdGhlciBkcnkgaW5ncmVkaWVudHMgaW4gYW55IGJyb3duaWUgb3IgdHJ1ZmZsZSByZWNpcGUuPC9wPlxuPGg1IGNsYXNzPVwicHJvZHVjdC1kZXRhaWwtdGl0bGVcIj5JbmdyZWRpZW50czwvaDU+XG48cD4xMDAlIER1bHNlICg8ZW0+UGFsbWFyaWEgcGFsbWF0YTwvZW0+KTwvcD5cbjxoNSBjbGFzcz1cInByb2R1Y3QtZGV0YWlsLXRpdGxlXCI+QWxsZXJneSBpbmZvcm1hdGlvbjwvaDU+XG48cD5NYXkgY29udGFpbiBmaXNoLCBjcnVzdGFjZWFucywgbW9sbHVzY3MuXG48L3A+XG48dGFibGUgd2lkdGg9XCIxMDAlXCI+XG48dGJvZHk+XG48dHI+XG48dGQ+PHN0cm9uZz5UeXBpY2FsIHZhbHVlczwvc3Ryb25nPjwvdGQ+XG48dGQ+PHN0cm9uZz5QZXIgMTAwZzwvc3Ryb25nPjwvdGQ+XG48L3RyPlxuPHRyPlxuPHRkPkVuZXJneTwvdGQ+XG48dGQ+OTc0a0ogKDIzNGtjYWwpPC90ZD5cbjwvdHI+XG48dHI+XG48dGQ+RmF0PC90ZD5cbjx0ZD5cbjxwPjEuNWc8L3A+XG48L3RkPlxuPC90cj5cbjx0cj5cbjx0ZD5vZiB3aGljaCBzYXR1cmF0ZXM8L3RkPlxuPHRkPjAuNGc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZD5DYXJib2h5ZHJhdGU8L3RkPlxuPHRkPjIyLjhnPC90ZD5cbjwvdHI+XG48dHI+XG48dGQ+b2Ygd2hpY2ggc3VnYXJzPC90ZD5cbjx0ZD4xLjBnPC90ZD5cbjwvdHI+XG48dHI+XG48dGQ+RmlicmU8L3RkPlxuPHRkPjM2LjlnPC90ZD5cbjwvdHI+XG48dHI+XG48dGQ+UHJvdGVpbjwvdGQ+XG48dGQ+MTMuOGc8L3RkPlxuPC90cj5cbjx0cj5cbjx0ZD5TYWx0PC90ZD5cbjx0ZD40LjlnPC90ZD5cbjwvdHI+XG48L3Rib2R5PlxuPC90YWJsZT48aDUgY2xhc3M9XCJwcm9kdWN0LWRldGFpbC10aXRsZVwiPk1vcmU8L2g1PlxuPHA+UHJvZHVjdCBvZiBTY290bGFuZDxicj5HcmVhdCBUYXN0ZSBhd2FyZCB3aW5uZXI8YnI+U3VpdGFibGUgZm9yIHZlZ2FucyBhbmQgdmVnZXRhcmlhbnM8YnI+QSBzb3VyY2Ugb2YgaW9kaW5lLCBjYWxjaXVtLCBwb3Rhc3NpdW0sIG1hZ25lc2l1bSwgbWFuZ2FuZXNlLCBjb3BwZXIsIGlyb24sIHppbmM8L3A+IiwiZGZjLWI6aGFzUXVhbnRpdHkiOiJfOmIyNjQwMDAiLCJkZmMtYjppbWFnZSI6Imh0dHBzOi8vY2RuLnNob3BpZnkuY29tL3MvZmlsZXMvMS8wNzMxLzg0ODMvNzkzOS9wcm9kdWN0cy9NYXJhLUR1bHNlLTMwZy10aW4tMTgwMHgxMjAwLmpwZz92PTE2Nzc3NjA4MzIiLCJkZmMtYjpuYW1lIjoiRHVsc2UgRmxha2VzIC0gQ2FzZSwgMTAgeCAzMGciLCJkZmMtYjpyZWZlcmVuY2VkQnkiOiJodHRwczovL2Vudi0wMTA1ODMxLmpjbG91ZC12ZXItanBlLmlrLXNlcnZlci5jb20vYXBpL2RmYy9FbnRlcnByaXNlcy90ZXN0LWhvZG1lZG9kL1N1cHBsaWVkUHJvZHVjdHMvNDQ1MTk0NzA5NTY4NTEvQ2F0YWxvZ0l0ZW0ifSx7IkBpZCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ3MDk1Njg1MS9DYXRhbG9nSXRlbSIsIkB0eXBlIjoiZGZjLWI6Q2F0YWxvZ0l0ZW0iLCJkZmMtYjpvZmZlcmVkVGhyb3VnaCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ3MDk1Njg1MS9PZmZlciIsImRmYy1iOnNrdSI6Ik1BUi9XRFVMUy9DWCIsImRmYy1iOnN0b2NrTGltaXRhdGlvbiI6IjIifSx7IkBpZCI6Imh0dHBzOi8vZW52LTAxMDU4MzEuamNsb3VkLXZlci1qcGUuaWstc2VydmVyLmNvbS9hcGkvZGZjL0VudGVycHJpc2VzL3Rlc3QtaG9kbWVkb2QvU3VwcGxpZWRQcm9kdWN0cy80NDUxOTQ3MDk1Njg1MS9PZmZlciIsIkB0eXBlIjoiZGZjLWI6T2ZmZXIiLCJkZmMtYjpoYXNQcmljZSI6eyJAaWQiOiJfOmIyNjQwMDEifX1dfQ==
+ recorded_at: Wed, 26 Feb 2025 04:26:41 GMT
+recorded_with: VCR 6.2.0
diff --git a/spec/jobs/backorder_job_spec.rb b/spec/jobs/backorder_job_spec.rb
index 81328e6cf1..93425ebec3 100644
--- a/spec/jobs/backorder_job_spec.rb
+++ b/spec/jobs/backorder_job_spec.rb
@@ -8,6 +8,10 @@ RSpec.describe BackorderJob do
let(:chia_seed) { chia_item.variant }
let(:chia_item) { order.line_items.second }
let(:user) { order.distributor.owner }
+ let(:catalog_json) { file_fixture("fdc-catalog.json").read }
+ let(:catalog_url) {
+ "https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts"
+ }
let(:product_link) {
"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635"
}
@@ -105,6 +109,27 @@ RSpec.describe BackorderJob do
perform_enqueued_jobs(only: CompleteBackorderJob)
end
+ it "skips unavailable items" do
+ order.order_cycle = create(
+ :simple_order_cycle,
+ distributors: [order.distributor],
+ variants: [beans],
+ )
+ beans.on_demand = true
+ beans.on_hand = -3
+ beans.semantic_links << SemanticLink.new(
+ semantic_id: "#{product_link}-removed"
+ )
+
+ stub_request(:get, catalog_url).to_return(body: catalog_json)
+
+ expect {
+ subject.place_backorder(order)
+ }.not_to change { beans.on_hand }
+
+ # And no error was raised, no order was placed.
+ end
+
it "succeeds when no work to be done" do
# The database can change before the job is run. So maybe there's nothing
# to do.
diff --git a/spec/jobs/open_order_cycle_job_spec.rb b/spec/jobs/open_order_cycle_job_spec.rb
new file mode 100644
index 0000000000..5c8574535e
--- /dev/null
+++ b/spec/jobs/open_order_cycle_job_spec.rb
@@ -0,0 +1,110 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe OpenOrderCycleJob do
+ let(:now){ Time.zone.now }
+ let(:order_cycle) { create(:simple_order_cycle, orders_open_at: now) }
+ subject { OpenOrderCycleJob.perform_now(order_cycle.id) }
+
+ around do |example|
+ Timecop.freeze(now) { example.run }
+ end
+
+ it "marks as open" do
+ expect {
+ subject
+ order_cycle.reload
+ }
+ .to change { order_cycle.opened_at }
+
+ expect(order_cycle.opened_at).to be_within(1).of(now)
+ end
+
+ it "enqueues webhook job" do
+ expect(OrderCycles::WebhookService)
+ .to receive(:create_webhook_job).with(order_cycle, 'order_cycle.opened', now).once
+
+ subject
+ end
+
+ describe "syncing remote products" do
+ let!(:user) { create(:testdfc_user, owned_enterprises: [enterprise]) }
+
+ let(:enterprise) { create(:supplier_enterprise) }
+ let!(:variant) { create(:variant, name: "Sauce", supplier_id: enterprise.id) }
+ let!(:order_cycle) {
+ create(:simple_order_cycle, orders_open_at: now,
+ suppliers: [enterprise], variants: [variant])
+ }
+
+ it "synchronises products from a FDC catalog", vcr: true do
+ user.update!(oidc_account: build(:testdfc_account))
+ # One product is existing in OFN
+ product_id =
+ "https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635"
+ variant.semantic_links << SemanticLink.new(semantic_id: product_id)
+
+ expect {
+ subject
+ variant.reload
+ order_cycle.reload
+ }.to change { order_cycle.opened_at }
+ .and change { enterprise.supplied_products.count }.by(0) # It shouldn't add, only update
+ .and change { variant.display_name }
+ .and change { variant.unit_value }
+ # 18.85 wholesale variant price divided by 12 cans in the slab.
+ .and change { variant.price }.to(1.57)
+ .and change { variant.on_demand }.to(true)
+ .and change { variant.on_hand }.by(0)
+ .and query_database 46
+ end
+ end
+
+ describe "concurrency", concurrency: true do
+ let(:breakpoint) { Mutex.new }
+
+ it "doesn't open order cycle twice" do
+ # Pause in the middle of the job to test if the second job is trying
+ # to do the same thing at the same time.
+ breakpoint.lock
+ expect_any_instance_of(OpenOrderCycleJob).to(
+ receive(:sync_remote_variants).and_wrap_original do |method, *args|
+ breakpoint.synchronize { nil }
+ method.call(*args)
+ end
+ )
+
+ expect(OrderCycles::WebhookService)
+ .to receive(:create_webhook_job).with(order_cycle, 'order_cycle.opened', now).once
+
+ # Start two jobs in parallel:
+ threads = [1, 2].map do
+ Thread.new do
+ # Disable printing expected error
+ Thread.current.report_on_exception = false
+
+ OpenOrderCycleJob.perform_now(order_cycle.id)
+ end
+ end
+
+ # Wait for both to jobs to pause.
+ # This can reveal a race condition.
+ sleep 0.1
+
+ # Resume and complete both jobs:
+ breakpoint.unlock
+
+ # Join the threads until an error is raised.
+ # We expect one of them to raise an error but we don't know which one.
+ expect {
+ threads.pop.join
+ threads.pop.join
+ }.to raise_error ActiveRecord::RecordNotFound
+
+ # If the first `join` raised an error, we still need to wait for the
+ # second thread to finish:
+ threads.pop.join if threads.present?
+ end
+ end
+end
diff --git a/spec/jobs/order_cycle_opened_job_spec.rb b/spec/jobs/order_cycle_opened_job_spec.rb
deleted file mode 100644
index caf5ee6ef1..0000000000
--- a/spec/jobs/order_cycle_opened_job_spec.rb
+++ /dev/null
@@ -1,62 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-RSpec.describe OrderCycleOpenedJob do
- let(:oc_opened_before) {
- create(:order_cycle, orders_open_at: 1.hour.ago)
- }
- let(:oc_opened_now) {
- create(:order_cycle, orders_open_at: Time.zone.now)
- }
- let(:oc_opening_soon) {
- create(:order_cycle, orders_open_at: 1.minute.from_now)
- }
-
- it "enqueues jobs for recently opened order cycles only" do
- expect(OrderCycles::WebhookService)
- .to receive(:create_webhook_job).with(oc_opened_now, 'order_cycle.opened')
-
- expect(OrderCycles::WebhookService)
- .not_to receive(:create_webhook_job).with(oc_opened_before, 'order_cycle.opened')
-
- expect(OrderCycles::WebhookService)
- .not_to receive(:create_webhook_job).with(oc_opening_soon, 'order_cycle.opened')
-
- OrderCycleOpenedJob.perform_now
- end
-
- describe "concurrency", concurrency: true do
- let(:breakpoint) { Mutex.new }
-
- it "doesn't place duplicate job when run concurrently" do
- oc_opened_now
-
- # Pause jobs when placing new job:
- breakpoint.lock
- allow(OrderCycleOpenedJob).to(
- receive(:new).and_wrap_original do |method, *args|
- breakpoint.synchronize {}
- method.call(*args)
- end
- )
-
- expect(OrderCycles::WebhookService)
- .to receive(:create_webhook_job).with(oc_opened_now, 'order_cycle.opened').once
-
- # Start two jobs in parallel:
- threads = [
- Thread.new { OrderCycleOpenedJob.perform_now },
- Thread.new { OrderCycleOpenedJob.perform_now },
- ]
-
- # Wait for both to jobs to pause.
- # This can reveal a race condition.
- sleep 0.1
-
- # Resume and complete both jobs:
- breakpoint.unlock
- threads.each(&:join)
- end
- end
-end
diff --git a/spec/jobs/subscription_placement_job_spec.rb b/spec/jobs/subscription_placement_job_spec.rb
index e2828f18b5..26238df68b 100644
--- a/spec/jobs/subscription_placement_job_spec.rb
+++ b/spec/jobs/subscription_placement_job_spec.rb
@@ -202,7 +202,7 @@ RSpec.describe SubscriptionPlacementJob do
breakpoint.lock
allow(PlaceProxyOrder).to(
receive(:new).and_wrap_original do |method, *args|
- breakpoint.synchronize {}
+ breakpoint.synchronize { nil }
method.call(*args)
end
)
diff --git a/spec/jobs/trigger_order_cycles_to_open_job_spec.rb b/spec/jobs/trigger_order_cycles_to_open_job_spec.rb
new file mode 100644
index 0000000000..9b27202503
--- /dev/null
+++ b/spec/jobs/trigger_order_cycles_to_open_job_spec.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe TriggerOrderCyclesToOpenJob do
+ let(:oc_opened_before) {
+ create(:simple_order_cycle, orders_open_at: 1.hour.ago)
+ }
+ let(:oc_opened_now) {
+ create(:simple_order_cycle, orders_open_at: Time.zone.now)
+ }
+ let(:oc_opening_soon) {
+ create(:simple_order_cycle, orders_open_at: 1.minute.from_now)
+ }
+
+ it "enqueues jobs for recently opened order cycles only" do
+ expect{ TriggerOrderCyclesToOpenJob.perform_now }
+ .to enqueue_job(OpenOrderCycleJob).with(oc_opened_now.id)
+ .and enqueue_job(OpenOrderCycleJob).with(oc_opened_before.id).exactly(0).times
+ .and enqueue_job(OpenOrderCycleJob).with(oc_opening_soon.id).exactly(0).times
+ end
+end
diff --git a/spec/jobs/webhook_delivery_job_spec.rb b/spec/jobs/webhook_delivery_job_spec.rb
index 0b09ed7bde..5383f5e87c 100644
--- a/spec/jobs/webhook_delivery_job_spec.rb
+++ b/spec/jobs/webhook_delivery_job_spec.rb
@@ -3,9 +3,10 @@
require 'spec_helper'
RSpec.describe WebhookDeliveryJob do
- subject { WebhookDeliveryJob.new(url, event, data) }
+ subject { WebhookDeliveryJob.new(url, event, data, at:) }
let(:url) { 'https://test/endpoint' }
let(:event) { 'order_cycle.opened' }
+ let(:at) { 1.second.ago }
let(:data) {
{
order_cycle_id: 123, name: "Order cycle 1", open_at: 1.minute.ago.to_s, tags: ["tag1", "tag2"]
@@ -25,7 +26,7 @@ RSpec.describe WebhookDeliveryJob do
Timecop.freeze do
expected_body = {
id: /.+/,
- at: Time.zone.now.to_s,
+ at: at.to_s,
event:,
data:,
}
diff --git a/spec/lib/reports/report_loader_spec.rb b/spec/lib/reports/report_loader_spec.rb
index af2b877833..a7a1247ddd 100644
--- a/spec/lib/reports/report_loader_spec.rb
+++ b/spec/lib/reports/report_loader_spec.rb
@@ -5,13 +5,13 @@ require 'spec_helper'
module Reporting
module Reports
module Bananas
- class Base; end
- class Green; end
- class Yellow; end
+ const_set "Base", Class.new
+ const_set "Green", Class.new
+ const_set "Yellow", Class.new
end
module Orange
- class OrangeReport; end
+ const_set "OrangeReport", Class.new
end
end
end
diff --git a/spec/mailers/enterprise_mailer_spec.rb b/spec/mailers/enterprise_mailer_spec.rb
index e7de3e3a89..797dd78ddc 100644
--- a/spec/mailers/enterprise_mailer_spec.rb
+++ b/spec/mailers/enterprise_mailer_spec.rb
@@ -3,25 +3,31 @@
require 'spec_helper'
RSpec.describe EnterpriseMailer do
- let!(:enterprise) { create(:enterprise) }
- let!(:user) { create(:user) }
+ let(:enterprise) { build(:enterprise, name: "Fred's Farm") }
describe "#welcome" do
- it "sends a welcome email when given an enterprise" do
- EnterpriseMailer.welcome(enterprise).deliver_now
+ subject(:mail) { EnterpriseMailer.welcome(enterprise) }
- mail = ActionMailer::Base.deliveries.first
+ it "sends a welcome email when given an enterprise" do
expect(mail.subject)
- .to eq "#{enterprise.name} is now on #{Spree::Config[:site_name]}"
+ .to eq "Fred's Farm is now on OFN Demo Site"
+ end
+
+ it "does not set a reply-to email" do
+ expect(mail.reply_to).to eq nil
end
end
describe "#manager_invitation" do
+ subject(:mail) { EnterpriseMailer.manager_invitation(enterprise, user) }
+ let(:user) { build(:user) }
+
it "should send a manager invitation email when given an enterprise and user" do
- EnterpriseMailer.manager_invitation(enterprise, user).deliver_now
- expect(ActionMailer::Base.deliveries.count).to eq 1
- mail = ActionMailer::Base.deliveries.first
- expect(mail.subject).to eq "#{enterprise.name} has invited you to be a manager"
+ expect(mail.subject).to eq "Fred's Farm has invited you to be a manager"
+ end
+
+ it "sets a reply-to of the enterprise email" do
+ expect(mail.reply_to).to eq([enterprise.contact.email])
end
end
end
diff --git a/spec/mailers/order_mailer_spec.rb b/spec/mailers/order_mailer_spec.rb
index a991f8659d..345ad9247a 100644
--- a/spec/mailers/order_mailer_spec.rb
+++ b/spec/mailers/order_mailer_spec.rb
@@ -69,6 +69,10 @@ RSpec.describe Spree::OrderMailer do
expect(email.body).to include('Payment summary')
end
+ it "sets a reply-to of the customer email" do
+ expect(email.reply_to).to eq([order.email])
+ end
+
context 'when the order has outstanding balance' do
before { allow(order).to receive(:new_outstanding_balance) { 123 } }
@@ -150,6 +154,28 @@ RSpec.describe Spree::OrderMailer do
it "includes a link to the cancelled order in admin" do
expect(mail.body).to match /#{admin_order_link_href}/
end
+
+ it "sets a reply-to of the customer email" do
+ expect(mail.reply_to).to eq([order.email])
+ end
+ end
+
+ describe "#cancel_email (for_customer)" do
+ let(:distributor) { create(:distributor_enterprise) }
+ let(:order) { create(:order, distributor:, state: "canceled") }
+ let(:mail) { Spree::OrderMailer.cancel_email(order) }
+
+ it "sends an email to the customer" do
+ expect(mail.to).to eq([order.email])
+ end
+
+ it "displays the order number" do
+ expect(mail.body).to include(order.number.to_s)
+ end
+
+ it "sets a reply-to of the customer email" do
+ expect(mail.reply_to).to eq([order.distributor.contact.email])
+ end
end
describe "order confimation" do
@@ -245,6 +271,7 @@ RSpec.describe Spree::OrderMailer do
expect(deliveries.count).to eq(1)
expect(deliveries.first.attachments.count).to eq(1)
expect(deliveries.first.attachments.first.filename).to eq(attachment_filename)
+ expect(email.reply_to).to eq([order.distributor.contact.email])
end
end
diff --git a/spec/mailers/payment_mailer_spec.rb b/spec/mailers/payment_mailer_spec.rb
new file mode 100644
index 0000000000..cee814ef16
--- /dev/null
+++ b/spec/mailers/payment_mailer_spec.rb
@@ -0,0 +1,46 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe PaymentMailer do
+ describe '#payment_mailer' do
+ let(:enterprise) { create(:enterprise) }
+ let(:payment_method) {
+ create(:payment_method, distributors: [order.distributor])
+ }
+ let(:payment) {
+ create(:payment, order:, payment_method:)
+ }
+ let(:order) { create(:completed_order_with_totals) }
+
+ context "authorize payment email" do
+ subject(:email) { described_class.authorize_payment(payment) }
+
+ it "includes the distributor's name in the subject" do
+ expect(email.subject).to include("authorize your payment to #{order.distributor.name}")
+ end
+
+ it "sets a reply-to of the customer email" do
+ expect(email.reply_to).to eq([order.distributor.contact.email])
+ end
+
+ it "includes a link to authorize the payment" do
+ link = "http://test.host/payments/#{payment.id}/authorize"
+ expect(email.text_part.body).to match link
+ expect(html_body(email)).to have_link link, href: link
+ end
+ end
+
+ context "authorization required email" do
+ subject(:email) { described_class.authorization_required(payment) }
+
+ it "includes the distributor's name in the subject" do
+ expect(email.subject).to include("A payment requires authorization from the customer")
+ end
+
+ it "sets a reply-to of the customer email" do
+ expect(email.reply_to).to eq([order.email])
+ end
+ end
+ end
+end
diff --git a/spec/mailers/producer_mailer_spec.rb b/spec/mailers/producer_mailer_spec.rb
index 20702419e8..387c42eea0 100644
--- a/spec/mailers/producer_mailer_spec.rb
+++ b/spec/mailers/producer_mailer_spec.rb
@@ -83,13 +83,13 @@ RSpec.describe ProducerMailer, type: :mailer do
expect(line).to include 'QTY: 3'
expect(line).to include '@ $10.00 = $30.00'
end
- expect(body_as_html(mail).find("table.order-summary tr", text: p1.name))
+ expect(html_body(mail).find("table.order-summary tr", text: p1.name))
.to have_selector("td", text: "$30.00")
end
it "displays tax totals for each product" do
# Tax for p1 line items
- expect(body_as_html(mail).find("table.order-summary tr", text: p1.name))
+ expect(html_body(mail).find("table.order-summary tr", text: p1.name))
.to have_selector("td.tax", text: "$2.73")
expect(
product_line_from_order_summary_text(mail, p1.name)
@@ -122,7 +122,7 @@ RSpec.describe ProducerMailer, type: :mailer do
it "includes the total" do
expect(mail.body.encoded).to include 'Total: $50.00'
- expect(body_as_html(mail).find("tr.total-row"))
+ expect(html_body(mail).find("tr.total-row"))
.to have_selector("td", text: "$50.00")
end
@@ -151,15 +151,15 @@ RSpec.describe ProducerMailer, type: :mailer do
end
it "adds customer names table" do
- expect(body_as_html(mail).find(".order-summary.customer-order")).not_to be_nil
+ expect(html_body(mail).find(".order-summary.customer-order")).not_to be_nil
expect(customer_details_summary_text(mail)).to be_present
end
it "displays last name for each order" do
product_name = order.line_items.first.product.name
last_name = order.billing_address.lastname
- expect(body_as_html(mail).find("table.order-summary.customer-order tr",
- text: product_name)).to have_selector("td", text: last_name)
+ expect(html_body(mail).find("table.order-summary.customer-order tr",
+ text: product_name)).to have_selector("td", text: last_name)
expect(
product_line_from_details_summary_text(mail, product_name)
).to include(last_name)
@@ -168,8 +168,8 @@ RSpec.describe ProducerMailer, type: :mailer do
it "displays first name for each order" do
product_name = order.line_items.first.product.name
first_name = order.billing_address.firstname
- expect(body_as_html(mail).find("table.order-summary.customer-order tr",
- text: product_name)).to have_selector("td", text: first_name)
+ expect(html_body(mail).find("table.order-summary.customer-order tr",
+ text: product_name)).to have_selector("td", text: first_name)
expect(
product_line_from_details_summary_text(mail, product_name)
).to include(first_name)
@@ -186,7 +186,7 @@ RSpec.describe ProducerMailer, type: :mailer do
context "validate business name" do
let(:table_header) do
- body_as_html(mail).find("table.order-summary.customer-order thead")
+ html_body(mail).find("table.order-summary.customer-order thead")
end
context "when no customer has customer code" do
@@ -202,7 +202,7 @@ RSpec.describe ProducerMailer, type: :mailer do
it 'displays business name for the customer' do
expect(table_header).to have_selector("th", text: 'Business Name')
expect(
- body_as_html(mail).find("table.order-summary.customer-order tbody tr")
+ html_body(mail).find("table.order-summary.customer-order tbody tr")
).to have_selector("td", text: 'Test Business Name')
expect(customer_details_summary_text(mail)).to include('Test Business Name')
end
@@ -217,7 +217,7 @@ RSpec.describe ProducerMailer, type: :mailer do
it "does not add customer names table" do
expect {
- body_as_html(mail).find(".order-summary.customer-order")
+ html_body(mail).find(".order-summary.customer-order")
}.to raise_error(Capybara::ElementNotFound)
expect(customer_details_summary_text(mail)).to be_nil
end
@@ -236,7 +236,7 @@ RSpec.describe ProducerMailer, type: :mailer do
end
it "displays a supplier column" do
- expect(body_as_html(mail).find(".order-summary"))
+ expect(html_body(mail).find(".order-summary"))
.to have_selector("th", text: "Supplier")
end
@@ -244,7 +244,7 @@ RSpec.describe ProducerMailer, type: :mailer do
before { order_cycle.coordinator.update!(show_customer_names_to_suppliers: true) }
it "displays a supplier column in the summary of orders grouped by customer" do
- expect(body_as_html(mail).find(".customer-order"))
+ expect(html_body(mail).find(".customer-order"))
.to have_selector("th", text: "Supplier")
end
end
@@ -252,7 +252,7 @@ RSpec.describe ProducerMailer, type: :mailer do
context "products from only one supplier" do
it "doesn't display a supplier column" do
- expect(body_as_html(mail).find(".order-summary"))
+ expect(html_body(mail).find(".order-summary"))
.not_to have_selector("th", text: "Supplier")
end
@@ -260,7 +260,7 @@ RSpec.describe ProducerMailer, type: :mailer do
before { order_cycle.coordinator.update!(show_customer_names_to_suppliers: true) }
it "doesn't display a supplier column in the summary of orders grouped by customer" do
- expect(body_as_html(mail).find(".customer-order"))
+ expect(html_body(mail).find(".customer-order"))
.not_to have_selector("th", text: "Supplier")
end
end
@@ -272,10 +272,6 @@ RSpec.describe ProducerMailer, type: :mailer do
mail.body.to_s.lines.select { |line| line.include? str }
end
- def body_as_html(mail)
- Capybara.string(mail.html_part.body.encoded)
- end
-
def body_as_text(mail)
mail.text_part.body.decoded
end
diff --git a/spec/mailers/shipment_mailer_spec.rb b/spec/mailers/shipment_mailer_spec.rb
index e81ea4d0cb..bf234ce496 100644
--- a/spec/mailers/shipment_mailer_spec.rb
+++ b/spec/mailers/shipment_mailer_spec.rb
@@ -55,4 +55,14 @@ RSpec.describe Spree::ShipmentMailer do
shipment_email = Spree::ShipmentMailer.shipped_email(shipment, delivery: false)
expect(shipment_email.subject).to include("#{distributor.name} Pick up Notification")
end
+
+ it "picked_up email has as the reply to email as the distributor" do
+ shipment_email = Spree::ShipmentMailer.shipped_email(shipment, delivery: false)
+ expect(shipment_email.reply_to).to eq([distributor.contact.email])
+ end
+
+ it "shipment_email email has as the reply to email as the distributor" do
+ shipment_email = Spree::ShipmentMailer.shipped_email(shipment, delivery: true)
+ expect(shipment_email.reply_to).to eq([distributor.contact.email])
+ end
end
diff --git a/spec/models/concerns/product_stock_spec.rb b/spec/models/concerns/product_stock_spec.rb
deleted file mode 100644
index 751f57058a..0000000000
--- a/spec/models/concerns/product_stock_spec.rb
+++ /dev/null
@@ -1,41 +0,0 @@
-# frozen_string_literal: true
-
-require "spec_helper"
-
-RSpec.describe ProductStock do
- let(:product) { create(:simple_product) }
-
- context "when product has one variant" do
- describe "product.on_demand" do
- it "is the products first variant on_demand" do
- expect(product.on_demand).to eq(product.variants.first.on_demand)
- end
- end
-
- describe "product.on_hand" do
- it "is the products first variant on_hand" do
- expect(product.on_hand).to eq(product.variants.first.on_hand)
- end
- end
- end
-
- context 'when product has more than one variant' do
- before do
- product.variants << create(:variant, product:)
- end
-
- describe "product.on_demand" do
- it "raises error" do
- expect { product.on_demand }
- .to raise_error(StandardError, /Cannot determine product on_demand value/)
- end
- end
-
- describe "product.on_hand" do
- it "is the sum of the products variants on_hand values" do
- expect(product.on_hand)
- .to eq(product.variants.first.on_hand + product.variants.second.on_hand)
- end
- end
- end
-end
diff --git a/spec/models/database_spec.rb b/spec/models/database_spec.rb
index 609f275646..2994085c97 100644
--- a/spec/models/database_spec.rb
+++ b/spec/models/database_spec.rb
@@ -102,7 +102,7 @@ RSpec.describe "Database" do
orphaned_records_query = generate_orphaned_records_query(model_class, foreign_key_table_name,
foreign_key_column)
- migration = <<~MIGRATION
+ <<~MIGRATION
# Orphaned records can be found before running this migration with the following SQL:
#{orphaned_records_query}
@@ -113,8 +113,6 @@ RSpec.describe "Database" do
end
end
MIGRATION
-
- migration
end
def generate_orphaned_records_query(model_class, foreign_key_table_name, foreign_key_column)
diff --git a/spec/models/product_import/entry_validator_spec.rb b/spec/models/product_import/entry_validator_spec.rb
index db240b9498..6583dcfe30 100644
--- a/spec/models/product_import/entry_validator_spec.rb
+++ b/spec/models/product_import/entry_validator_spec.rb
@@ -110,9 +110,9 @@ RSpec.describe ProductImport::EntryValidator do
describe "inventory validation" do
before do
allow(entry_validator).to receive(:import_into_inventory?) { true }
- allow(entry_validator).to receive(:enterprise_validation) {}
- allow(entry_validator).to receive(:producer_validation) {}
- allow(entry_validator).to receive(:variant_of_product_validation) {}
+ allow(entry_validator).to receive(:enterprise_validation)
+ allow(entry_validator).to receive(:producer_validation)
+ allow(entry_validator).to receive(:variant_of_product_validation)
end
context "products exist" do
diff --git a/spec/models/product_importer_spec.rb b/spec/models/product_importer_spec.rb
index a2a5b96b25..1d6392f7a4 100644
--- a/spec/models/product_importer_spec.rb
+++ b/spec/models/product_importer_spec.rb
@@ -157,9 +157,7 @@ RSpec.describe ProductImport::ProductImporter do
expect(importer.updated_ids).to be_a(Array)
expect(importer.updated_ids.count).to eq 5
- carrots = Spree::Product.find_by(name: 'Carrots')
- carrots_variant = carrots.variants.first
- expect(carrots.on_hand).to eq 5
+ carrots_variant = find_variant("Carrots")
expect(carrots_variant.supplier).to eq enterprise
expect(carrots_variant.price).to eq 3.20
@@ -167,11 +165,10 @@ RSpec.describe ProductImport::ProductImporter do
expect(carrots_variant.variant_unit).to eq 'weight'
expect(carrots_variant.variant_unit_scale).to eq 1
expect(carrots_variant.on_demand).not_to eq true
+ expect(carrots_variant.on_hand).to eq 5
expect(carrots_variant.import_date).to be_within(1.minute).of Time.zone.now
- potatoes = Spree::Product.find_by(name: 'Potatoes')
- potatoes_variant = potatoes.variants.first
- expect(potatoes.on_hand).to eq 6
+ potatoes_variant = find_variant("Potatoes")
expect(potatoes_variant.supplier).to eq enterprise
expect(potatoes_variant.price).to eq 6.50
@@ -179,11 +176,10 @@ RSpec.describe ProductImport::ProductImporter do
expect(potatoes_variant.variant_unit).to eq 'weight'
expect(potatoes_variant.variant_unit_scale).to eq 1000
expect(potatoes_variant.on_demand).not_to eq true
+ expect(potatoes_variant.on_hand).to eq 6
expect(potatoes_variant.import_date).to be_within(1.minute).of Time.zone.now
- pea_soup = Spree::Product.find_by(name: 'Pea Soup')
- pea_soup_variant = pea_soup.variants.first
- expect(pea_soup.on_hand).to eq 8
+ pea_soup_variant = find_variant("Pea Soup")
expect(pea_soup_variant.supplier).to eq enterprise
expect(pea_soup_variant.price).to eq 5.50
@@ -191,11 +187,10 @@ RSpec.describe ProductImport::ProductImporter do
expect(pea_soup_variant.variant_unit).to eq 'volume'
expect(pea_soup_variant.variant_unit_scale).to eq 0.001
expect(pea_soup_variant.on_demand).not_to eq true
+ expect(pea_soup_variant.on_hand).to eq 8
expect(pea_soup_variant.import_date).to be_within(1.minute).of Time.zone.now
- salad = Spree::Product.find_by(name: 'Salad')
- salad_variant = salad.variants.first
- expect(salad.on_hand).to eq 7
+ salad_variant = find_variant("Salad")
expect(salad_variant.supplier).to eq enterprise
expect(salad_variant.price).to eq 4.50
@@ -203,11 +198,10 @@ RSpec.describe ProductImport::ProductImporter do
expect(salad_variant.variant_unit).to eq 'items'
expect(salad_variant.variant_unit_scale).to eq nil
expect(salad_variant.on_demand).not_to eq true
+ expect(salad_variant.on_hand).to eq 7
expect(salad_variant.import_date).to be_within(1.minute).of Time.zone.now
- buns = Spree::Product.find_by(name: 'Hot Cross Buns')
- buns_variant = buns.variants.first
- expect(buns.on_hand).to eq 7
+ buns_variant = find_variant("Hot Cross Buns")
expect(buns_variant.supplier).to eq enterprise
expect(buns_variant.price).to eq 3.50
@@ -215,6 +209,7 @@ RSpec.describe ProductImport::ProductImporter do
expect(buns_variant.variant_unit).to eq 'items'
expect(buns_variant.variant_unit_scale).to eq nil
expect(buns_variant.on_demand).to eq true
+ expect(buns_variant.on_hand).to eq 7
expect(buns_variant.import_date).to be_within(1.minute).of Time.zone.now
end
end
@@ -248,9 +243,8 @@ RSpec.describe ProductImport::ProductImporter do
expect(importer.updated_ids).to be_a(Array)
expect(importer.updated_ids.count).to eq 1
- carrots = Spree::Product.find_by(name: 'Good Carrots')
- carrots_variant = carrots.variants.first
- expect(carrots.on_hand).to eq 5
+ carrots_variant = find_variant("Good Carrots")
+ expect(carrots_variant.on_hand).to eq 5
expect(carrots_variant.supplier).to eq enterprise
expect(carrots_variant.price).to eq 3.20
expect(carrots_variant.import_date).to be_within(1.minute).of Time.zone.now
@@ -295,11 +289,9 @@ RSpec.describe ProductImport::ProductImporter do
expect(importer.products_created_count).to eq 1
- carrots = Spree::Product.find_by(name: 'Good Carrots')
- carrots_variant = carrots.variants.first
-
- expect(carrots.on_hand).to eq 5
+ carrots_variant = find_variant("Good Carrots")
+ expect(carrots_variant.on_hand).to eq 5
expect(carrots_variant.primary_taxon.name).to eq "Vegetables"
expect(carrots_variant.supplier).to eq enterprise
expect(carrots_variant.price).to eq 3.20
@@ -565,11 +557,11 @@ RSpec.describe ProductImport::ProductImporter do
expect(importer.updated_ids).to be_a(Array)
expect(importer.updated_ids.count).to eq 2
- beetroot = Spree::Product.find_by(name: 'Beetroot').variants.first
+ beetroot = find_variant("Beetroot")
expect(beetroot.price).to eq 3.50
expect(beetroot.on_demand).not_to eq true
- tomato = Spree::Product.find_by(name: 'Tomato').variants.first
+ tomato = find_variant("Tomato")
expect(tomato.price).to eq 5.50
expect(tomato.on_demand).to eq true
end
@@ -960,12 +952,11 @@ RSpec.describe ProductImport::ProductImporter do
expect(importer.products_reset_count).to eq 7
- expect(Spree::Product.find_by(name: 'Carrots').on_hand).to eq 5 # Present in file, added
- expect(Spree::Product.find_by(name: 'Beans').on_hand).to eq 6 # Present in file, updated
- expect(Spree::Product.find_by(name: 'Sprouts').on_hand).to eq 0 # In enterprise, not file
- expect(Spree::Product.find_by(name: 'Cabbage').on_hand).to eq 0 # In enterprise, not file
- expect(Spree::Product.find_by(name: 'Lettuce').on_hand)
- .to eq 100 # In different enterprise; unchanged
+ expect(find_variant("Carrots").on_hand).to eq 5 # Present in file, added
+ expect(find_variant("Beans").on_hand).to eq 6 # Present in file, updated
+ expect(find_variant("Sprouts").on_hand).to eq 0 # In enterprise, not file
+ expect(find_variant("Cabbage").on_hand).to eq 0 # In enterprise, not file
+ expect(find_variant("Lettuce").on_hand).to eq 100 # In different enterprise; unchanged
end
it "can reset all inventory items for an enterprise that are not present " \
@@ -1036,6 +1027,10 @@ RSpec.describe ProductImport::ProductImporter do
)
end
end
+
+ def find_variant(name)
+ Spree::Product.find_by(name:).variants.first
+ end
end
private
diff --git a/spec/models/spree/gateway_spec.rb b/spec/models/spree/gateway_spec.rb
index 23b0b97d96..b1e0d65205 100644
--- a/spec/models/spree/gateway_spec.rb
+++ b/spec/models/spree/gateway_spec.rb
@@ -7,7 +7,7 @@ RSpec.describe Spree::Gateway do
Class.new(Spree::Gateway) do
def provider_class
Class.new do
- def initialize(options = {}); end
+ def initialize(*); end
def imaginary_method; end
end
diff --git a/spec/models/spree/payment_spec.rb b/spec/models/spree/payment_spec.rb
index e22e064b60..add0c3354d 100644
--- a/spec/models/spree/payment_spec.rb
+++ b/spec/models/spree/payment_spec.rb
@@ -607,19 +607,6 @@ RSpec.describe Spree::Payment do
end
end
- context "#can_credit?" do
- it "is true if credit_allowed > 0" do
- payment = build_stubbed(:payment)
- allow(payment).to receive(:credit_allowed) { 100 }
- expect(payment.can_credit?).to be true
- end
- it "is false if credit_allowed is 0" do
- payment = build_stubbed(:payment)
- allow(payment).to receive(:credit_allowed) { 0 }
- expect(payment.can_credit?).to be false
- end
- end
-
context "#save" do
context "completed payments" do
it "updates order payment total" do
@@ -868,7 +855,7 @@ RSpec.describe Spree::Payment do
let(:payment) { build_stubbed(:payment) }
it "returns the parameter amount when given" do
- expect(payment.__send__(:calculate_refund_amount, 123)).to be === 123.0
+ expect(payment.__send__(:calculate_refund_amount, 123)).to eq(123)
end
it "refunds up to the value of the payment when the outstanding balance is larger" do
diff --git a/spec/services/order_cycles/webhook_service_spec.rb b/spec/services/order_cycles/webhook_service_spec.rb
index bdc77bb151..a006d1e68e 100644
--- a/spec/services/order_cycles/webhook_service_spec.rb
+++ b/spec/services/order_cycles/webhook_service_spec.rb
@@ -7,12 +7,15 @@ RSpec.describe OrderCycles::WebhookService do
create(
:simple_order_cycle,
name: "Order cycle 1",
- orders_open_at: "2022-09-19 09:00:00".to_time,
- orders_close_at: "2022-09-19 17:00:00".to_time,
+ orders_open_at: Time.zone.parse("2022-09-19 09:00:00"),
+ opened_at: Time.zone.parse("2022-09-19 09:00:01"),
+ orders_close_at: Time.zone.parse("2022-09-19 17:00:00"),
coordinator:,
)
}
let(:coordinator) { create :distributor_enterprise, name: "Starship Enterprise" }
+ let(:at) { Time.zone.parse("2022-09-19 09:00:02") }
+ subject { OrderCycles::WebhookService.create_webhook_job(order_cycle, "order_cycle.opened", at) }
describe "creating payloads" do
it "doesn't create webhook payload for enterprise users" do
@@ -21,7 +24,7 @@ RSpec.describe OrderCycles::WebhookService do
coordinator_user = create(:user, enterprises: [coordinator])
coordinator_user.webhook_endpoints.create!(url: "http://coordinator_user_url")
- expect{ OrderCycles::WebhookService.create_webhook_job(order_cycle, "order_cycle.opened") }
+ expect{ subject }
.not_to enqueue_job(WebhookDeliveryJob).with("http://coordinator_user_url", any_args)
end
@@ -31,7 +34,7 @@ RSpec.describe OrderCycles::WebhookService do
end
it "creates webhook payload for order cycle coordinator" do
- expect{ OrderCycles::WebhookService.create_webhook_job(order_cycle, "order_cycle.opened") }
+ expect{ subject }
.to enqueue_job(WebhookDeliveryJob).with("http://coordinator_owner_url", any_args)
end
@@ -42,21 +45,22 @@ RSpec.describe OrderCycles::WebhookService do
data = {
id: order_cycle.id,
name: "Order cycle 1",
- orders_open_at: "2022-09-19 09:00:00".to_time,
- orders_close_at: "2022-09-19 17:00:00".to_time,
+ orders_open_at: Time.zone.parse("2022-09-19 09:00:00"),
+ opened_at: Time.zone.parse("2022-09-19 09:00:01"),
+ orders_close_at: Time.zone.parse("2022-09-19 17:00:00"),
coordinator_id: coordinator.id,
coordinator_name: "Starship Enterprise",
}
- expect{ OrderCycles::WebhookService.create_webhook_job(order_cycle, "order_cycle.opened") }
+ expect{ subject }
.to enqueue_job(WebhookDeliveryJob).exactly(1).times
- .with("http://coordinator_owner_url", "order_cycle.opened", hash_including(data))
+ .with("http://coordinator_owner_url", "order_cycle.opened", hash_including(data), at:)
end
end
context "coordinator owner doesn't have endpoint configured" do
it "doesn't create webhook payload" do
- expect{ OrderCycles::WebhookService.create_webhook_job(order_cycle, "order_cycle.opened") }
+ expect{ subject }
.not_to enqueue_job(WebhookDeliveryJob)
end
end
@@ -84,13 +88,13 @@ RSpec.describe OrderCycles::WebhookService do
coordinator_name: "Starship Enterprise",
}
- expect{
- OrderCycles::WebhookService.create_webhook_job(order_cycle, "order_cycle.opened")
- }
+ expect{ subject }
.to enqueue_job(WebhookDeliveryJob).with("http://distributor1_owner_url",
- "order_cycle.opened", hash_including(data))
+ "order_cycle.opened", hash_including(data),
+ at:)
.and enqueue_job(WebhookDeliveryJob).with("http://distributor2_owner_url",
- "order_cycle.opened", hash_including(data))
+ "order_cycle.opened", hash_including(data),
+ at:)
end
end
@@ -107,9 +111,7 @@ RSpec.describe OrderCycles::WebhookService do
it "creates only one webhook payload for the user's endpoint" do
user.webhook_endpoints.create! url: "http://coordinator_owner_url"
- expect{
- OrderCycles::WebhookService.create_webhook_job(order_cycle, "order_cycle.opened")
- }
+ expect{ subject }
.to enqueue_job(WebhookDeliveryJob).with("http://coordinator_owner_url", any_args)
end
end
@@ -131,9 +133,7 @@ RSpec.describe OrderCycles::WebhookService do
}
it "doesn't create a webhook payload for supplier owner" do
- expect{
- OrderCycles::WebhookService.create_webhook_job(order_cycle, "order_cycle.opened")
- }
+ expect{ subject }
.not_to enqueue_job(WebhookDeliveryJob).with("http://supplier_owner_url", any_args)
end
end
@@ -142,7 +142,7 @@ RSpec.describe OrderCycles::WebhookService do
context "without webhook subscribed to enterprise" do
it "doesn't create webhook payload" do
- expect{ OrderCycles::WebhookService.create_webhook_job(order_cycle, "order_cycle.opened") }
+ expect{ subject }
.not_to enqueue_job(WebhookDeliveryJob)
end
end
diff --git a/spec/services/orders/customer_cancellation_service_spec.rb b/spec/services/orders/customer_cancellation_service_spec.rb
index a7b3e7aad8..8f32177334 100644
--- a/spec/services/orders/customer_cancellation_service_spec.rb
+++ b/spec/services/orders/customer_cancellation_service_spec.rb
@@ -10,7 +10,7 @@ RSpec.describe Orders::CustomerCancellationService do
context "when an order is cancelled successfully" do
it "notifies the distributor by email" do
- order = create(:order, completed_at: Time.now, state: 'complete')
+ order = create(:order, completed_at: Time.zone.now, state: 'complete')
Orders::CustomerCancellationService.new(order).call
diff --git a/spec/support/mailers_helper.rb b/spec/support/mailers_helper.rb
new file mode 100644
index 0000000000..bc4688062e
--- /dev/null
+++ b/spec/support/mailers_helper.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+module MailersHelper
+ def html_body(mail)
+ Capybara.string(mail.html_part.body.to_s)
+ end
+end
diff --git a/spec/system/admin/dfc_product_import_spec.rb b/spec/system/admin/dfc_product_import_spec.rb
index 7955217ea7..03c86eb379 100644
--- a/spec/system/admin/dfc_product_import_spec.rb
+++ b/spec/system/admin/dfc_product_import_spec.rb
@@ -20,10 +20,17 @@ RSpec.describe "DFC Product Import" do
it "imports from given catalog" do
visit admin_product_import_path
+ fill_in "catalog_url", with: "invalid url"
+ select enterprise.name, from: "Create products for enterprise"
+ click_button "Preview"
+
+ expect(page).to have_content "This catalog URL is not valid"
+
# We are testing against our own catalog for now but we want to replace
# this with the URL of another app when available.
+ # We also add a common mistake: copying the URL with an extra space.
host = Rails.application.default_url_options[:host]
- url = "http://#{host}/api/dfc/enterprises/#{enterprise.id}/catalog_items"
+ url = " http://#{host}/api/dfc/enterprises/#{enterprise.id}/catalog_items"
fill_in "catalog_url", with: url
select enterprise.name, from: "Create products for enterprise"
click_button "Preview"
diff --git a/spec/system/admin/order_spec.rb b/spec/system/admin/order_spec.rb
index d5240f17b1..55b422ec9a 100644
--- a/spec/system/admin/order_spec.rb
+++ b/spec/system/admin/order_spec.rb
@@ -569,12 +569,12 @@ RSpec.describe '
let(:product) { order_cycle1.products.first }
before(:each) do
- @enterprise_user = create(:user)
- @enterprise_user.enterprise_roles.build(enterprise: supplier1).save
- @enterprise_user.enterprise_roles.build(enterprise: coordinator1).save
- @enterprise_user.enterprise_roles.build(enterprise: distributor1).save
+ enterprise_user = create(:user)
+ enterprise_user.enterprise_roles.build(enterprise: supplier1).save
+ enterprise_user.enterprise_roles.build(enterprise: coordinator1).save
+ enterprise_user.enterprise_roles.build(enterprise: distributor1).save
- login_as @enterprise_user
+ login_as enterprise_user
end
describe "viewing the edit page" do
@@ -583,14 +583,50 @@ RSpec.describe '
distributors: [distributor1])
end
let!(:order) do
- create(:order_with_taxes, distributor: distributor1, ship_address: create(:address),
- product_price: 110, tax_rate_amount: 0.1, included_in_price: true,
- tax_rate_name: "Tax 1").tap do |order|
- order.create_tax_charge!
- order.update_shipping_fees!
- end
+ create(
+ :order_with_taxes,
+ distributor: distributor1,
+ order_cycle: order_cycle1,
+ ship_address: create(:address),
+ product_price: 110,
+ tax_rate_amount: 0.1,
+ included_in_price: true,
+ tax_rate_name: "Tax 1"
+ ).tap do |order|
+ # Add a values to the fees
+ first_calculator = supplier_enterprise_fee1.calculator
+ first_calculator.preferred_amount = 2.5
+ first_calculator.save!
+
+ last_calculator = supplier_enterprise_fee2.calculator
+ last_calculator.preferred_amount = 7.5
+ last_calculator.save!
+
+ # Add all variant to the order cycle for a more realistic scenario
+ order.variants.each do |v|
+ first_exchange.variants << v
+ order_cycle1.cached_outgoing_exchanges.first.variants << v
+ end
+
+ variant1 = first_exchange.variants.first
+ variant2 = last_exchange.variants.first
+
+ order.contents.add(variant1)
+ order.contents.add(variant2)
+ # make sure all the fees are applied to the order
+ order.recreate_all_fees!
+
+ order.update_order!
+ end
end
+ let(:first_exchange) { order_cycle1.cached_incoming_exchanges.first }
+ let(:last_exchange) { order_cycle1.cached_incoming_exchanges.last }
+ let(:coordinator_fee) { order_cycle1.coordinator_fees.first }
+ let(:distributor_fee) { order_cycle1.cached_outgoing_exchanges.first.enterprise_fees.first }
+ let(:supplier_enterprise_fee1) { first_exchange.enterprise_fees.first }
+ let(:supplier_enterprise_fee2) { last_exchange.enterprise_fees.first }
+
before do
distributor1.update_attribute(:abn, '12345678')
@@ -608,15 +644,42 @@ RSpec.describe '
end
end
- # shows the order items total
- within('fieldset#order-total') do
- expect(page).to have_selector "span.order-total", text: order.display_item_total
- end
-
# shows the order non-tax adjustments
- order.adjustments.eligible.each do |adjustment|
- expect(page).to have_selector "td", match: :first, text: adjustment.label
- expect(page).to have_selector "td.total", text: adjustment.display_amount
+ within "#order_adjustments" do
+ # supplier fees only apply to specific product
+ first_exchange.variants.each do |variant|
+ expect(page).to have_content(
+ "#{variant.name} - #{supplier_enterprise_fee1.name} fee \
+ by supplier #{supplier1.name}: $2.50".squish
+ )
+ expect(page).not_to have_content(
+ "#{variant.name} - #{supplier_enterprise_fee2.name} fee \
+ by supplier #{supplier2.name}: $7.50".squish
+ )
+ end
+
+ last_exchange.variants.each do |variant|
+ expect(page).to have_content(
+ "#{variant.name} - #{supplier_enterprise_fee2.name} fee \
+ by supplier #{supplier2.name}: $7.50".squish
+ )
+ expect(page).not_to have_content(
+ "#{variant.name} - #{supplier_enterprise_fee1.name} fee \
+ by supplier #{supplier1.name}: $2.50".squish
+ )
+ end
+
+ ## Coordinator fee and Distributor fee apply to all product
+ order.variants.each do |variant|
+ expect(page).to have_content(
+ "#{variant.name} - #{coordinator_fee.name} fee \
+ by coordinator #{coordinator1.name}: $0.00".squish
+ )
+ expect(page).to have_content(
+ "#{variant.name} - #{distributor_fee.name} fee \
+ by distributor #{distributor1.name}: $0.00".squish
+ )
+ end
end
# shows the order total
@@ -787,12 +850,11 @@ RSpec.describe '
find('.edit-method').click
- # TODO assertion not working due to overlapping elements on new BUU design
- # expect(page).to have_select2('selected_shipping_rate_id',
- # with_options: [
- # shipping_method_for_distributor1.name,
- # different_shipping_method_for_distributor1.name
- # ], without_options: [shipping_method_for_distributor2.name])
+ expect(page).to have_select2('selected_shipping_rate_id',
+ with_options: [
+ shipping_method_for_distributor1.name,
+ different_shipping_method_for_distributor1.name
+ ], without_options: [shipping_method_for_distributor2.name])
select2_select(different_shipping_method_for_distributor1.name,
from: 'selected_shipping_rate_id')
@@ -803,7 +865,7 @@ RSpec.describe '
)
within "#order-total" do
- expect(page).to have_content "$175.00"
+ expect(page).to have_content "$239.98"
end
end
@@ -818,6 +880,7 @@ RSpec.describe '
order.shipment.adjustments.first.close
distributor1.shipping_methods = [shipping_method_for_distributor1]
end
+
context "shipment is shipped" do
before do
order.shipments.first.update_attribute(:state, 'shipped')
@@ -830,7 +893,7 @@ RSpec.describe '
)
within "#order-total" do
- expect(page).to have_content "$160.00"
+ expect(page).to have_content "$224.98"
end
end
@@ -846,7 +909,7 @@ RSpec.describe '
)
within "#order-total" do
- expect(page).to have_content "$160.00"
+ expect(page).to have_content "$224.98"
end
end
end
@@ -864,7 +927,7 @@ RSpec.describe '
)
within "#order-total" do
- expect(page).to have_content "$160.00"
+ expect(page).to have_content "$224.98"
end
end
@@ -881,7 +944,7 @@ RSpec.describe '
)
within "#order-total" do
- expect(page).to have_content "$160.00"
+ expect(page).to have_content "$224.98"
end
end
end
diff --git a/spec/system/admin/product_import_spec.rb b/spec/system/admin/product_import_spec.rb
index a8095dc338..62e58f6ba3 100644
--- a/spec/system/admin/product_import_spec.rb
+++ b/spec/system/admin/product_import_spec.rb
@@ -93,7 +93,7 @@ RSpec.describe "Product Import" do
carrots = Spree::Product.find_by(name: 'Carrots')
potatoes = Spree::Product.find_by(name: 'Potatoes')
expect(potatoes.variants.first.supplier).to eq enterprise
- expect(potatoes.on_hand).to eq 6
+ expect(potatoes.variants.first.on_hand).to eq 6
expect(potatoes.variants.first.price).to eq 6.50
expect(potatoes.variants.first.import_date).to be_within(1.minute).of Time.zone.now
@@ -261,9 +261,9 @@ RSpec.describe "Product Import" do
expect(page).to have_selector '.created-count', text: '1'
expect(page).to have_selector '.reset-count', text: '3'
- expect(Spree::Product.find_by(name: 'Carrots').on_hand).to eq 500
- expect(Spree::Product.find_by(name: 'Cabbage').on_hand).to eq 0
- expect(Spree::Product.find_by(name: 'Beans').on_hand).to eq 0
+ expect(Spree::Product.find_by(name: 'Carrots').variants.first.on_hand).to eq 500
+ expect(Spree::Product.find_by(name: 'Cabbage').variants.first.on_hand).to eq 0
+ expect(Spree::Product.find_by(name: 'Beans').variants.first.on_hand).to eq 0
end
it "can save a new product and variant of that product at the same time, " \
diff --git a/spec/system/consumer/caching/shops_caching_spec.rb b/spec/system/consumer/caching/shops_caching_spec.rb
index d9cda44d54..341fdfe143 100644
--- a/spec/system/consumer/caching/shops_caching_spec.rb
+++ b/spec/system/consumer/caching/shops_caching_spec.rb
@@ -83,8 +83,11 @@ RSpec.describe "Shops caching", caching: true do
it "caches rendered response for taxons and properties, with the provided options" do
visit enterprise_shop_path(distributor)
- expect(page).to have_content "Cached Taxon"
- expect(page).to have_content "Cached Property"
+ # Ensure we test for the right text after AJAX loads filters:
+ within(".sticky-shop-filters-container", text: "Filter by") do
+ expect(page).to have_content "Cached Taxon"
+ expect(page).to have_content "Cached Property"
+ end
expect_cached taxons_key, options
expect_cached properties_key, options
@@ -95,23 +98,33 @@ RSpec.describe "Shops caching", caching: true do
Timecop.travel(10.minutes.ago) do
visit enterprise_shop_path(distributor)
- expect(page).to have_content taxon.name
- expect(page).to have_content property.presentation
+ # The page HTML contains the cached text but we need to test for the
+ # visible filters which are loaded asynchronously.
+ # Otherwise we may update the database before the AJAX requests
+ # and cache the new data.
+ within(".sticky-shop-filters-container", text: "Filter by") do
+ expect(page).to have_content taxon.name
+ expect(page).to have_content property.presentation
+ end
variant.update_attribute(:primary_taxon, taxon2)
product.update_attribute(:properties, [property2])
visit enterprise_shop_path(distributor)
- expect(page).to have_content taxon.name # Taxon list is unchanged
- expect(page).to have_content property.presentation # Property list is unchanged
+ within(".sticky-shop-filters-container", text: "Filter by") do
+ expect(page).to have_content taxon.name # Taxon list is unchanged
+ expect(page).to have_content property.presentation # Property list is unchanged
+ end
end
# A while later...
visit enterprise_shop_path(distributor)
- expect(page).to have_content taxon2.name
- expect(page).to have_content property2.presentation
+ within(".sticky-shop-filters-container", text: "Filter by") do
+ expect(page).to have_content taxon2.name
+ expect(page).to have_content property2.presentation
+ end
end
end
diff --git a/yarn.lock b/yarn.lock
index 6db4454856..999a1680ba 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -25,6 +25,15 @@
"@babel/highlight" "^7.22.13"
chalk "^2.4.2"
+"@babel/code-frame@^7.26.2":
+ version "7.26.2"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85"
+ integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.25.9"
+ js-tokens "^4.0.0"
+ picocolors "^1.0.0"
+
"@babel/compat-data@^7.13.11":
version "7.21.4"
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.4.tgz#457ffe647c480dff59c2be092fc3acf71195c87f"
@@ -310,6 +319,11 @@
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f"
integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==
+"@babel/helper-string-parser@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c"
+ integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==
+
"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1":
version "7.19.1"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2"
@@ -320,6 +334,11 @@
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0"
integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==
+"@babel/helper-validator-identifier@^7.25.9":
+ version "7.25.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7"
+ integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==
+
"@babel/helper-validator-option@^7.21.0":
version "7.21.0"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180"
@@ -336,13 +355,12 @@
"@babel/types" "^7.20.5"
"@babel/helpers@^7.21.5":
- version "7.21.5"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.21.5.tgz#5bac66e084d7a4d2d9696bdf0175a93f7fb63c08"
- integrity sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA==
+ version "7.26.10"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.10.tgz#6baea3cd62ec2d0c1068778d63cb1314f6637384"
+ integrity sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==
dependencies:
- "@babel/template" "^7.20.7"
- "@babel/traverse" "^7.21.5"
- "@babel/types" "^7.21.5"
+ "@babel/template" "^7.26.9"
+ "@babel/types" "^7.26.10"
"@babel/highlight@^7.18.6":
version "7.18.6"
@@ -372,6 +390,13 @@
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719"
integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==
+"@babel/parser@^7.26.9":
+ version "7.26.10"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.10.tgz#e9bdb82f14b97df6569b0b038edd436839c57749"
+ integrity sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==
+ dependencies:
+ "@babel/types" "^7.26.10"
+
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2"
@@ -1011,19 +1036,12 @@
resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310"
integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==
-"@babel/runtime@^7.15.3", "@babel/runtime@^7.7.2":
- version "7.15.3"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.3.tgz#2e1c2880ca118e5b2f9988322bd8a7656a32502b"
- integrity sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA==
+"@babel/runtime@^7.15.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4":
+ version "7.26.10"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.10.tgz#a07b4d8fa27af131a633d7b3524db803eb4764c2"
+ integrity sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==
dependencies:
- regenerator-runtime "^0.13.4"
-
-"@babel/runtime@^7.8.4":
- version "7.21.5"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.5.tgz#8492dddda9644ae3bda3b45eabe87382caee7200"
- integrity sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==
- dependencies:
- regenerator-runtime "^0.13.11"
+ regenerator-runtime "^0.14.0"
"@babel/template@^7.18.10", "@babel/template@^7.20.7", "@babel/template@^7.3.3":
version "7.20.7"
@@ -1043,6 +1061,15 @@
"@babel/parser" "^7.22.15"
"@babel/types" "^7.22.15"
+"@babel/template@^7.26.9":
+ version "7.26.9"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.26.9.tgz#4577ad3ddf43d194528cff4e1fa6b232fa609bb2"
+ integrity sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==
+ dependencies:
+ "@babel/code-frame" "^7.26.2"
+ "@babel/parser" "^7.26.9"
+ "@babel/types" "^7.26.9"
+
"@babel/traverse@^7.13.0", "@babel/traverse@^7.20.5", "@babel/traverse@^7.21.5", "@babel/traverse@^7.7.2":
version "7.23.2"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8"
@@ -1077,6 +1104,14 @@
"@babel/helper-validator-identifier" "^7.22.20"
to-fast-properties "^2.0.0"
+"@babel/types@^7.26.10", "@babel/types@^7.26.9":
+ version "7.26.10"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.10.tgz#396382f6335bd4feb65741eacfc808218f859259"
+ integrity sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==
+ dependencies:
+ "@babel/helper-string-parser" "^7.25.9"
+ "@babel/helper-validator-identifier" "^7.25.9"
+
"@bcoe/v8-coverage@^0.2.3":
version "0.2.3"
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
@@ -7766,16 +7801,16 @@ regenerate@^1.4.2:
resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a"
integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==
-regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.4:
- version "0.13.11"
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9"
- integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
-
regenerator-runtime@^0.13.9:
version "0.13.9"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
+regenerator-runtime@^0.14.0:
+ version "0.14.1"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f"
+ integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
+
regenerator-transform@^0.15.1:
version "0.15.1"
resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56"
@@ -8909,10 +8944,10 @@ tr46@^2.1.0:
dependencies:
punycode "^2.1.1"
-trix@^2.1.12:
- version "2.1.12"
- resolved "https://registry.yarnpkg.com/trix/-/trix-2.1.12.tgz#102306c3a90afcc5b66815ce8d631ee43048a477"
- integrity sha512-0hQvJdy257XuzRdCzSQ/QvcqyTp+8ixMxVLWxSbWvEzD2kgKFlcrMjgWZbtVkJENaod+jm2sBTOWAZVNWK+DMA==
+trix@^2.1.13:
+ version "2.1.13"
+ resolved "https://registry.yarnpkg.com/trix/-/trix-2.1.13.tgz#499a5f243eb05d44c92f00ee8fdda71f2ec9fad1"
+ integrity sha512-LTwj6HPo/CDL6KSclIwn41J+EwcqXHiUE43BBbg8Q/whaZcoUaODypHYoGIDd3M32KVXw98M5vC6zNCod9KB2w==
dependencies:
dompurify "^3.2.3"